リーダブルコードを読んだ
お久しぶりです。勉強に関して迷走中です。
機械学習もさることながら、python自体よくわかっていないというものもあり python自体の勉強にも手を出し始めました。とはいえ何をやるべきかよくわからなくて プログラムテストの問題ばかり解いてました。
あとは、なんとなく本を読み始めました。 買ったはいいけど、読んでなかった本、リーダブルコード。 いい本だよと聞いていたのでとりあえず買って放置してました。
結論: 多分いい本何でしょう。自分のレベルでは実感が少ないです。 というかまぁ当たり前だよねということが書いてありました。 問題は、それを実践できるかどうかというところにあるわけで...。できてません。 あと、pythonすらままならないので、C++とかjavascriptとかで書いてあるサンプルコードがよくわかりませんでした。 とは言え、一応通読したので下記雑な感想混じりのまとめ。
1章
読みやすいコードとは何か
- コードは他の人が最短時間で理解できるように書かなければいけない
(ここでいう「理解」とはコードの変更や、バグが発見できるレベル) - 短いコードは読みやすい。しかしコードを短くすることよりも理解にかかる時間を短くするほうがもっと大切。
2章
名前に情報を詰め込む
- getよりもDownload、SizeよりもHeight。変数やクラス名にはもっと明確な名前をつける
- DownloadTimeはわかりやすいが、DownloadTime_msほうがもっといい(単位が明確)
- 必要ない情報は削ってもいい。
3章
誤解のない名前をつける
- 最大文字数を表したい時、 max_lengthでは最大バイト数なのか、最大文字数なのかわかりにくい
max_lengthよりもmax_ charのほうがわかりやすい。 - 最大最小を表すときmax/minを使う。
- 範囲を表すときは、first/lastまたはbegin/endをつかう
境界値を含むか含まないかで、使い分ける4章
美しさ
見た目が美しいコードのほうが使いやすい
読み手が慣れているパターンと一貫性のあるレイアウトを使う
似ているコードは似ているように書く
関連するコードはまとめてブロックにする同じ処理は一つのメソッドにまとめてしまう
- ”=” などの位置を揃える(縦のラインを揃える)
一番重要なのは、スタイルに一貫性を持たせること。一貫性のあるスタイルは、正しいスタイルよりも重要だ
5章
コメント
- 関数名からわかることなど不必要なコメントはかかない。
- 関数名を補足しなければいけないなら関数名を変える
定数を決めたときに、なぜその定数に決めたのかなどを書いておくのは有用
そのコメントによって、その後の無駄な努力がなくなるかもしれない。誰もがはまりそうな注意書きは書くべき
- ファイルやクラスの全体像は書くべき
(最初に言っていることと矛盾するのでは?)
6章
コメント(2)
- 実際にどんなところに気をつけるべきかが書いてある
気になったのは次の言葉。
情報密度の濃い単語を使う
確かにその通りなのだがこれのせいで初心者の自分たちには読みにくいことが多い
7章
制御フローを読みやすくする
未消化
8章
巨大な式を分割する
説明変数、要約変数を使って、長い宣言を短く、わかりやすくする
説明変数:その処理が何をしているか書くusername = input().split()[0]とか
要約変数:説明変数でわかりやすくしたあとの処理が、つまり何をしているかまとめる変数同じことをやっている式はまとめる(二回目?)
9章
変数と読みやすや
- 邪魔な変数(tmpのような)を極力排除する
- グローバル変数を避ける
10章
無関係の下位問題を抽出する
- 本質的にやりたいことに集中できるようにする
- そのために必要な下処理とかは別メソッドとしてきりだせばよい
- 切り出した別メソッドは完全に独立しているのが望ましい
- このライブラリにこんなメソッドがあったらなと思ったら追加すればよい
11章
一度に一つのことをさせる
- 複数の処理を入れ子にしない
- 下処理 --> 実際の処理 --> 後処理のように流す
- 読みにくいコードがああれば、そこで行われているタスクを洗い出す
タスクの中には外出しするべきものや関数として定義すべきものが見つかるだろう
12章
コードに思いを込める
やろうとしていることを簡単な言葉で説明できるようにする
13章
短いコードを書く
- プロジェクトが進むとどんどんとコードは肥大化していく
- 短く保つためにも標準ライブラリを読み返して、どんなことができるのか知っておく
14章
テストに関して
パス
15章
実例に関して?
パス