この本の何が良いのか
Java や C++ の知識は必要ない、何がわかり易いコードなのかがわかってくる。
例題は殆どが具体的でわかり易い。
是非買って読みましょう!
どこで買ったのか
https://www.oreilly.co.jp/books/9784873115658/
オライリー公式ストア、電子版 PDF 2112 円
kindle にはない。
なぜ読み始めたか
カエデ 「よし、これで実装できたぞ! しっかりと要件は満たしてるし、Pull Request 提出っと!」
レビュワー「ここの変数名、何でこれにしたんですか?気持ち悪いって思わない? こういうのやめてほしいんですよね、レビューにコスト、人件費が余分にかかってる認識を持ってください」
と、変数の命名で厳しい指摘を受けたため。
以下にフロントエンドのジュニアエンジニアな私が書いてあって理解できたことをまとめた。
U01 理解しやすいコード
1.1
{ flag ? x + x : x * x }
このような三項演算子よりも
if (flag) {
return x + x
} else {
return x * x
}
このような if 文のネストの方が見やすいと書いてある
1.2
基本的な考え方として、
コードは他の人が最短時間で理解できるように書かなければいけない。
という基本定理があるらしい。
自分が最短時間で理解できるコードでもダメで
他人が時間をかければ理解できるコードでもダメ
だと解釈する。
また、6ヶ月後には自分のコードでも他の人のコードに見えることがあるという。
U02 名前に情報を詰め込む
2.1
GetPage をやめて FetchPage か DownlaodPage にするべき
Class のなかの Size() は何のサイズかわからないので
Height(), MemoryBytes() などにするべき
Stop よりも
取り消しできない場合は Kill で
再開できる場合は Pause にする
send よりも dispatch や route
make よりも create や generate や add
などと明確な関数名を使うべき。
2.2
中間的な役割で、すぐに破棄されるにしても
returnValue += [i] * v [i]
だったら
sum_squares += [i] * v [i]
にしたほうが違う動作を間違えて書いてある時にデバックしやすい。
temp = user.name
temp += user.phone_number
temp += user.email
だったら temp は user_info にするべき。
2.3
デバック情報を印字してサーバーを動かす --run_locally のオプションは
--extra_logging にするべき
2.4
start が ミリ秒であれば start_ms
delay が 秒であれば delay_secs
size が メガバイトであれば size_mb
のように、単位があれば単位も追加すべきだし
エスケープ前のコメントは unescaped_comment
暗号化前のパスワードは plaintext_password
utf8 に変えた html は html_utf8
のように、重要な情報があるデータはその補足を変数名に入れるべき。
2.5
めちゃくちゃ長い名前を安直につけてはいけない
スコープ、その関数の行数が短ければ短めの名前でいい
しかし、スコープがとても長かったりグローバルだったら長くても一目瞭然名前にするべき。
無意味な動詞をつけてはいけない
ConvertToString は ToString
DoServerLoop は ServerLoop
にするべき。
2.6
C++ の場合だと
クラス名は CamelCase
クラスのメンバ変数(プロパティ)は member_
変数名は lower_separated
定数名は kConstantName
というように、物によってフォーマットを変える方針もある。
2.7
とにかく変数名を見ただけで情報がわかるようにコードを書こう!
3章の誤解されない関数名編にに続く!
Top comments (0)