Flutter編程規(guī)范

Error Rules

在引用其他模塊的頭文件時,應該通過‘package:xxx’來引用(always_use_package_imports)

避免通過使用**lib/中的**相對路徑來引用其他模塊的文件.

避免直接使用一個dynamic類型的對象(avoid_dynamic_calls (experimental))

不應該直接使用一個dynamic對象类溢,包括直接獲取一個dynamic對象的屬性,或者直接對于一個dynamic對象調用方法琳要,而是應該將他轉換為一個特定的類型,再繼續(xù)使用.

避免在ifelse中的else語句為空(avoid_empty_else)

避免else的語句為空.

在線上代碼中應該避免使用print(avoid_print)

應該在正式環(huán)境的代碼中去掉對print方法的調用.

避免使用相對路徑引用(avoid_relative_lib_import)

避免在lib中使用相對路徑的引用秤茅,而使用package.

在返回類型為future的方法中稚补,避免返回null(avoid_returning_null_for_future)

在需要返回Future的方法中,不應該返回null框喳。

避免使用慢速的異步io方法(avoid_slow_async_io)

避免使用 **dart:io** 中的異步慢速io方法课幕,而使用他們對應的同步io方法.

t)方法(avoid_type_to_string)

避免在線上代碼中使用toString()方法,而應該使用自定義的方法,來實現(xiàn)將類中數(shù)據(jù)轉換成字符串.

避免參數(shù)的名稱和類型的名稱重名(avoid_types_as_parameter_name)

參數(shù)的名稱不應該和任何一個已知的類重名.

不要在Flutter的web plugin外使用web庫(avoid_web_libraries_in_flutter)

不要在僅可在web中使用的庫在web插件外的地方使用.(**dart:html**, **dart:js** and **dart:js_util**

在使用stream時五垮,使用完一定要對stream調用cancel方法(cancel_subscriptions)

要對StreamSubscription使用cancel方法乍惊,防止內存泄漏.

在使用sink時,使用完一定要調用close方法(close_sinks)

要對**dart.core.Sink 使用close方法放仗,以防止內存泄漏**.

阻止控制流進入finally語句中(control_flow_in_finally

組織控制流進入finally語句中润绎,這樣會導致很難調試.

diagnostic應該覆蓋所有的屬性(diagnostic_describe_all_properties)

應該覆蓋所有的公共屬性在debug的方法中以便更好的進行調試.

不要寫空語句(empty_statements)

空語句和誤用分號很類似.

hash和==應該同時被覆蓋或者改寫(hash_and_equals)

永遠同時覆蓋 **hashCode** 如果覆蓋 **==**.

不要在條件判斷中賦值或者對同一個條件判斷兩次(invariant_booleans (experimental))

條件判斷語句中不應該永遠是true或者false.

在迭代中不要使用contains來判斷不相關的類型(iterable_contains_unrelated_type)

調用 Iterable.contains 會調用==而返回false.

在list中不要刪除不相關的類型(list_remove_unrelated_type)

在list中刪除不相關的類型會返回false,而這往往是開發(fā)者所未預料到的.

在判斷語句中只進行真假的判斷(literal_only_boolean_expressions)

判斷語句中只進行真假的判斷,而不要進行賦值等各種其他操作.

不要在list中連接字符串(no_adjacent_strings_in_list)

這個很有可能意味著忘記了使用逗號來分隔list中的元素.

不要再case中有重復的值(no_duplicate_case_value)

在switch-case語句中莉撇,case中的值不應該有重復的.

在creatState方法中不應該有任何邏輯(no_logic_in_create_state)

createState方法中只應該有創(chuàng)建state的方法調用呢蛤,而不應該有其他的任何邏輯.

引用同一模塊的頭文件時,使用相對路徑(prefer_relative_imports)

在引用同一模塊下的其他 **lib/下的文件的頭文件時稼钩,使用相對路徑**.

在void可以使用的時候顾稀,不要使用NULL(prefer_void_to_null)

不要使用Null類型,除非你確認你不希望使用void .

在復寫==方法時,一定要判斷傳入的參數(shù)的類型(test_types_in_equals)

復寫類的==方法時坝撑,一定要判斷入?yún)⒌念愋停苑乐箓魅雗ull等.

在finally中不應該拋出error(throw_in_finally)

避免在finally中使用throw粮揉,這會導致代碼的調試困難.

無用的代碼應該及時刪除(unnecessary_statements)

避免使用無意義的diamanté和避免使用無用的語句在代碼中巡李,并且應該及時刪除.

不要使用==來比較兩個無關的類(unrelated_type_equality_checks)

==來比較無關的兩個類,有可能導致返回false扶认,但是沒法達到開發(fā)者的目的.

在同步方法中使用BuildContexts(use_build_context_synchronously (experimental))

如果在異步方法中使用 BuildContexts侨拦,可能會導致BuildContexts雖然已經被銷毀,仍然被使用的情況.

在組件的初始化方法中一定要使用key(use_key_in_widget_constructors)

在組件的初始化方法中一定要使用key辐宾,并調用super將key傳入super的初始化方法.

正則表達式應該是有效的(valid_regexp

正則表達式的書寫應該是有效的狱从,否則在運行時會報錯.

comment_references

Only reference in scope identifiers in doc comments.

unsafe_html

Avoid unsafe HTML APIs.

Style Rules

總是標明方法的返回類型(always_declare_return_types)

聲明方法的返回類型.

控制語句的控制體總是新起一行(always_put_control_body_on_new_line)

在控制語句中,每一個控制體總是新起一行來實現(xiàn).

將必傳命名參數(shù)放在參數(shù)列表的第一位(always_put_required_named_parameters_first)

將必傳命名參數(shù)放在第一位.

總是指定參數(shù)的類型(always_specify_types)

使用變量和參數(shù)時叠纹,總是明確的指定參數(shù)的類型.

使用override注解來覆蓋父類的方法和參數(shù)(annotate_override)

使用override以防止參數(shù)被意外的覆蓋.

在非必要的情況下避免使用dynamic作為返回值或者函數(shù)的參數(shù)(avoid_annotating_with_dynamic)

在非必要的情況下季研,不使用dynamic作為返回值或者函數(shù)參數(shù)的類型,可以直接省略類型.

在條件表達式中避免使用bool字面值(avoid_bool_literals_in_conditional_expressions)

在條件表達式中誉察,避免直接使用true和false.

不要在catch中不指定exception的類型(avoid_catches_without_on_clauses)

以防止捕捉到其他非意料到的異常而未做正確處理.

不要顯式的捕捉error(avoid_catching_errors)

Error和Exception不同与涡,不應該主動的捕捉.Error可以在運行前提前檢查并解決掉。

不要定義只有靜態(tài)變量和靜態(tài)方法的類(avoid_classes_with_only_static_members)

靜態(tài)變量可以以常量來替代持偏,靜態(tài)方法可以以全局函數(shù)來替代.

不要檢查類型是int或者double驼卖,應該檢查num(void_double_and_int_checks)

編譯成js的時候都會變成float類型.

不要對未標記為@immutable的類覆蓋==和hashcode方法(avoid_equals_and_hash_code_on_mutable_classes)

這個操作可能引發(fā)未可知的問題.

通過雙引號來消除字符串中的轉義字符(avoid_escaping_inner_quotes)

雙引號來引用字符串,可以不需要對字符進行轉義.

在常量類中避免進行初始化(avoid_field_initializers_in_const_classes)

而直接通過get方法獲取常量屬性.

不要使用foreach來進行遍歷(avoid_function_literals_in_foreach_calls)

在Dart中鸿秆,如果要迭代序列酌畜,那么慣用的方法就是使用循環(huán).

不要使用implement來實現(xiàn)一個覆蓋了==方法的父類(avoid_implementing_value_types)

這樣在子類中,父類的==實現(xiàn)并不會被繼承.

不要顯式的初始化一個變量為null(avoid_init_to_null)

可以不初始化它.

避免使用難以被轉換為js的int數(shù)字(avoid_js_rounded_ints)

在編譯成js的時候int和double會被轉換為js中的number類型.

不要在一行中聲明多個變量(avoid_multiple_declarations_per_line)

每一個變量應該單獨一行來聲明.

不要在自定義的==中判斷是否等于null(avoid_null_checks_in_equality_operators)

只要判斷類型是否相同卿叽,就能確定他是否是null了.

不要使用位置布爾參數(shù)(avoid_positional_boolean_parameters)

要是用命名布爾參數(shù)桥胞,否則很難辨認布爾參數(shù)的含義.

不要使用私有的typedef函數(shù)定義(avoid_private_typedef_functions)

只使用一次的 typedef 函數(shù)定義,可以直接使用內聯(lián)函數(shù).

不要重復設置參數(shù)的值(avoid_redundant_argument_values)

對于已經有默認值的函數(shù)可選參數(shù)附帽,使用時不應該再重復設置和他默認值相同的值.

不要重命名覆蓋函數(shù)的參數(shù)變量的名稱(avoid_renaming_method_parameters)

應該變量的名稱保持一致.

不要設置setters方法的返回值(avoid_return_types_on_setters)

因為setter方法不應該有返回值.

在返回類型為bool埠戳、double、int蕉扮、num的函數(shù)中整胃,不應該返回null(avoid_returning_null)

應該返回一個默認值當前類型值.

在無返回值的void函數(shù)中,不應該返回null(void_returning_null_for_void)

應該直接使用retrun即可.

避免在流式接口中返回this(avoid_returning_this)

直接使用..來實現(xiàn)流式接口.

不要只實現(xiàn)setters而不實現(xiàn)getters(avoid_setters_without_getters)

這樣容易出現(xiàn)錯誤.

不要不使用類型參數(shù)的類型(avoid_shadowing_type_parameters)

在類中定義了類型參數(shù)喳钟,就應該在類中的方法中使用屁使,而不應該使用其他類型參數(shù).

avoid_single_cascade_in_expression_statements

Avoid single cascade in expression statements.

avoid_types_on_closure_parameter

Avoid annotating types for function expression parameters.

不要使用沒有必要的containers(avoid_unnecessary_containers)

沒有其他參數(shù)的containers沒有任何作用在岂,反而增加widget的層級.

不要在初始化方法中使用沒必要的參數(shù)(avoid_unused_constructor_parameters)

初始化方法中的所有參數(shù),都應該有用處蛮寂,并被使用.

異步方法async應該有Future的返回類型(avoid_void_async)

異步方法不應該返回void類型蔽午,而是應該返回Future類型.

await方法只應該用在future上(await_only_future)

可以使用await在**Future<X>**, **FutureOr<X>**, **Future<X>?**, **FutureOr<X>?** and **dynamic或者null上**

對于extension應該使用駝峰命名(camel_case_extension)

使用駝峰命名規(guī)則來命名extension.

類名和typedef應該使用駝峰命名法(camel_case_types)

應該使用首字母大寫的駝峰命名法而且不要有下劃線.

當對同一個對象連續(xù)調用方法時,使用層疊樣式(cascade_invocations)

使用..語法酬蹋,對同一個對象連續(xù)調用方法.

不要將一個nullable對象強制轉換為一個非空對象(cast_nullable_to_non_nullable (experimental))

轉換后可能會導致不會做非空判斷.

常量名稱使用小寫字母開頭的駝峰命名(constant_identifier_names)

命名使用小寫字母開頭的駝峰命名.

總是在控制流中使用大括號來括住控制語句(curly_braces_in_flow_control_structures)

使用大括號來括住控制語句可以保證不出現(xiàn)懸垂語句.

類中的deprecated應該保持一致(deprecated_consistency)

類如果廢棄他的初始化方法應該標識為廢棄及老,屬性廢棄則初始化方法中對于此屬性的引用應該廢棄.

對于dart:的引用應該在其他引用之前(directives_ordering)

對于頭文件的引用應該首先寫dart庫中的頭文件.

不要使用空的catches block(empty_catches)

如果想要忽略它,應該異常的參數(shù)使用_來表示.如果是故意制造的異常范抓,應該寫注釋骄恶。

不要使用大括號來括住空的初始化方法(empty_constructor_bodies)

要是用分號 **;** 而不是大括號 **{}來表示空的初始化方法體**.

switch-case中應該列出case的所有可能(exhaustive_cases)

應該分別列出case中的所有能,并針對性的做處理.

文件名稱應該以小寫字母加下劃線的規(guī)則來命名(file_names)

**代碼文件的名稱應該遵循lowercase_with_underscores**.

不要引用其他package的lib/src文件夾下的文件(implementation_imports)

只應該引用lib文件夾下的文件匕垫,src是package的具體實現(xiàn)僧鲁,可能隨時被修改.

庫的名稱應該使用小寫字母加下劃線(library_names)

庫的命名規(guī)則應該遵循 **lowercase_with_underscores**.

引用庫的前綴應該遵循小寫字母沒有下劃線格式(library_prefixes)

使用 **lowercase_with_underscores** 規(guī)則import ‘dart:,math‘ as math.

不要在庫的公開的API中使用私有類型(library_private_types_in_public_api)

避免在對外開放的API中使用似有類型.

非常量屬性應該使用小寫字母命名規(guī)范(non_constant_identifier_names)

非常量屬性命名遵循 lowerCamelCase規(guī)范.

不要對一個可能為空的參數(shù)上使用是否為空的判斷(null_check_on_nullable_type_parameter (experimental))

這種很容易出現(xiàn)錯誤不要使用T!而是使用T as W.

不要將null作為一個匿名函數(shù)傳遞給參數(shù)(null_closure)

當需要一個內明函數(shù)作為參數(shù)的時候不要直接傳null .

不要設置局部變量的類型(omit_local_variable_types)

局部變量一般很容易從上下文中判斷出他的類型.

不要定義只有一個成員的類(one_member_abstracts)

如果一個簡單的函數(shù)定義可以替代就不要重新定義一個類.

只拋出error或者exception類型的異常(only_throw_errors)

只拋出 Exception 或者 Error或者他們子類的異常.

不要覆蓋父類的屬性(overridden_fields)

通常覆蓋父類的屬性都是錯誤的.

應該給package中的公共類提供文檔(package_api_docs)

給公開的API提供文檔注釋.

應該給package中的類名添加前綴(package_prefixed_library_names)

添加包名.路徑名.

不要給方法中的參數(shù)重新賦值(parameter_assignments)

這種做法很容易造成錯誤象泵,除非你使用 寞秃??=.

使用相鄰字符串來連接字符串(prefer_adjacent_string_concatenation)

定義的相鄰字符串會自動連接而不是用+.

初始化函數(shù)中在初始化列表中使用assert(prefer_asserts_in_initializer_lists)

而不是在初始化函數(shù)的函數(shù)體中做assert.

在assert中需要加一個提示信息(prefer_asserts_with_messag)

assert命中的時候并不是總是知道是什么原因造成的.

使用集合字面量(prefer_collection_literals)

使用[],{},使用[]或者{}偶惠,但是LinkedHashSet和LinkedHashMap除外.

使用??=來代替判空(prefer_conditional_assignmen)

如果只是針對簡單的判空賦值春寿,直接使用??=.

使用const來修飾具有const初始化方法產生的對象(prefer_const_constructors)

盡量使用const來修飾.

對于不可變的類,需要使用const來修飾初始化方法(prefer_const_constructors_in_immutables)

對于聲明為 **@immutable** 類的初始化方法需要設置為const.

對于常量聲明使用const來修飾(prefer_const_declaration)

推薦使用const 而不是final 來修飾常量的聲明.

在不可變類中的初始化參數(shù)設置為const(prefer_const_literals_to_create_immutables)

使用const 作為 @immutable 類的初始化參數(shù).

使用初始化方法而不使用靜態(tài)方法來創(chuàng)建類對象(prefer_constructors_over_static_methods)

使用初始化方法來創(chuàng)建類對象.

不要使用indexof來查看是否包含(prefer_contains)

使用contains來看**List****String** 是否包含某個對象

使用=將命名參數(shù)和他的默認值分開(prefer_equal_for_default_values)

使用 **=** 而不是:.

使用=>來表示簡單的表達是函數(shù)體(prefer_expression_function_bodies)

使用 => 來作為一個簡單的返回函數(shù)的函數(shù)體.

不修改的私有變量設置為final(prefer_final_field)

有利于編譯器優(yōu)化.

在foreach中的變量設置為final(prefer_final_in_for_each)

如果在循環(huán)體中不修改它.

盡量使用final來設置變量(prefer_final_locals)

如果不會被重新賦值洲鸠,使用final.

在函數(shù)的參數(shù)變量中使用final(prefer_final_parameters)

只要函數(shù)中的參數(shù)不會在函數(shù)體中被修改.

通過遍歷來創(chuàng)建map時最好使用for(prefer_for_elements_to_map_fromIterable)

使用for循環(huán)來進行遍歷.

如果你準備對循環(huán)的每個變量使用某一個方法使用foreach(prefer_foreach)

使用 **forEach** 來對所有的元素使用方法.

使用函數(shù)聲明將函數(shù)綁定到名稱(prefer_function_declarations_over_variables)

而不是使用變量來賦值.

使用=號來作為函數(shù)的別名(prefer_generic_function_type_aliases)

而不是用直接命名.

在build方法中盡量使用ifelse而不使用三目運算符(prefer_if_elements_to_conditional_expressions)

盡量使用ifelse.

使用??來作為判空進行賦值操作(prefer_if_null_operators)

而不是使用if來進行判空操作.

盡可能使用初始化來給類屬性賦值(prefer_initializing_formals)

使用初始化形式可以使得你的代碼更加簡潔.

在初始化的時候設置元素而不是用add(prefer_inlined_adds)

盡可能在初始化的時候設置所有元素.

盡量使用整數(shù)賦值而不要使用對應的double數(shù)字賦值(prefer_int_literals)

如果整數(shù)能滿足需求就不要用double數(shù)字來賦值.

使用變量來組合字符串而不是+(prefer_interpolation_to_compose_strings)

直接在字符串中加入變量.

使用方法isempty而不是查詢它的長度(prefer_is_empty)

對于集合來說使用isempty來判斷是否無元素.

使用方法isnotempty而不是isempty取反(prefer_is_not_empty)

對于集合使用 **isNotEmpty** .

使用is堂淡!而不是反is(prefer_is_not_operator)

使用 is! 操作符.

使用whereType按照類型過濾集合(prefer_iterable_whereType)

而不是使用where然后在遍歷的過程中對類型做檢查.

使用mixin來混入(prefer_mixin)

使用 mixins.

在對一個對象使用方法之前使用?判斷對象是否為空(prefer_null_aware_method_calls)

使用?.來調用方法扒腕,而不是if.

使用?.來判空(prefer_null_aware_operators)

使用?.來調用方法绢淀,而不是if.

使用擴展運算符...來擴展集合(prefer_spread_collections)

盡量使用...來將一個集合合并入另一個集合.

未在定義的時候初始化的變量應該指明類型(prefer_typing_uninitialized_variables)

否則很容易出現(xiàn)錯誤.

在deprecation中寫明信息(provide_deprecation_message)

通過 @Deprecated("message")來說明過期的信息.

對所有的公共的api變量輸出文檔(public_member_api_docs)

說明所有的公共變量.

不要創(chuàng)建遞歸的getter(recursive_getters)

這通常說明是寫錯了.

使用sizedbox來替換container來作為空白區(qū)域(sized_box_for_whitespace)

SizedBox 比container更加輕量級.

使用///來作為注釋(slash_for_doc_comments)

使用 /// 作為文檔注釋.

在widget創(chuàng)建過程中將child屬性放在最后(sort_child_properties_last)

在widget的創(chuàng)建過程中child的屬性的賦值放在最后.

類中的構造方法放在第一位(sort_constructors_first)

構造方法放在其他屬性之前.

未命名的構造方法放在第一位(sort_unnamed_constructors_first)

先是未命名的然后是命名的.

在公共的API中指定參數(shù)的類型(type_annotate_public_apis)

指定參數(shù)的類型.

初始化參數(shù)如果是類中的屬性不需要指定類型(type_init_formals)

不要設置構造方法中的初始化屬性的類型.

在異步方法中的Future應該使用awaited或者標記為unawaited(unawaited_future)

否則很容易出現(xiàn)異步的錯誤.

不要返回一個awaited的表達式(unnecessary_await_in_return)

在返回表達式中不要使用awaited關鍵字.

不要在字符串中使用不必要的大括號(unnecessary_brace_in_string_interps)

有的字符串組合沒必要用大括號.

不要使用沒必要的const(unnecessary_const)

避免在一個 const上下文中重復使用 const.

對于局部變量不要使用final(unnecessary_final)

使用var更短,而且也沒有改變意思.

不使用沒必要的getter和setter(unnecessary_getters_setter)

沒必要為了安全而使用getter和setter.

當可以使用閉包是瘾腰,不要使用匿名函數(shù)(unnecessary_lambdas)

閉包可以直接調用皆的,而不需要使用復雜的匿名函數(shù).

不使用沒必要的new(unnecessary_new)

創(chuàng)建實例不需要使用new.

不要使用沒必要的null檢測(unnecessary_null_checks (experimental))

如果可以接受非空的參數(shù).

. 如果可以接受空參數(shù),

對于初始化未非空的final變量不要定義為可空類型(unnecessary_nullable_for_final_variable_declarations (experimental))

肯定會是一個非空類型.

不要使用沒必要的overrides(unnecessary_overrides)

不要在一個只調用super方法中的override中使用overrides.

不要使用沒必要的小括號(unnecessary_parenthesis)

沒必要的小括號要被移除.

不使用沒必要的raw字符串(unnecessary_raw_strings)

沒必要的raw字符串應該不使用.

不要使用沒必要的轉義符(unnecessary_string_escape)

刪除沒必要的轉義字符.

不要使用沒必要的this(unnecessary_this)

除非是為了防止被覆蓋.

使用8位16進制表示顏色(use_full_hex_values_for_flutter_colors)

使用8位16進制數(shù)表示顏色(0xFFFFFFFF) .

使用??來將null轉換為布爾值(use_if_null_to_convert_nulls_to_bools)

使用??true 或者false.

使用isEven或者isodd來判斷奇偶(use_is_even_rather_than_modulo)

而不是判斷% 2的結果.

使用late來定義非空的私有變量(use_late_for_private_fields_and_variables (experimental))

如果沒有被初始化.

使用系統(tǒng)已經定義好的常量值(use_named_constants)

而不是自己設置一個值.

使用raw string來避免使用轉義符(use_raw_strings)

如果字符串需要轉義使用r'fsf / $'.

使用rethrow再次拋出異常(use_rethrow_when_possible)

當在捕獲異常中有遇到異常使用rethrow.

使用setter點方法修改屬性而不是直接調用方法(use_setters_to_change_properties)

使用rect.width = 3 而不是rect.setWidth(3).

使用stringbuffer來組合字符串(use_string_buffers)

string buffers 更加高效.

use_test_throws_matchers

Use throwsA matcher instead of fail().

use_to_and_as_if_applicable

Start the name of the method with to/_to or as/_as if applicable.

always_require_non_null_named_parameters

Specify **@required** on named parameters without defaults.

avoid_as (deprecated)

Avoid using **as**.

不要使用fromEnvironment和hasEnvironment(do_not_use_environment)

可能容易引起誤解.

不要給void類型的變量賦值(void_checks)

不要給void類型的變量賦值.

應該遵循flutter的todo樣式(flutter_style_todos)

Use Flutter TODO format: // TODO(username): message, https://URL-to-issue.

盡量將返回語句和賦值語句合并返回成一個語句返回(join_return_with_assignment)

返回語句和賦值語句合并成一個語句一起返回.

多行字符串應該新起一行(leading_newlines_in_multiline_strings)

比較易讀.

在switch-case中不要使用default(no_default_cases (experimental))

每一個case都應該單獨處理.

每行不超過80個字符(lines_longer_than_80_chars)

避免超過 80 個字符.

在連接字符串的時候應該加入空格(missing_whitespace_between_adjacent_strings)

防止字符串連接過程中遺忘.

不要在toString方法使用runtimeType方法(no_runtimeType_toString)

因為 runtimeType比較耗費時間蹋盆,除非你不在乎時間和效率.

內置類型是冪等的有些操作是多余的(noop_primitive_operations)

刪除相關的冪等操作.

prefer_bool_in_asserts (deprecated)

Prefer using a boolean as the assert condition.

推薦使用雙引號來修飾字符串(prefer_double_quotes)

Prefer double quotes where they won't require escape sequences.

prefer_single_quotes

Only use double quotes for strings containing single quotes.

require_trailing_commas (experimental)

Use trailing commas for all function calls and declarations.

super_goes_last (deprecated)

Place the **super** call last in a constructor initialization list.

tighten_type_of_initializing_formals

Tighten type of initializing formal.

unnecessary_null_aware_assignments

Avoid null in null-aware assignment.

unnecessary_null_in_if_null_operators

Avoid using **null** in **if null** operators.

use_function_type_syntax_for_parameters

Use generic function type syntax for parameters.

unnecessary_string_interpolations

Unnecessary string interpolation.

Pub Rules

依賴的庫應該在dependcies中指定版本號(depend_on_referenced_packages)

以防止大版本號的遷移導致出現(xiàn)問題.

給package命名應該使用小寫加下劃線(package_names)

package的名稱應該遵循 **lowercase_with_underscores** .

sort_pub_dependencies

Sort pub dependencies.

?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末费薄,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子栖雾,更是在濱河造成了極大的恐慌楞抡,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,755評論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件析藕,死亡現(xiàn)場離奇詭異召廷,居然都是意外死亡,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,305評論 3 395
  • 文/潘曉璐 我一進店門竞慢,熙熙樓的掌柜王于貴愁眉苦臉地迎上來先紫,“玉大人,你說我怎么就攤上這事筹煮≌诰” “怎么了?”我有些...
    開封第一講書人閱讀 165,138評論 0 355
  • 文/不壞的土叔 我叫張陵败潦,是天一觀的道長本冲。 經常有香客問我,道長变屁,這世上最難降的妖魔是什么眼俊? 我笑而不...
    開封第一講書人閱讀 58,791評論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮粟关,結果婚禮上,老公的妹妹穿的比我還像新娘环戈。我一直安慰自己闷板,他們只是感情好,可當我...
    茶點故事閱讀 67,794評論 6 392
  • 文/花漫 我一把揭開白布院塞。 她就那樣靜靜地躺著遮晚,像睡著了一般。 火紅的嫁衣襯著肌膚如雪拦止。 梳的紋絲不亂的頭發(fā)上县遣,一...
    開封第一講書人閱讀 51,631評論 1 305
  • 那天,我揣著相機與錄音汹族,去河邊找鬼萧求。 笑死,一個胖子當著我的面吹牛顶瞒,可吹牛的內容都是我干的夸政。 我是一名探鬼主播,決...
    沈念sama閱讀 40,362評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼榴徐,長吁一口氣:“原來是場噩夢啊……” “哼守问!你這毒婦竟也來了?” 一聲冷哼從身側響起坑资,我...
    開封第一講書人閱讀 39,264評論 0 276
  • 序言:老撾萬榮一對情侶失蹤耗帕,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后袱贮,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體仿便,經...
    沈念sama閱讀 45,724評論 1 315
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 37,900評論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了探越。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片狡赐。...
    茶點故事閱讀 40,040評論 1 350
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖钦幔,靈堂內的尸體忽然破棺而出枕屉,到底是詐尸還是另有隱情,我是刑警寧澤鲤氢,帶...
    沈念sama閱讀 35,742評論 5 346
  • 正文 年R本政府宣布搀擂,位于F島的核電站,受9級特大地震影響卷玉,放射性物質發(fā)生泄漏哨颂。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,364評論 3 330
  • 文/蒙蒙 一相种、第九天 我趴在偏房一處隱蔽的房頂上張望威恼。 院中可真熱鬧,春花似錦寝并、人聲如沸箫措。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,944評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽斤蔓。三九已至,卻和暖如春镀岛,著一層夾襖步出監(jiān)牢的瞬間弦牡,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,060評論 1 270
  • 我被黑心中介騙來泰國打工漂羊, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留驾锰,地道東北人。 一個月前我還...
    沈念sama閱讀 48,247評論 3 371
  • 正文 我出身青樓拨与,卻偏偏與公主長得像稻据,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子买喧,可洞房花燭夜當晚...
    茶點故事閱讀 44,979評論 2 355

推薦閱讀更多精彩內容