リーダブルコード

リーダブルコードを読みました!!

一通り読み終わったので、内容を自分なりにまとめてみようと思います!!

 

 

www.oreilly.co.jp

 

 

1. 理解しやすいコード

・優れたコードは理解しやすいコードです。

・コードは理解しやすく書くことを優先します。

・コードは他の人が短時間で理解できるように書きます。

・コードを短くするのは良いことですが、理解するまでにかかる時間を短くする方が大切です。

 

2. 名前に情報を詰め込む

・明確な単語を選びます。

・汎用的な名前(tmpやretvalなど)を避けます。

・抽象的な名前より具体的な名前にします。

・名前の長さに気をつけます。

(スコープが小さいなら短い名前、スコープが大きいなら長い名前)

(分かりづらい略語はNG)

・名前のフォーマットで情報が伝わるようにします。

(クラス名はキャメルケース、変数名はスネークケース)

 

 

3. 誤解されない名前

・名前が他の意味と間違えられる可能性がないか吟味します。

・限界値を表すためには名前にminやmaxをつけます。

 

 

4. 美しさ

・インデントは整えます。

・読み手が慣れているパターンと一貫性のあるレイアウトを使います。

・似ているコードは似ているように書きます。

・関連するコードはまとめてブロックにします。

 

 

5. コメントすべきことを知る

・コメントの目的は、書き手の意図を読み手に知らせることです。

・コメントすべきではない事に気をつけます。

(コードからすぐわかる事・コメントのためのコメント・名前がひどいために補足するコメント)

・コードを書いている時の自分の考えを記録します。

・定数にはその定数が何をするか、なぜその値なのかをコメントします。

・読み手の立場になって何をコメントすべきか考えます。

・ハマりそうな事はコメントに残します。

・プログラムの全体像についてもコメントします。

 

 

6. コメントは正確で簡潔に

・コメントは領域に対する情報の比率を高くします。

・コメントは簡潔にします。

・曖昧な代名詞は避けます。

・関数の動作を性格に記述します。

・入出力の説明には実例を使います。

・コードの意図を書きます。

・「名前付き引数」コメントをします。

・情報密度の高い言葉を使います。

 

 

7. 制御フローを読みやすくする

・条件式の引数の並び順は左辺(調査対象 )、右辺(比較対象)の順にします。

・if/elseブロックの並び順は、肯定形を使い、単純な条件や関心を引く条件を先に書きます。

三項演算子を使うときは、三項演算子を使う事で他の人が理解しづらくならないか気をつけます。

・do/whileループではなく、whileで書きます。

・関数からはreturnを使って早めに返り値を返します。

・ネストは深くならないようにします。

 

 

8. 巨大な式を分割する

・巨大な式は飲み込みやすい大きさに分割します。

・説明変数を使い、変数名で式を説明します。

・要約変数(その式の意味が要約された名前の変数の式)を使い、管理や把握をしやすくします。

・分かりづらい式はド・モルガンの法則を使って分かりやすく書き換えます。

・短絡評価を使用する事で分かりづらくならないよう気をつけます。

 

 

9. 変数と読みやすさ

・削除できる変数は削除します。

(役に立たない一時変数・中間結果を保持するためだけの変数・制御フロー変数)

・変数のスコープを縮めます。

・変数の変更箇所はなるべく少なくします。

 

 

10. 無関係の回問題を積極的に抽出する

・プロジェクト固有のコードから汎用コードを分離します。

 

 

11. 一度に1つのことを

・関数は1度に1つのことのみ行うべきです。

・複雑な関数があったら、関数が行なっているタスクを列挙し、タスクを異なる関数に分離します。

 

 

12. コードに想いを込める

・コードの動作を簡単な言葉で誰でもわかるよう説明出来るようにします。

(コードの動作を分かりやすく説明→その説明中のキーワードに注目→その説明に合わせコードを書く)

・ロジックを明確に説明します。

・ライブラリが何を提供してくれるかを知ります。

・使っている手法を大きな問題に適用出来るようにします。

 

 

13. 短いコードを書く

・機能を過剰に見積もらないように気をつけます。

・コードを小さく保ちます。

・未使用のコードを削除します

・既存のライブラリで解決できることは解決します。

 

 

 

14. テストと読みやすさ

・テストを読みやすくて保守しやすいものにします。

・大切でない詳細は隠し、大切な詳細は目立つようにします。

・テストが失敗したらバグの発見や習性がしやすいようなエラーメッセージを表示させます。

・テストに有効なもっとも単純な入力値を使います。

・テスト関数に説明的な名前をつけます。

 

 

感想など

まだ実務経験のない自分は、他人の汚い&分かり辛いコードで苦しんだ経験もないのですが、

リーダブルコードを読んでみて、汚い&分かり辛いコードだと一緒に開発していく人にとって凄く大変なのだと知ることができました。

今後は、いつ自分のコードをチェックされても恥ずかしくないようなコード、コミットを書いていこうと思いますw

今見返してみると、何をしたかったのか全くわからないコミットや、コメントアウトして放置されたままのコード、使われていないCSSなどが沢山あります。。。

 

また、話は変わるのですが、オライリーさんの電子書籍ePUB、mobi、PDFから形式が選べるし、何回でもダウンロードできるし、紙で買うより数百円やすいしとっても太っ腹ですね!!

自分はmobi形式をダウンロードしてkindleのアプリに突っ込んで読んでおります。

でもなぜかスマホ版のkindleにはmobiが反映されなかったので、スマホだけはPDF版を入れて読んでおります。