質問: 最近開発をしていて思うのはコードリーディングは自分でコード書くより大変な時があります。 なんとなく、自分はコードリーディングが下手なのか、書かれているコードがおかしいのか、大した動作をしていないのに、ものすごくコードを読むのに時間がかかることがあります。 読みやすいコードを書くのは基本ですが、現実は読みにくいコードをなんとか読まなければならない状況の方が多いと思っており,共同開発者やオープンソースコミッターがデザインパターンに沿ってコードを書いていることを期待してはいけなく,最近では無からコードを生成する能力に比して,読みにくいコードでも読める力のウエイトの方が実務では大事なのではないかと思うようになりました。(自分が1から書けば良くなることがわかってる状態だとしても,何がしたいのかをコードから読み取らなければならないことが多いからです) どうすれば読みにくいコードでも効率良く読み進めることができるか方法を思索しています。 最近ではものすごく時間をかけて調査した結果、些細なバグの原因が全くそのクラスと関係ない場所で定義されたメソッドで副作用起こしてるから等がありました。 特に読みづらいと思ったのは以下のような特徴を持つプロジェクトのコードです。 * moduleと継承が混在していて名前空間で分かれていないメソッドの呼び出し(どのファイルで定義された関数,メソッドなのかがわからない) * そのスコープにおいて有効な変数が多すぎる(やむを得ない場合もありますが一時変数すらインスタンス変数に設定してあるものなど,インスタンス変数の定義場所と使用場所の区別がつかない場合など) * 処理の途中で違う処理が挟まってる(単一処理できないこともありますが) * 継承の多用(概念的に綺麗であれば大丈夫ですが分岐や深過ぎる継承同じ概念でまとめられるはずの継承) * 大き過ぎるメソッド * 小さすぎる大量のメソッド(的確に切り分けられてないと定義を飛び続けて元のコードの処理を追いづらくなる) * 処理フローがめちゃくちゃなメソッド(名前と実行してる処理が違う,名前に対して色んな処理をしすぎ) * 同じ処理が複数ファイルに散在している(読みづらい上に一箇所の変更が複数ファイルに伝播して直すのも大変) このような特徴を持つコードでも読む時に意識すると読みやすくなるってことありますか?もしコードリーディングで意識していることがあれば教えて下さい。(ファイル上に存在しないメソッドは継承,標準ライブラリ,mixinで的を絞るなど) よろしくお願いします。
回答: まだまだ読みづらいコードだし、命名が自分で書いてひどいなぁ...と思うときは沢山ありますが、これは勉強になりました! https://books.google.co.jp/books/about/リーダブルコード.html?id=Wx1dLwEACAAJ&redir_esc=y&hl=ja