코딩 표준의 진화, 어떻게 처리합니까?


12

기존 코드 기반 프로젝트에서 코딩 표준 / 스타일 가이드의 진화를 어떻게 처리합니까? 팀의 누군가가 프로그래밍 언어에서 더 나은 객체 인스턴스화 방법을 발견했다고 가정 해 봅시다. 예전 방식이 나쁘거나 버그가있는 것이 아니라 새로운 방식이 덜 장황하고 훨씬 더 우아하다는 느낌 일뿐입니다. 그리고 모든 팀원들은 정말로 그것을 좋아합니다. 기존 코드를 모두 변경 하시겠습니까?

코드베이스가 약 500.000+ 코드 라인이라고 가정 해 봅시다. 기존의 모든 코드를 계속 변경 하시겠습니까? 아니면 새로운 코드 만 새로운 표준을 준수하도록 하시겠습니까? 기본적으로 일관성을 잃습니까?

프로젝트의 코딩 표준 진화를 어떻게 처리합니까?

답변:


16

팀의 생산성을 높이기 위해 코딩 표준이 존재합니다. 이론적으로 코드를 이해, 변경 및 테스트하기가 더 쉽습니다. 실제로 그들은 위험한 양의 메타 작업을 만들 수 있습니다. 팀은 가장 정확하고 우아한 솔루션을 추구하여 기존 코드를 반복해서 다시 작성합니다. 불행히도, 메타 업무 문제는 모든 사람이 올바른 일을하는데 열중하고 열정을 갖고 집착하는 팀에서 더 나빠 보입니다.

프로젝트에서 프로젝트로 이동하는 컨설턴트로서, 엄격한 코딩 표준을 갖춘 우수한 원칙은 결과에 관심이있는 우수한 개발자보다 프로젝트 성공에 훨씬 덜 기여한다는 것을 알았습니다. 일관되지 않은 코딩 스타일은 놀라운 개발자에게 약간의 방해입니다. 일관성이 있거나없는 생산적입니다. 일치하지 않는 코드가 발생하면 현재에 대해 묻습니다.표준을 준수하십시오. 그러나 프로젝트의 모든 코드 줄을 현재 표준으로 업데이트하지는 않습니다. 그들은 모범 사례가왔다 갔다했기 때문에 주장하지 않습니다. 오늘 무언가를하는 올바른 방법은 내일 무언가를하는 올바른 방법과 다릅니다. 그렇다면 코딩 표준은 발전하지 않을 것입니다. 따라서 시간이 지남에 따라 올바른 작업 방법이 변경되면 "올바른"에 대한 정의가 깨질 수 있습니다.

표준이 중요하지 않다고 말하는 것은 아닙니다. 표준의 목표는 생산성이라는 점을 명심하십시오. 새로운 표준으로의 재 작성을 보장 할 수 없다면 장기적으로 비용을 지불하더라도 시간을 낭비하지 마십시오. 새로운 또는 리팩토링 된 코드에서 새로운 표준을 정당화하는 것이 훨씬 쉽습니다. 우아함은 시원하지만 결과와 동일하지 않습니다.


6

우리가하는 일은 코드베이스를위한 진화 (혁명이 아님)입니다. 업데이트 된 표준을 사용할 때;

  • 새로운 코드가 작성되었습니다
  • 코드 리팩토링
  • 버그가 수정되었습니다
  • 새로운 부분이 기존 클래스에 추가됩니다

코드베이스가 일관성을 유지하는 것이 중요하므로 변경 사항이 "이전"스타일 코드와 "새"스타일 코드가 혼동 될 가능성이있는 경우 다음 프로젝트에 대한 코딩 표준 업데이트를 예약하는 것이 좋습니다.


3

우선, 나는 ( "필수 부분) 코딩 지침에 그러한"모범 사례 "를 포함시키지 않을 것입니다. 그들은 당신이 어떻게 예를 들어, 부록에 예를 들어, 언급 할 수 있었다 일을하지만, 하지 가 있다고 한다 방법 것을 할 수.

즉, 코딩 표준 변경에 대해 고려해야 할 두 가지 경우가 있습니다.

  1. 이전 코드를 업데이트하지 않고 이전 코드와 새 코드를 혼합하더라도 가독성에 영향을 미치지 않는 변경 사항
    이러한 변경 사항은 코딩 표준에 즉시 추가 될 수 있으며 모든 새 코드 및 수정 된 코드에 적용됩니다. 오래된 코드는 시간이 허락되고 해당 영역이 변경 될 때마다 점진적으로 조정되어야합니다.
    내가 실제로 겪었던 이런 종류의 변화의 예는 각 파일의 시작 부분에있는 저작권 정보의 변화입니다.
  2. 기존 코드와 새 코드를 혼합하면 가독성이 저하되는 변경 사항
    이러한 변경 사항은 전체 코드베이스에 한 번에 적용하거나 실제로 필요한 경우 다시 고려해야합니다.
    이러한 종류의 변경의 예는 들여 쓰기 또는 괄호 배치의 변경입니다.

2

이것은 실제로 생성하는 제품 유형에 따라 달라집니다.

  • 사내에서 작성되고 고객에게 배포하는 상용 응용 프로그램의 경우 주요 목표는 수익입니다. 기존 코드가 버그가없는 한 새로운 코딩 표준이 발전했는지는 중요하지 않으므로 제품에 새로운 기능을 추가하고 수익을 창출하는 데 집중해야합니다. 반드시 새로운 코드에 대해 새로운 코딩 표준을 적용하되 기존 코드를 모두 변경하는 것은 시간 낭비입니다.
  • 오픈 소스 제품 또는 여러 회사 (아마도 고객 일 수도 있음)가 소스를보고 작업하는 제품을 개발하는 경우 코드 가독성이 훨씬 더 중요해지며,이 경우 정확한 결정에 따라 적절한 결정을 내려야합니다. 얼마나 많은 코드를 변경해야하는지, 장기적으로 어떤 이점이 있을까요? 우리 모두는 예쁜 코드를 좋아하지만 실제로는 폐쇄 소스를 다루는 영리 회사의 경우 새로운 표준을 지속적으로 적용하면 장기적으로 수익을 잃을 수 있습니다.

1
테스트 범위에 따라 달라집니다. 중요한 기능이 통합 및 단위 테스트로 다루어 짐에 따라 확신이 많은 10,000 개 이상의 라인을 리팩토링했습니다.
Martijn Verburg

@Martijn-좋은 지적, 이것은 또한 사실입니다.
mrwooster

0

개인적으로, 나는 오래된 코드를 그대로 유지하고 새로운 일을 할 때마다 새로운 표준을 따르기를 원합니다. 보다 구체적으로 old.c에서는 이중 표준을 사용하지 않습니다. 그러나 new.c를 만들려면 더 새롭고 세련된 구문을 사용할 수 있습니다. :)


그 선택의 이유를 설명 할 수 있습니까?
Ward Bekker

어 ... 좀 직감이라고 말할 수 있습니다. mrwooster가 위에서 말한 것을 기반으로, 그것이 상용 앱이라면, 나는 단지 약간의 화장품 변경을하기 위해 시간을 낭비하지 않을 것입니다. 기능은 동일하게 유지됩니다. 또한 변경 사항은 객체를 인스턴스화하는 방법 만이 아닙니다. 또한 메소드에 액세스하는 방법도 설명하십시오. 그런 다음 버그를 도입 할 가능성이 높은 많은 코드를 수정해야합니다. 따라서 노인이 그곳에 머 무르도록하는 것이 좋습니다.
Barun
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.