はじめに
この記事では、私が色々な本を読み得た「読みやすいコード」についての知見を記述しています。
備忘録のようなテンションで書いています。
ご理解ください。
*ゆっくり更新していきます
なぜ読みやすいコードを書くべきなのか
コードが読みやすくなることで、どこに何が書いてあるのかを理解し易くなる。
↓
開発者が正確にコードを理解でき、バグが生じるリスクが減少したり、開発速度が上がる。また、バグが発生した場合でも修正がし易くなる。
アーキテクチャの適用
そもそも、ViewControllerにベタ書きされているコードは行数も多く、責務分離もできておらず可読性は低いです。
そこでMVC・MVVM・VIPERなどなど数ある設計パターンを適用し、責務を分離させることでグッと可読性が向上します。(同時に効率性も向上するので、処理速度も良くなります)
分かりやすい命名
・意味不明な省略をせずに、誰もが意味や役割が簡単に理解できる名前にする
・正確且つ説明的な名前にする
・何かの動作について記述している関数であれば、どんな動作をしているのか分かる名前にする
・基本的には、クラスや変数は(形容詞) + 名詞、関数は命令形(動詞から始める)の語句を用いる
・肯定的な語句を用いる(enable, disable...)
関数
・ベタ書きをせずに、一定のまとまりを関数として切り分ける
・関数が持つ責務は1つにする
・必ず自身のインスタンス変数を使う
・コマンドとクエリを分離させる→CQS
・引数は不変にする(変更する場合は、ローカル変数に代入)
・エラーは戻り値で返さない(その場で対処する)
ネストを深くしすぎない
・早期return、早期breakを有効に活用する
・条件分岐を一箇所にまとめる(単一責任選択の原則)
・メゾットチェインを使う
・ストラテジーパターンを使う
クラス
・class単体でも動作するように設計する(インスタンス変数とそれを操作する関数を備えたクラス)
・意味がある単位ごとにclass化をする→ex) 計算アプリ: 定価class, 割引class, 割増class...
コメント
・(関数や変数に正しい命名をして)極力少ない文章で説明する
・関数は何を返すのか、何をいじるのかを説明する
・副作用を持つ関数は、その内容を説明する
・各行に書かないで、ある程度のまとまりについての説明をする
状態
・基本的には不変な値を使う
・計算ロジックはデータ保持側に持たせる
・コード外とのやりとり(データベースなどとの通信)は局所化する→Repository型
まとめ
上記の事を意識してコードを書くことで、自分も共同開発者も読み易くなり、開発効率が向上したり、バグの撲滅につながると考えています。
ぜひ、参考にしてください。