나는 그것이 전체 프로젝트가 얼마나 큰지에 달려 있다고 생각합니다.
극단적으로, 1 Mloc 프로젝트가 있다고 가정 해 봅시다. 대규모 프로젝트의 경우 단일 개인이 관련된 모든 영역에서 "전문가"가 될 가능성은 낮습니다. 따라서이 경우 각 주요 구성 요소에 대한 기존 코드 스타일을 고수합니다. 새로운 개발자는 영역을 선택하고 배우며 코드 스타일이 다른 많은 다른 구성 요소를 볼 수 없을 것입니다.
프로젝트가 훨씬 작 으면 개인이 전체 코드베이스를 이해하게 할 가능성 이 높은 경우 지배적 인 코드 스타일을 선택하고 그에 충실합니다. 이 경우, 새로운 개발자가 프로젝트의 모든 영역에서 작업 할 가능성이 있기 때문에 전체 프로젝트의 일관성이 더 합리적이라고 생각합니다.
중간 규모의 프로젝트는 아마도이 결정을 내리기가 가장 어려울 것입니다. 이 경우 각 접근 방식에 대한 비용을 측정하고 장기적으로 가장 비용이 적게 드는 방법을 결정해야합니다. 과제는 중간 규모의 프로젝트가 일반적으로 완전한 스타일 리팩토링이 엄청나게 비싸게 보일 정도로 충분히 성장했다는 것입니다. 코드 트리 구조를 다시 살펴보고 특정 코드 스타일을 그룹화하기 위해 사물을 배열 할 수 있는지 확인할 수 있습니다.
어느 쪽이든, 최종 결정은이 패키지를 구성하는 팀에 달려 있습니다.
내 추론을 위로부터 바꿀 수있는 일부 특이 치 :
하나 이상의 모듈이 끔찍한 스타일을 가지고 있다면 더 큰 프로젝트에서도 그 스타일을 유지하는 것은 의미가 없습니다. 그렇습니다. 스타일은 주관적이지만, 당신과 동료 프로젝트 참가자들이 정말로 특정 영역이 흐르는 방식을 좋아하지 않는다면, 오래된 스타일을 핵화하고 더 나은 스타일을 부여하십시오.
모든 스타일이 합리적으로 서로 가깝다면 "새로운 방법이 있습니다"라고 선언하고 모든 새로운 코드와 중요한 리팩토링에 사용하는 것이 쉬울 것입니다. 이것은 리뷰에 약간의 고통을 줄 수 있지만, 내 경험상 대부분의 사람들은이 접근법에 적응할 수 있습니다. 또한 이전 코드가 어디에 있는지 알려주는 표시를 제공합니다.
때때로 언어에 추가 된 새로운 기능에 따라 스타일이 바뀝니다. C ++은 수년 동안 많은 기능을 선택했습니다. 필요에 따라 이전 스타일을 이러한 기능을 이용하는 새로운 스타일로 리팩토링하는 것이 좋습니다.
일부 라이브러리는 특히 관용적 접근 방식 또는 스타일을 가질 수 있습니다. 그렇다면 프로젝트의 나머지 부분과 충돌하더라도 해당 라이브러리의 스타일을 고수합니다. frobnosticators
다른 프로젝트에서 일하는 사람이 귀하의 프로젝트에서 일할 가능성을 높이기위한 것입니다.
의견 중 일부는 명령형 및 객체 지향 스타일을 고려한 것으로 언급했습니다.
특정 스타일에서 "무거운"모듈은 모듈의 크기가 중간 이상인 경우 계속 유지해야합니다. 저는 세 가지 주요 스타일 (제 국적, 객관적 및 기능적)을 다루었으며 무거운 명령형 스타일을 OO 스타일로 리팩토링했습니다. 코드가 중간 이상이면 리팩토링이 (예외적으로) 어려울 수 있습니다. 리팩토링을 지원하는 툴링 지원이 없었기 때문에 경험이 혼란 스러웠습니다.
필연적으로 스타일이 지정된 모듈과 특정 개발 틈새에 관용적 인 모듈 사이에 높은 상관 관계가 있다고 생각합니다. 이는 특이 치로 제기 한 마지막 지점으로 돌아갑니다. 따라서 해당 기능에 대한 모든 모듈은 다음과 같이 보일 것이며 해당 도메인의 전문가가 프로젝트에서 쉽게 작업 할 수 있기를 바랍니다. 그러나 옵션이 있고 팀이 해당 모듈의 스타일을 좋아하지 않는다면 옵션을 조사 할 것입니다.
마찬가지로, 나는 OO 원칙이 너무 멀리 취해 잘못 사용 된 무거운 OO 스타일 모듈로 작업했습니다. 예를 들어, 인터페이스는 다중 상속을 대신하여 사용되었습니다. 그리고 당신이 예상 한대로, 그것은 조잡한 구현이었습니다. 해당 모듈을 리팩토링하는 데 합당한 진전을 이룰 수 있었지만 대신 더 나은 패키지를 사용하는 대신 그 접근 방식을 포기했습니다.