奇特なブログ

「殊勝に値する行いや心掛け」を意味する、奇特な人になる為のブログです

フレームワークやライブラリはカスタマイズ可能な作りにしましょう

タイトルの様にした方が良い理由は到って単純で、

仕様変更や特殊な仕様に対応する為です(苦笑)

例えば、以下のリンク先の一番下の回答にあるソースコードの場合。

finalメソッドの使いどき

以下の様に書いた方が良いのでは無いでしょうか。



class Framework {

public function execute() {
$this->a();
$this->b();
}

protected function a() {
// デフォルト実装
}

protected function b() {
// デフォルト実装
}
}



まず、executeメソッドにfinalは付けない方が良いと思います。
何故なら、aメソッドとbメソッドの処理「しか」行わないという「保証」が有りません。
また、aメソッドとbメソッドの処理の順序も「必ず」この順序なのでしょうか。

aとbメソッドについては、ケースバイケースかと。
そのメソッドが何をしたいのかによって、
abstractを付けたり付けなかったりするので。

とにかく、finalは止めましょう。
メソッドに限らず、当然クラスもです。
クラスにfinalを付けると、継承すら出来なくなります。
唯一の例外は、ユーティリティクラスでしょうか。

フレームワークやライブラリは「色んな人」が使います。
業務上、カスタマイズする事も多いです。
なので、「隙間の無いガッチガチ」な作りにはしないで、
「隙間が有って余裕の有る」作りにした方が良いと思います。
筆者も気をつけますので(苦笑)