** Convention over Configuration(COC)は、事前定義された仮定と標準を使用して開発を簡素化することを目的としたソフトウェア設計パラダイムであり、開発者が行う必要がある決定の数を減らします。 COCは生産性と一貫性を向上させることができますが、それが失敗したり、効果が低下する可能性のあるシナリオがあります。
1。柔軟性の欠如**
COCの主な批判の1つは、柔軟性を制限する可能性です。ユニークまたは非標準のソリューションが必要な環境では、厳密に慣習に準拠することが制限される可能性があります。たとえば、プロジェクトに従来の命名規則に従わないデータベーススキーマが必要な場合、COCの利点を相殺できる追加の構成が必要です[5] [4]。
2。他の設計原則との対立**
COCは、PythonのZenからの「明示的なものよりも優れている」原則など、他の設計原則と矛盾する場合があります。この原則は、明示的な構成が暗黙的な仮定よりも好ましいことを示唆しており、これは十分に文書化されていないと混乱や予期しない行動につながる可能性があります[9] [4]。
3。標準以外のシナリオの複雑さ**
複雑なまたは非標準的なシナリオを扱う場合、COCはユニークな要件を効率的に処理するために必要な柔軟性を提供しない場合があります。たとえば、異なるスキーマ構造を持つ複数のデータベースを統合する必要があるシステムでは、慣習のみに依存すると、非効率性または追加の複雑さにつながる可能性があります[4] [10]。
4。学習曲線と採用**
COCの実装には、慣習自体に一定レベルの精通が必要です。新しい開発者は、特により明示的な構成方法に慣れている場合、これらの慣習を学び、適応するのが難しいと感じるかもしれません。これにより、学習曲線が増加し、新しいチームメンバーの生産性が潜在的に妨げられる可能性があります[1] [4]。
5。暗黙の仮定とドキュメント**
COCは、確立された慣習に基づいた暗黙の仮定に大きく依存しています。これらの仮定が十分に文書化または理解されていない場合、誤解やエラーにつながる可能性があります。開発者は、それらを効果的に使用するために慣習を深く理解する必要があります。これは、共同環境の障壁となる可能性があります[10] [8]。
6。デフォルトに依存する**
場合によっては、開発者は、基礎となる仮定を完全に理解することなく、COCが提供するデフォルトに大きく依存しすぎる場合があります。これは、デフォルトがプロジェクトの特定のニーズと一致しない場合、予期しない動作につながる可能性があります。たとえば、フレームワークがデフォルトで特定のデータベース構造を想定しているが、実際の構造が異なる場合、これらのデフォルトをオーバーライドするには追加の構成が必要です[4] [11]。
要約すると、構成に関する慣習は生産性と一貫性の点で多くの利点を提供しますが、柔軟性、複雑な構成、または基礎となる慣習の理解がない場合に失敗したり、効果が低下したりする可能性があります。
引用:[1] https://facilethings.com/blog/en/convention-over-configuration
[2] https://www.reddit.com/r//rails/comments/a68d7i/im_terrified_of_convention_over_configuration/
[3] https://www.devx.com/terms/convention-over-configuration/
[4] https://en.wikipedia.org/wiki/convention_over_configuration
[5] https://www.aspireedge.com/the-impact-of-convention-over-configuration-in-ruby-on-rails.html
[6] http://softwareengineering.vazexqi.com/files/pattern.html
[7] https://learn.microsoft.com/en-us/archive/msdn-magazine/2009/february/patterns-in-patterns-in-convention-over-configuration
[8] https://devopedia.org/convention-over-configuration
[9] https://softwareengineering.stackexchange.com/questions/165649/is-convention-onfiguration-not-violating-basicプログラミングプリンツル
[10] https://techblog.bozho.net/a-problem-with-convention-over-configuration/
[11] https://stackoverflow.com/questions/71985512/convention-over-configuration-in-rails
[12] https://davewentzel.com/content/convention-over-configuration/