CSC's Home

一個試試看的地方

0%

Dart的各種使用習慣

變數命名方式

在多人方案中,每個人的使用習慣不同,若是每個人都按照自己的習慣命名變數,則程式會變得很亂,而這時候有許多的命名變數的方式可供選擇。

但是為什麼有變數命名方式呢?

  1. 強調可讀性 (readability):可以顧名思義,讓名稱代表意圖 — — 使之名符其實,如果一個名稱還需要註解的輔助,那麼這個名稱就不具備展現意圖的能力。
  2. 強調一致性 (consistency):採用一致的命名方式、一致的轉換規則,例如RESTful API的Resource命名是否有對應後端MVC的Controller命名。
  3. 必須考慮視野 (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
    6
    Text(
    'Hello, $_name! How are you?',
    textAlign: TextAlign.center,
    overflow: TextOverflow.ellipsis,
    style: TextStyle(fontWeight: FontWeight.bold),
    )
  • bad
    1
    2
    3
    4
    5
    6
    7
    Text
    (
    'Hello, $_name! How are you?',
    textAlign: TextAlign.center,
    overflow: TextOverflow.ellipsis,
    style: TextStyle(fontWeight: FontWeight.bold),
    )

    結論

  1. 我們開發APP應照著Dart的使用習慣走,這樣往後其他人看到我們的程式碼的時候才有跡可循
  2. 雖然這是一件麻煩的事情,不過我們的APP開發才剛開始,所以趁早建立習慣,才不會造成更多的麻煩