オブジェクト指向ソフトウェアのための哲学
otaku@manifesto:~$ cat OTAKU.md
構造は決定である。
偶然ではない。
OTAKUはオブジェクト指向ソフトウェアのための哲学です。5つの制約がコードの存在可否を決め、3つの形がリポジトリの構成を決めます。ここにあるのは言語の話ではなく、パラダイムの話です。
なぜ存在するのか
フレームワークは、一部品を差し替えたいと思うまでは優れています。その瞬間、全部を差し替えろと言ってくる。逃げ道は書き直しですが、それは偶発的な制約を別の偶発的な制約に置き換えるだけです。OTAKUは逆に賭けます。一度で理解できる大きさの部品で作り、許可なく差し替えられる構造を。
名前は頭字語であり、気質でもあります。習熟・規律・構造的純粋性への技術的偏執、つまり一文で説明できない巧妙な抽象を削除できる胆力のことです。
この本の読み方
01
マニフェスト
5つの柱、40の測定可能なルール、1つの主要指標。
023つの形
アトム、アセンブリ、アプリケーション。リポジトリは必ずどれか1つ。
03ガイド
PHP、C#、Java、C++、TypeScriptのコードで適用方法を示します。
拒否するもの
- ドメイン層に漏れ出すフレームワーク。
- アトム・アセンブリ・アプリケーションに分類できないリポジトリ。
- 2つ目の実用例が存在する前に作られた抽象。
- 循環的複雑度が5を超えるメソッド。
- 契約なしで公開されたインターフェース。
絶対的な制約の下で作られたがゆえに、二度と「修正」を必要としないコードを書け。
適用範囲
OTAKUはPHPRiseの中で生まれましたが、PHPは出発点にすぎません。ルールが測るのはインデント、複雑度、依存関係、契約、命名であり、これはあらゆるオブジェクト指向言語が表現できる概念です。ガイドはPHP、C#、Java、C++、TypeScriptを扱います。
クラス、インターフェース、例外、パッケージマネージャがある言語なら適用できます。なければ、これは適切な道具ではありません。それも正当な答えです。
この章は現在英語のみです。