リーダブルコードも終盤に少しずつ近づいてきました。
今まではどちらかというとコードの点や線の技術に注目してきましたが、これからは面的な要素に注目していきます。
リーダブルコードでは「無関係の下位問題を積極的に見つけて抽出する」とありますが、要は抽象度をあげることと私は解釈しています。
「無関係の」とは「依存度をさげる(疎結合)」ということでしょうか。
コードの抽象化
プログラムというのは処理が複雑にからみあっていればからみあっているほど理解が難しくなりますし、それにともないバグの確率も高くなります。またテストなどもできません。
理想的なコードとは1つ1つの処理が独立した部品のようになっていて、互いに依存することなく切り離せるような関係になっていなければいけません。
そのために下記のような工夫が大切になってきます。
ユーティリティーコード
文字列の処理や配列の処理、ファイルの読み書きなどはどんなプログラムでも使います。このような処理を個別のプログラムに1つ1つ書いていると同じ事を何度も書くことになります。このような処理は「ユーティリティークラス」として独立したクラスにしておくのが良いでしょう。
PHPなどでは言語自体にこういったライブラリが組み込まれており、特に配列がらみの処理などは充実しています。
プログラム自体の抽象化
ユーティリティーは完全に独立した処理ですが、完全には独立していなくてもプロジェクト内部で共通した処理を汎用化するだけでもかなり意味があります。簡単に言えば、パッケージ全体で使用する関数はより上部のクラスに共通のメソッドをして持たせるほうが良いでしょう。
インターフェイスを簡潔にする
インターフェイスが汚い場合(引数が多い、処理が複雑)は引数をととのえたり、事前のメソッドをつくなりして、わかりやすい形にしましょう。