リーダブルコードを意識しながら普段気をつけていること(1)
初のシリーズもの。不定期開催します。
普段コードを書く時にリーダブルなコードを書く時に気をつけていることです。
思いついたら書いていきます。
第1回目は
コンテキストを作る
例えばcsvアップロード機能・ダウンロード機能を作ったときに以下のようなメソッドがあるとします。
1 2 3 4 5 6 7 8 9 10 11 12 |
|
ここでのheaderメソッドはcsvダウンロード時にヘッダを作るメソッドとします。
初めてソースを見た人はheaderメソッドを見ただけではそれがアップロードに使われるのかダウンロードに使われるのかわかりません。
downloadメソッドもしくはuploadメソッドを読んではじめてどちらで使えるかわかるようになるかと思います。
これを両方のメソッドを読まずにheaderメソッドがどこで必要とされているかを一発でわかるようにしたいと思います。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
|
機能毎(あるいは関心ごと)にメソッドをmoduleを使って閉じ込めることで、
headerメソッドがどこで必要となるか一発でわかるようになりました。
またdownloadに不具合があった場合にはDownloadモジュールだけを読めばいいようになったため、読まなければいけないソースは格段に減ってコードリーディングする人の負担もだいぶ軽くなったのではないでしょうか?
今回は簡単な例ということでclassの中にmoduleを書いてしまいましたが、
moduleの処理が大きくなる場合にはもちろんファイル分割 & 適切にクラス分割して記述するべきだと思います。