變數命名方式
在多人方案中,每個人的使用習慣不同,若是每個人都按照自己的習慣命名變數,則程式會變得很亂,而這時候有許多的命名變數的方式可供選擇。
但是為什麼有變數命名方式呢?
- 強調可讀性 (readability):可以顧名思義,讓名稱代表意圖 — — 使之名符其實,如果一個名稱還需要註解的輔助,那麼這個名稱就不具備展現意圖的能力。
- 強調一致性 (consistency):採用一致的命名方式、一致的轉換規則,例如RESTful API的Resource命名是否有對應後端MVC的Controller命名。
- 必須考慮視野 (scope):調用範圍越廣,命名必須越嚴謹。調用範圍大的程式碼,必須添加有意義的上下文(context)資訊,如命名空間,亦可利用類別包裝方法與成員變數。
駝峰式大小寫(camelCase)
命名方式為單字的首字母大寫,又可以分為大駝峰(UpperCamelCase)與小駝峰(lowerCamelCase)
大駝峰(UpperCamelCase)
又稱為PascalCase
所有單字的首字母大寫
如MyApp, StatelessWidgt
C#開發者建議使用
java & Python的類(class)使用UpperCamelCase小駝峰(lowerCamelCase)
第一個字母小寫,其餘單字的第一個字母大寫
如helloWorld
java的變數及方法(method)使用lowerCamelCase
snake_case
所有單字都使用小寫,單字間以_隔開
如hello_world
C & C++的命名方式通常使用snake_case
Python除了常數與class以外的名稱使用snake_case
kebab-case
所有單字都使用小寫,單字之間以-隔開
如hello-world
URL使用kebab-case
若是全部大寫則稱為TRAIN-CASE
CAPITALIZED_WITH_UNDERSCORES
所有單字使用大寫,單字間以_隔開
如HELLO_WORLD
常用於常數的命名
還有許多其他的變數命名方式,可是並不常用,像是全部大寫的ALLCAPS,或是有些是作為特殊目的的使用,像是為了強調或是表達憤怒的stUdlYcaPs,加上前綴字的匈牙利命名法(HungarianNotation),在此不多贅述。
有興趣的人可以參考維基https://en.wikipedia.org/wiki/Letter_case#Special_case_styles
Dart語言使用習慣
lowerCamelCase
變數
常數UpperCamelCase
所有的類(class)
函式snake_case
檔案名稱,如main.dart,page_announcement.dart
函式庫名稱其他使用習慣
不要使用前綴字(匈牙利命名法)
若是有超過兩位的縮寫字,第二個字僅開頭大寫
如HTTPSFTP,我們不知道是HTTP SFTP還是HTTPS FTP
這時候請使用HTTPSftp以表示HTTP SFTP
import使用習慣
import有順序要求,且每”部分”間空行分隔開,每部分內按字母排序,按如下順序排序
dart sdk內的函式庫
flutter內的函式庫
第三方函式庫
自己的函式庫
相對路徑引用
括號使用習慣
請不要括號下放
- good
1
2
3
4
5
6Text(
'Hello, $_name! How are you?',
textAlign: TextAlign.center,
overflow: TextOverflow.ellipsis,
style: TextStyle(fontWeight: FontWeight.bold),
) - bad
1
2
3
4
5
6
7Text
(
'Hello, $_name! How are you?',
textAlign: TextAlign.center,
overflow: TextOverflow.ellipsis,
style: TextStyle(fontWeight: FontWeight.bold),
)結論
- 我們開發APP應照著Dart的使用習慣走,這樣往後其他人看到我們的程式碼的時候才有跡可循
- 雖然這是一件麻煩的事情,不過我們的APP開發才剛開始,所以趁早建立習慣,才不會造成更多的麻煩