リーダブルコード

発表の内容

・なぜこの本にしたか
・本の概要紹介
・感想その他

なぜこの本にしたか

・入社直前に1度読んでいた


・入社して3ヶ月ちょいたった今、さらっと読み返して何か新しい気付きや、考え方が変わった点あるか振り返る

本の概要

・理解しやすいコード

・名前に関して

・美しさ

・コメントに関して

・制御フローを読みやすく

・巨大な式を分割

・変数と読みやすさ

・一度に1つのことのみ行う

・短いコードをかく

・テストと読みやすさ

・理解しやすいコード

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

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

 

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

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

・名前に関して

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

 

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

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

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

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

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

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

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

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

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

・美しさ

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

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

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

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

・コメントに関して

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

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

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

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

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

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

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

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

・制御フローを読みやすく

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

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

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

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

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

・巨大な式を分割

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

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

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

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

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

・変数と読みやすさ

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

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

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

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

・一度に1つのことのみ行う

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

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

・短いコードをかく

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

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

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

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

・テストと読みやすさ

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

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

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

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

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

感想その他

 

・以前はピンと来なかった内容がなんとなくわかるようになった。

 例)ここまで名前にこだわる?

   制御フローを読みやすくとは?

 

・来年の2月くらいにまた読もうと思う。

ご静聴
ありがとうございました

リーダブルコード

By hayashiyoshino

リーダブルコード

  • 217