概要
JacquesBが書いているように、すべての人がRobert C. Martinの「Clean Code」に同意しているわけではありません。
あなたが期待した原則に「違反している」ことがわかったオープンソースプロジェクトは、単に他の原則を持っている可能性が高いです。
私の視点
私はたまたまRobert C. Martinの原則に非常に忠実ないくつかのコードベースを監督しています。しかし、私は彼らが正しいと主張しているわけではありません。私たちにとってうまく機能しているとしか言えません -そして「私たち」は実際には少なくとも
- 製品の範囲とアーキテクチャ、
- ターゲット市場/顧客の期待、
- 製品の維持期間
- 私たちが使用する開発方法論
- 当社の組織構造と
- 開発者の習慣、意見、過去の経験。
基本的に、これは次のように要約されます。各チーム(会社、部門、またはオープンソースプロジェクト)は一意です。それらは異なる優先順位と異なる視点を持ち、もちろん異なるトレードオフを行います。これらのトレードオフ、およびそれらがもたらすコードスタイルは、主に好みの問題であり、「間違っている」または「正しい」と証明することはできません。チームは、「私たちのために機能するのでこれを行う」または「私たちのために機能しないのでこれを変更する必要がある」としか言えません。
そうは言っても、長年にわたって大規模なコードベースを正常に維持できるようにするには、各チームが上記の側面に適していると考える一連のコード規則に同意する必要があると思います。それは、ロバートC.マーティン、他の著者による慣行の採用、または独自の発明を発明することを意味するかもしれません。それらを正式に書き留めるか、「例によって」文書化することを意味する場合があります。しかし、それらは存在するはずです。
例
「長いメソッドからいくつかのプライベートメソッドにコードを分割する」ことを検討してください。
ロバートC.マーティンはこのスタイルは、抽象化の1つのレベルに各メソッドの内容を制限することができますことを言う-簡略化した例として、公共の方法は、おそらく唯一のようなプライベートメソッドへの呼び出しで構成されますverifyInput(...)
、loadDataFromHardDisk(...)
、transformDataToJson(...)
そして最後にsendJsonToClient(...)
、これらの方法を持っています実装の詳細。
- 読者は、高レベルの手順の概要をすばやく把握し、読みたい詳細を選択できるため、これを好む人もいます。
- すべての詳細を知りたいときは、実行フローに沿ってクラス内をジャンプする必要があるため、これを嫌う人もいます(これは、JacquesBが彼が複雑さの追加について書いているときに言及しているものです)。
教訓は次のとおりです。意見を述べる権利があるので、それらはすべて正しいです。