これに対する答えは簡単です。
一貫性は最も重要です。
しかし、それは警告が付属しています...
あなたとあなたの同僚は、間違った種類の一貫性に夢中になっている可能性が高い
実装は使い捨てです。テストスイートの品質と包括性に応じて、さまざまな程度で簡単にオーバーホールできます。「これはプロパティである必要がありますか?」、「下位レベルの構造の代わりにLINQを使用するコードを薄くするべきではありませんか?」疑わしい価値がある。測定値を実装レベルでの一貫性の値に結び付けるのは困難です。このレベルで尋ねるより良い質問は、「このコードは宣伝どおりに機能しますか?」です。TL; DR実装の一貫性は、「小さな心」がホブゴブリンを使用する場所です。
ここで一貫性がそれほど重要ではないのはなぜですか?通常、実装には少数の貢献者がいます。ほとんどのメソッドは書かれており、二度と触れません。残りのコードのうち、2つの貢献者を持つメソッドの数はほぼ確実に過半数です。このパターンは無限に続きます。このコンテキストでは、一貫性はそれほど重要ではありません。コードの有効期間がかなり短い(数年)場合、積極的な一貫性から得られる利益は、おそらく要因ではありません。
これは、実装に夢中になるべきだということではありません。むしろ、素敵な、きれいな、シンプルなデザインは、方法ごとに愚かなボイラープレートの一貫性のある方法よりも、将来の仮想的なメンテナーにとって桁違いに価値があると言うことです。これは私たちを本当のポイントに連れて行きます...
APIは使い捨てではありません。
これはすべて、APIコードレベル、Webサービス、SDKなどです。これらは一貫している必要があります。このさまざまな一貫性による生産性の向上は、いくつかの理由で非常に大きくなります。
統合テスト:
APIの一貫性を維持する場合、統合テストのスイートを作成できます。これらにより、開発者は実装の詳細を自由に交換し、即座に検証を行うことができます。共同作業のクズをLINQに切り替えたいですか?統合テストは実行されますか?また、実稼働への準備を行う際の検証も提供します。コンピューターは高速であるため、1台のラップトップで日常的なタスクを実行する1,000人のテスターの作業を実行できます。組織の人員を大幅に増やすことに相当します。
生産性
APIが一貫している場合、APIの他の部分の使用について学んだことをたどるだけで、APIの使用方法を推測できます。これは、APIが自然で一貫した「ルックアンドフィール」を提供するためです。これは、クライアントがドキュメントを選別する時間を短縮することを意味します。オンボーディングは簡単で安価です。APIを開発した人々に尋ねられる質問は少なくなります。一貫性は誰もが勝者になる
このシナリオで一貫性が重要なのはなぜですか?APIには実装の正反対の問題があるためです。それらを使用する人の数は、通常、実装に貢献する人の数よりもはるかに多くなります。少しの一貫性から得られるわずかな利益は増加し、その一貫性を維持するためのコストは償却されます。
結論
一貫性は高価です。一見すると、生産性が低下します。開発者を制約し、彼らの生活をより困難にします。問題を解決する方法に制限があり、最適でない方法で問題を解決することがあります。これは、多くの場合、彼らが理解していない、考えが悪い、または彼らが内密ではない(契約、より大きな組織的または組織間のポリシー)ためです。
Raymond Hettingerは、Pythonプログラマのチーム向けにPEP8スタイルガイドを使用することに関するPycon 2015の講演でいくつかの優れたポイントを挙げました。彼は、コードの一部に対する文体の一貫性への執着が、コードレビュー担当者が深刻なロジックと設計上の欠陥を見逃す原因になることを示しました。彼の仮説は、文体の矛盾を見つけるのは簡単だと要約できます。コードの実際の品質を判断するのは難しい
ここでのポイントは重要です。一貫性が重要な場所を特定し、積極的に保護します。重要ではない場合は、時間を無駄にしないでください。一貫性の価値を測定する客観的な方法を提供できない場合(上記の場合、「実効人員」、生産性の関数としてのコスト)、リターンが大きいことを実証できない場合は、あなたの組織。