以下は書籍「Advanced Swift」のSwiftコーディング規約の部分を翻訳したものです。原文はオンラインプレビューで公開されています。
Advanced Swift - Swift Style Guide
この本を書くとき、そして私たちのプロジェクトでSwiftのコードを書くとき、以下のルールに従うようにしています。
- 可読性が最も重要です。これには簡潔性が助けになります。
- 関数には常にドキュメントとしてのコメントをつけましょう。ジェネリクスを使うものは特に。
- 型は大文字で始め(
UpperCaseLetters
)、関数と変数は小文字で始めます(lowerCaseLetters
)。 - 型推論を使いましょう。型が明らかなのに明示的に書くことは可読性を損ないます。
- 曖昧さがある場合や規約を定義する場合は型推論を使わないようにしましょう。(例えば
func
が明示的な戻り値の型を持つのはこれが理由です) - クラスにしかない機能や参照型の性質が必要でない限り構造体を使いましょう。
- クラスは継承される前提の設計でない限り
final
としましょう。 - 後置クロージャ(trailing closure)を使いましょう。直後に別の開き括弧が来る場合は例外です。
-
guard
を使って関数から早期に離脱しましょう。 - 強制アンラップや暗黙的アンラップオプショナル(implicitly unwrapped optional)の利用は避けましょう。これらはときに便利ですが、これらが頻繁に必要になる場合はたいてい他の何かが間違っていることのサインです。
- 同じコードを複数書かないようにしましょう。似たようなコードを何回か書いていることに気づいたらそれを一つの関数にまとめましょう。その関数はプロトコル拡張として実装することを検討してください。
-
map
、reduce
を積極的に使いましょう。ただし強制はせず、for
ループが適切な場合はそちらを使いましょう。高階関数を使う目的はコードの可読性を高めることです。for
ループの方がわかりやすい場面でむりやりreduce
を使うことはこの目的に反します。 - 定数を積極的に使いましょう。値を変更することがわかっている場合を除いて
let
を使いましょう。ただしコードがより分かりやすく効率よくなる場合は変数にしてください。その場合、値の変更を関数内に閉じることで予想外の副作用を防ぎましょう。 - Swiftのジェネリクスを使うと関数のシグネチャが長くなりがちです。残念ながら長い関数定義を複数行に分ける良い方法が今のところ定まっていません。サンプルコードではできる限り一貫性を持たせるようにします。
- この本の著者の半数にとってとても残念なことですが、「cuddled else」がSwiftの公式スタイルです:
} else {