#はじめに
"他人が読んでも簡単に理解できる"
そして
"後から自分が見返しても何がしたかったのかすぐに思い出すことができる"
ようなコードを書くことを心がける。
当たり前のようで、とても大事なことだが、自分はまだまだできていないと思ったので、改めて『リーダブルコード より良いコードを書くためのシンプルで実践的なテクニック』を読んでみた。(2017年のGWを使い)
この本
↓↓
https://www.oreilly.co.jp/books/9784873115658/
そこで、自分なりに思ったことをまとめておく。備忘録。
基本こそ大事でありそれを習慣にするため。(もしまたこの習慣を忘れかけてきた時に、これを見ることで記憶をフラッシュバックさせるためにも)
#リーダブルのために大事なこと
##見てすぐわかるコードへ
『コードは理解しやすくなければいけない』/『コードは他の人が最短時間で理解できるように書かなければいけない』
これ、当たり前だが、めちゃくちゃ大事。
コードを単に短くするわけではなく、理解するまでの時間を短くする。
↑
最後まで読んでも結局全てのことはここに終着した。
つまり、リーダブルコードで目指すはここ。(簡単なようで難しく奥が深い)
##変数名は慎重に決める
変数名から中身が伝わるようにする。スコープが小さいなら短くても良い。
汎用的な名前は避けて、かつ、的確な単語を使い情報を詰め込む
(キャメルケースなどフォーマットも守った上で)
ブール値の名前の決め方は、それがブール値とわかるよう is や has などの単語を使う。
(自分は時々これをできておらず、他人から見てわかりづらい名前つけてたな〜と思った)
##意味のあるコメントアウトを
コードからすぐわかることはコメントに書かない。
これもたまに守れてなかったかな〜。
もっと自分が書いたコードを客観的に見て、『コード見たらわかるわ!』ってなるコメントがあれば省いてこう。
##if/elseなども中身をわかりやすく
基本は、条件は否定形よりも肯定形を使うこと。
あとは。こういう条件やループなどの制御フローはできるだけ自然にして、読み手が立ち止まったり読み返したりしないようにする。
##シンプルな設計に
-
関数から早く返す
-
ネストを浅くする
-
ド・モルガンの法則を使う
-
説明変数/要約変数を使う
-
大きすぎるものは細かく分割
-
グローバル変数は避ける
-
メソッドをできるだけstaticに
-
汎用コードをたくさん作る
-
コードは一つずつタスクを行うように
(上記のものの詳細は実際の書籍で。このキーフレーズを見てもなんのことか思い出せなかったらもう一度この本読むためにあえてこうしとこっと。) -
頭が良いコードに気をつける
これめっちゃ納得した。現在進行形でそこのコード周りを考えている時は
すごい作りや流れを理解してるから、
数行で複雑なことをしてもわかるし実際に正しく動作するようにできているかもしれないけれど、
後から見た自分とか他の人ってこんなの見づらくしかないよなぁ〜って。
実際は期待通りの動きをしてたとしても、他の人からコードの動きが把握しにくいって状態じゃ、
後からコードを他の人が付け足したり、自分が2ヶ月後にその部分のエラー修正することなった時困るのが目に見えてる、、。
大事なことのはじめにあるよう『見てすぐわかるコード』にするべく、常日頃、書く時は
コードのこととか全くわからない人に自分をなりきらせて客観的になって書くことだなぁ。
#最後に
自分が書いている言語の標準リファレンスをたまには眺めてみるといい。
これ絶対大事だね。
自分がやりたいって思っている細かいとこが実は用意されているもので解決できるかもしれないし、ちゃんとどこまで標準でできて、どう拡張すれば応用きかせれるかなとか考えていこう。
とりあえず、個人的には2点。
標準リファレンスは把握する!!
書くコードは自分のおばあちゃんが見てもすぐに中身をわかってもらえるくらいに!!
は徹底することをいつか読み返した時の未来の自分に誓います。