개발 팀에서 다양한 코딩 스타일을 지원할 수있는 방법이 있습니까


13

문제 : 두 개발자 => indention에 대한 세 가지 의견, 줄 바꿈에 중괄호 여부 등

우리는 일반적으로 프로젝트에서 3-4 명과 함께 일하며 각 프로젝트마다 고유 한 코드 스타일이 있습니다. 공통적 인 해결책은 코드 스타일에 동의하는 것입니다. 모두가 사용해야하지만 창조적 인 프로그래머에게 적합하지 않은 양복을 입히고 싶지는 않습니다.

질문은 다음과 같습니다. 각 프로그래머가 자신의 스타일로 살 수 있지만 저장소 내부에 공통 코드 기반을 두는 방법이 있습니까? 체크 아웃 및 커밋시 개인 및 공통 스타일 사이에서 변경되는 git / svn / whatever 플러그인을 생각합니다. 이 접근법의 까다로운 부분은 파일 버전간에 올바른 차이점을 지원하는 것 같습니다.


1
대부분의 언어에서 사용할 수있는 자동 코드 포맷터가 있지만 일부 언어 (예 : C ++)의 경우 언어 구문 분석의 복잡성 때문에 완전히 신뢰할 수 없게 만드는 것이 매우 어렵습니다.
Joris Timmermans

5
정말 나쁜 생각입니다. 팀에 합의 된 표준을 제시 한 다음 적용하도록하십시오. 와인이 있으면 조금 자라고 말하십시오.
Clement Herreman

8
어쩌면 다른 매우 일반적인 언급이 여기에 있어야 할 수도 있습니다. 코드 스타일의 차이에 실제로 문제가 있습니까? 파손되지 않은 것을 고치지 마십시오!
Joris Timmermans

5
"하지만 저는 프로그래머가 자신에게 맞지 않는 정장을 강요하고 싶지 않습니다"-프로그래머가 들여 쓰기 나 브레이스 스타일 변경과 같은 간단한 것에 적응할 수 없다면 더 나은 개발자를 고용해야합니다. 한두 주 동안 새로운 스타일을 사용하면 잊어 버립니다.
Mike Weller

4
@ MikeWeller 반대 주장 할 수 없었습니까? 이름 지정 규칙은 정의 컨텍스트 외부에서 사물의 목적을 쉽게 식별 할 수 있기 때문에 내가 중요하게 생각한 유일한 것입니다. 블록이 중첩, 시작 및 종료되는 위치를 명확하게하기 위해 누군가가 일관된 스타일을 유지하는 한, 왜 그렇게 큰 문제가되는지 이해하지 못했습니다.
Erik Reppen

답변:


20

아니요, 표준을 세워야합니다. 팀 구성원 B가 변경 한 경우 (자동 IDE 도구를 사용하거나 수동으로) 전체 코드 팀 구성원 A가 작성한 변경 사항이 커밋되어 변경 사항으로 표시됩니다.

이것은 거의 모든 팀이 직면하는 것이며 바로 이런 이유로 표준이 "강제"됩니다. 언어 당국의 표준을 기준으로하여 팀에 맞게 채택 할 것을 제안합니다.

일관된 코딩 스타일을 유지하면 프로젝트의 유지 관리에 도움이되고 코드 작업을하는 새로운 사람들의 진입 장벽을 줄일 수 있습니다.


11

아니요, 코딩 표준 (바람직하게는 이미 존재하는 표준)을 정의하고 개발자가이를 준수하도록해야합니다. 전문 프로그래머가된다는 것은 작업중인 프로젝트에 사용 된 코딩 표준에 맞게 조정할 수 있다는 것을 의미합니다.


2
+1. 그들이 하나를 선택하도록하자.
Clement Herreman

나는 프로그램이 "유효한"또는 "유효하지 않은"것이 아니라 "유효하고 형식이 잘 잡힌"상태 인 제 3의 상태를 갖도록 형식화가 프로그래밍 언어의 표준의 일부가되기를 바랐다.
JesperE

4
들여 쓰기가 언어 의미론 인 파이썬의 경우는 다소 그렇습니다.
Clement Herreman

2
Go는 그러한 기능을 엄격하게 시행하지는 않지만 내장 소스 코드 포맷터와 함께 제공됩니다 go fmt. golangtutorials.blogspot.fr/2011/06/…
Clement Herreman

1
@JesperE 된다 파이썬 구현 PEP8 및 해당 툴 창의적라는 pep8 .
phihag

8

예, 스타일이 모두 합리적이고 사람들이 선호도 및 / 또는 스타일을 단일 코드 파일로 혼합하기 위해 다른 사람들의 코드를 변경하지 않는 한 작동 할 수 있습니다.
이상적이지는 않지만 자신의 것과 다른 "표준"으로 작성된 오래된 코드를 상속하여 코드베이스와 통합 해야하는 것과 다르지 않습니다.
따라서해야 할 경우 몇 가지 지침이 있습니다.

  • 취향에 맞게 다른 스타일의 코드를 변경하지 않아도 시간이 걸리고 버그가 발생합니다.
  • 단일 파일 내에서 일관성을 유지합니다. 따라서 스타일 A를 사용하여 처음 스타일을 작성했다면 모든 사용자가 스타일 A를 수정할 때 스타일 A를 사용합니다
  • 외부에 노출되는 모든 것에 대해 공용 인터페이스에 대한 공통 표준을 작성하십시오 (그렇습니다. 시스템의 다른 하위 구성 요소는 외부에 있습니다).

2
어쨌든 전문 개발자는 종종 서로의 스타일을 병합하는 경향이 있다고 덧붙였습니다. 그들은 몇 가지 요점에 대해 짧은 비공식 토론을하고 동의하게됩니다.
Joris Timmermans

자동 코드 형식 재 지정의 사용을 최소한으로 유지해야한다는 경고가 있습니다 (완전히 금지되지 않은 경우).
grahamparks

2
"사용자의 취향에 맞게 다른 스타일의 코드를 변경하지 않으면 시간이 걸리고 버그가 발생합니다."-그 반대의 경우-자동화되지 않은 표준을 수동으로 일치시키는 것은 시간이 많이 걸리고 코드 포맷터를 실행하여 '옵션으로 형식이 지정된- "기능 변경을하는 것이 훨씬 빠릅니다.
Pete Kirkham

이 답변이 실제로 질문의 "자동 서식"부분을 놓친 것 같습니다.
Joris Timmermans

파일 간의 다양한 스타일은 일관된 스타일을 갖는 것보다 다루기가 훨씬 어렵습니다.
Andy

4

짧은 대답은 아니오입니다.

작업은 소프트웨어 개발과 같은 지식 기반 작업에서 특히 중요하게 여겨지지만, 개발자는 의견이 단지 의견 일 뿐이며 어떤 라인 들여 쓰기 표준이 가장 좋은지 논쟁하지 않고 소프트웨어를 작성해야한다는 것을 인식해야합니다.

표준 문서의 목표는 다음과 같은 공통 코딩 표준 / 컨벤션을 시행 / 제안하는 것

  1. 탭, 들여 쓰기, {, (,
  2. 변수, 객체 및 함수 이름 (예 : CamelCase, 헝가리 표기법)
  3. 예외 처리 방법 /시기 / 장소
  4. 코드 주석. 항상 디자인 문서, 버그 번호 등을 참조하십니까?

표준 문서는 코드를 쉽게 읽고 유지 보수하며 규칙에 따라 일관성을 유지하는 데 도움이됩니다.

체크인하기 전에 코드를 검토하거나 다른 개발자의 코드를 디버깅하거나 원래 개발자가 회사를 떠난 후 몇 년이 지난 후에 코드를 수정하면 매우 중요합니다.

일반적으로 코딩 표준 문서를 작성할 때 사용중인 언어 (C, C #, SQL)에 대한 산업 표준을 검토하고, 가장 적합한 표준을 사용하고, 의견을 내기 위해 가장 선임 / 영향력있는 개발자에게 배포하고, 적절한 곳에 의견을 통합 한 다음 문서를 해제하십시오.


1
실제로 많은 상점에는 일반적으로 Old Hand 또는 PrimaDonna 인 한 명의 개발자가 있으며 나머지 사람들이 처리 할 수 ​​있도록 Formatting Holy Wars를 작성하는 것을 좋아합니다. 전문가 == 내가 말한대로. 당신이 뭐라고 말하든 == 비전문가. 그리고 나서 전개됩니다. 나는 "많은 전역 변수를 사용하고, 새로운 클래스를 만들지 말고, 모든 비용으로 객체 지향 프로그래밍을 피하고, 아무 것도 바꾸지 말 것"과 같은 중대한 것을 요구하는 코딩 표준을 보았습니다. 안타깝게도 사람들이 "코딩 표준"이라는 범위로 제한하려는 시도에는 제한이 없습니다.
Warren P

4

버전 제어 시스템에 적용되기 전에 코드를 자동으로 다시 포맷하는 것은 이론상 가능합니다.

그러나 자동 코드 서식 도구는 100 % 신뢰할 수 없습니다. 따라서 실제로이 시스템에서 코드에 문제가 발생할 수 있습니다. 내 생각에 그것은 아이디어를 죽인다. 올바른 스타일 코드보다 기능 코드를 갖는 것이 항상 중요합니다!

프로젝트가 구획화되어 있고 코드의 대부분이 개별 프로그래머가 "소유"하는 경향이있는 경우 (이유 내에서) 고유 한 스타일을 사용하는 것이 좋습니다. 그러나 여러 사람이 동일한 코드 조각을 자주 작업하는 경우 스타일을 적용해야 할 수 있습니다.

다음은 Stack Overflow에 대한 비슷한 토론입니다 .


2
링크 된 토론에서도 허용되는 답변에 유의하십시오!
Joris Timmermans

1

다음과 같은 경우 단방향 자동 재 포맷 코드를 실행할 수 있습니다.

  1. 실제로 구현하려는 규칙과 프로그래밍 언어에 맞는 자동 포맷터를 찾으십시오.
  2. 사전 커밋을 수행하여 재 형식화가 실제 기능 변경과 혼합되어 구분할 수없는 변경 로그에 표시되지 않도록 할 수 있습니다.
  3. 팀이 어떤 컨벤션을 적용해야하는지 동의하도록 관리하십시오 (일반적으로 개발자가 개인적 선호도를 체크 아웃 할 때 "나중에 아는 바가 없습니다").

많은 경우에 실제로는 쉬운 일이 없으므로 여기서 전투를 선택하십시오! 팀이 이미 개발자 PC에서 재 포맷이 발생한 C # /. NET 프로젝트에서이 작업을 성공적으로 수행하는 것을 보았으므로 일부 상황에서는 가능합니다.


1

절대적으로 가능합니다. 그것은 작은 물건을 땀을 흘리지 않는 것입니다.

중요한 표준은 "기존 코드와 동일한 스타일을 유지하십시오"입니다. 선호하지 않는 코딩 스타일에 자신을 맞출 수 있다면 모든 코딩 스타일로 작업 할 수 있습니다.

따라서 동일한 회사 내에서 3 가지 다른 스타일로 작업하는 데있어 가장 큰 문제는 무엇입니까? 개발자는이를 이해하는 것이 필요 그들이 같은 자신의 코드를 찾을 수있는 방법으로 코드를 작성 그들이 사용하는 다른 스타일, 그들은 것을 다른 파일을 변경하면 (또는 정말 나쁜 볼 것이다) 그 스타일을 유지하기 위해 . 재 포맷은 허용되지 않습니다 (또는 계속 재 포맷되고 scm diff는 쓸모가 없습니다) (이 작업을 수행하면 자동 서식을 사용해야합니다).

일단 그들이 이것으로 가면, 어떤 스타일을 사용할지 또는 스타일이 대부분 함께 어울릴 지에 대한 합의에 이르게 될 것입니다. 그들이 유치 할 것이고 항상 서로의 코드를 다시 포맷 할 것이라면 인터넷에서 표준을 다운로드하여 사용해야 할 때입니다. 어쨌든 "좋아요"또는 "좋아요"카드로 얼굴에 손을 대고 싶을 수도 있습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.