** COC (Convention Over Configuration)는 사전 정의 된 가정 및 표준을 사용하여 개발을 단순화하는 소프트웨어 설계 패러다임으로, 개발자가해야 할 결정의 수를 줄입니다. COC는 생산성과 일관성을 향상시킬 수 있지만 실패하거나 덜 효과적인 시나리오가 있습니다.
1. 유연성 부족 **
COC의 주요 비판 중 하나는 유연성을 제한 할 수있는 잠재력입니다. 고유 또는 비표준 솔루션이 필요한 환경에서는 규칙에 엄격하게 준수하는 것이 제한적 일 수 있습니다. 예를 들어, 프로젝트에 기존 명명 규칙을 따르지 않는 데이터베이스 스키마가 필요한 경우 추가 구성이 필요하므로 COC의 이점을 상쇄 할 수 있습니다 [5] [4].
2. 다른 디자인 원칙과 충돌 **
CoC는 때때로 Python의 선에서 "명시 적이 암시적인"원칙과 같은 다른 디자인 원칙과 충돌 할 수 있습니다. 이 원칙은 명시 적 구성이 암시 적 가정보다 바람직하다는 것을 시사하며, 이는 잘 문서화되지 않은 경우 혼란이나 예상치 못한 행동을 초래할 수 있습니다 [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-rails.html
[6] http://softwareengineering.vazexqi.com/files/pattern.html
[7] https://learn.microsoft.com/en-us/archive/msdn-magazine/2009/february/patterns-in-practice-convention-over-configuration
[8] https://devopedia.org/convention-over-configuration
[9] https://softwareengineering.stackexchange.com/questions/165649/is-convention-over-configuration-not-violating-basic-programming-principles
[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/