リーダブルコード 1 - 2章 理解し易いコードの基本定理と変数名の決め方

3899 ワード

この本の何が良いのか


ジャバや C++の知識は必要ない、何がわかり易いコードなのかがわかってくる.
例題は殆どが具体的でわかり易い.
是非買って読みましょう!

どこで買ったのか


https://www.oreilly.co.jp/books/9784873115658/
オライリー公式ストア、電子版 PDF 2112円
キンドルにはない.

なぜ読み始めたか


カエデ 集約よし、これで実装できたぞ! しっかりと要件は満たしてるし、プルリクエスト提出っと!」
レビュワー集約ここの変数名、何でこれにしたんですか?気持ち悪いって思わない? こういうのやめてほしいんですよね、レビューにコスト、人件費が余分にかかってる認識を持ってください」
と、変数の命名で厳しい指摘を受けたため.
以下にフロントエンドのジュニアエンジニアな私が書いてあって理解できたことをまとめた.

U 01理解しやすいコード


1.1


{ flag ? x + x : x * x }
このような三項演算子よりも
if (flag) {
  return x + x
} else {
  return x * x
}
このような if 文のネストの方が見やすいと書いてある

1.2


基本的な考え方として、

コードは他の人が最短時間で理解できるように書かなければいけない。


という基本定理があるらしい.
自分が最短時間で理解できるコードでもダメで
他人が時間をかければ理解できるコードでもダメ
だと解釈する.
また、6ヶ月後には自分のコードでも他の人のコードに見えることがあるという.

U 02名前に情報を詰め込む


2.1


ページをやめて fetchpageか ダウンロードにするべき
クラスのなかの size ()は何のサイズかわからないので
heend () , memybytes ()などにするべき
ストップよりも
取り消しできない場合は 殺すで
再開できる場合は ポーズにする
送付するよりも 派遣する や ルート
メイクよりも クリエイトや 生成するや 追加
などと明確な関数名を使うべき.

2.2


中間的な役割で、すぐに破棄されるにしても
returnValue += [i] * v [i]
だったら
sum_squares += [i] * v [i]
にしたほうが違う動作を間違えて書いてある時にデバックしやすい.
temp = user.name
temp += user.phone_number
temp += user.email
だったら 短所は ユーザ情報にするべき.

2.3


デバック情報を印字してサーバーを動かす --ローカルランニングのオプションは
−−にするべき

2.4


スタートが ミリ秒であれば 驚くべきMS
遅延が 秒であれば デラヤン
サイズが メガバイトであれば シゼナムMB
のように、単位があれば単位も追加すべきだし
エスケープ前のコメントは UnescapedCountコメント
暗号化前のパスワードは プレーンテキストパスワード
UTF 8に変えた HTMLは HTMLRAGE utf 8
のように、重要な情報があるデータはその補足を変数名に入れるべき.

2.5


めちゃくちゃ長い名前を安直につけてはいけない
スコープ、その関数の行数が短ければ短めの名前でいい
しかし、スコープがとても長かったりグローバルだったら長くても一目瞭然名前にするべき.
無意味な動詞をつけてはいけない
コントローラーは トウストリング
doserverloopは サーバーループ
にするべき.

2.6


C++の場合だと
クラス名は キャメルケース
クラスのメンバ変数(プロパティ)は メンバー
変数名は 分離
定数名は コンスタンティン
というように、物によってフォーマットを変える方針もある.

2.7 .


とにかく変数名を見ただけで情報がわかるようにコードを書こう!
3章の誤解されない関数名編にに続く!