구성에 대한 컨벤션
Convention over configuration구성에 대한 컨벤션(컨벤션에 의한 코딩이라고도 함)[1]은 소프트웨어 프레임워크에서 사용하는 소프트웨어 설계 패러다임으로, 프레임워크를 사용하는 개발자가 반드시 유연성을 잃지 않고 자기(DRY) 원칙을 반복하지 않도록 하기 위해 필요한 결정의 수를 줄이려고 시도한다.
이 개념은 Ruby on Rails 웹 프레임워크의 철학을 설명하기 위해 David Heinemeier Hansson에 의해 도입되었지만, "감각적인 디폴트"의 개념과 사용자 인터페이스 설계에서 최소한의 경악의 원칙과 같은 초기 아이디어와 관련이 있다.
이 문구는 기본적으로 개발자가 애플리케이션의 비전통적인 측면만 명시하면 된다는 것을 의미한다.예를 들어 모델에 Sales 클래스가 있는 경우 데이터베이스의 해당 테이블을 기본적으로 "Sales"라고 부른다.'상품판매'라는 표처럼 이 관례를 벗어나야만 이들 이름에 대한 코드를 쓸 수 있다.
도구에 의해 구현된 규약이 원하는 동작과 일치하면 구성 파일을 쓸 필요 없이 예상대로 동작한다.원하는 행동이 구현된 관습에서 벗어날 때만 명시적인 구성이 필요하다.
Ruby on Rails의 이 문구는 특히 기본 프로젝트 파일과 디렉토리 구조에 초점을 맞추고 있어 개발자들이 프레임워크를 로드해야 할 모듈을 지정하기 위해 XML 구성 파일을 작성할 필요가 없도록 하는데, 이는 많은 초기 프레임워크에서 공통적이었다.
구성 접근에 대한 협약의 단점은 파이썬의 "암묵적인 것이 암묵적인 것보다 낫다"와 같은 다른 소프트웨어 설계 원칙과의 충돌로 인해 발생할 수 있다.구성에 기반한 소프트웨어 프레임워크는 개발자가 제한된 후크 세트를 사용하여 동작에만 영향을 줄 수 있는 제한된 구성 집합을 가진 도메인 고유 언어 또는 제어 역전을 포함하며, 두 가지 모두 제공된 규칙에 의해 쉽게 표현되지 않는 동작 구현을 더 어렵게 만들 수 있다.개발자가 수행해야 하는 결정의 수를 줄이려고 시도하지 않는 소프트웨어 라이브러리를 사용하는 경우보다.
개발자가 내려야 할 결정의 수를 줄이는 다른 방법으로는 프로그래밍 숙어와 다계층 구조를 가진 구성 라이브러리가 있다.
동기
일부 프레임워크는 각각 설정이 많은 여러 개의 구성 파일을 필요로 한다.이들은 URL에서 클래스 및 데이터베이스 테이블 간의 매핑에 이르기까지 각 프로젝트에 특정한 정보를 제공한다.매개변수가 많은 많은 구성 파일은 유지관리가 어려운 경우가 많다.
예를 들어, 초기 버전의 Java 지속성 매퍼는 XML 파일에 이러한 관계를 설명하여 데이터베이스에 매핑된 엔티티와 해당 필드를 최대화한다.이러한 정보의 대부분은 클래스 이름을 각각 동일한 이름의 데이터베이스 테이블에 매핑하고 필드를 해당 열에 매핑함으로써 밝혀질 수 있었다.이후 버전에서는 XML 구성 파일을 없애고 바로 이러한 규칙을 채택했는데, 이 규칙의 편차는 Java 주석 사용을 통해 표시될 수 있다(아래에 링크된 JavaBeans 사양 참조).
사용법

많은 현대적 프레임워크는 구성 접근법에 대한 규약을 사용한다.
그러나 이 개념은 디폴트 개념으로 거슬러 올라가며, 보다 최근에 자바 도서관의 뿌리에서 발견될 수 있다.예를 들어 자바빈즈 규격은 그것에 크게 의존한다.JavaBeans 사양 1.01을 인용하려면:[2]
"일반적으로 우리는 사람들이 물려받아야 하는 거대한 java.beans.beans를 발명하고 싶지 않다.대신 JavaBeans 런타임은 '정상' 개체에 대한 기본 동작을 제공하지만 특정 Java.beans에서 상속하여 지정된 기본 동작을 오버라이드할 수 있도록 허용하기를 원한다.어떤 인터페이스."
참고 항목
참조
- ^ Doyle, Kerry (11 November 2021). "Programming in Ruby: A critical look at the pros and cons". Search App Architecture. Retrieved 17 December 2021.
- ^ 선(1997년 7월 24일).JavaBeans 사양 2012년 4월 6일 웨이백 머신에 보관, 섹션 1.4.
- Bächle, Michael; Kirchberg, Paul (2007). "Ruby on Rails". IEEE Software. 24 (6): 105–108. doi:10.1109/MS.2007.176.
- Miller, Jeremy (February 2009). "Design For Convention Over Configuration". MSDN Magazine. Vol. 24, no. 2. Retrieved 9 March 2022.
- Chen, Nicholas (November 29, 2006). "Convention over Configuration". Archived from the original on 2021-08-25.
외부 링크
- Wayback Machine에서의 구성에 대한 협약(2021-08-25 보관)