소프트웨어 회사가 개발자에게 코딩 스타일을 강요해야 한다고 생각하시나요?[닫은]

StackOverflow https://stackoverflow.com/questions/145508

  •  02-07-2019
  •  | 
  •  

문제

그렇게 해서는 안 된다고 생각한다면 그 이유를 설명하십시오.

그렇다면 지침이 얼마나 깊어야 한다고 생각하시나요?예를 들어 코드 들여쓰기가 포함되어야 할까요?

도움이 되었습니까?

해결책

나는 생각한다 (a보다는 회사) 합리적으로 일관된 스타일에 대한 일련의 지침에 동의해야합니다. 유지 보수를 위해 더 간단하게 만듭니다.

얼마나 깊습니까? 당신이 동의 할 수있는만큼 얕습니다. 짧고 명확할수록 모든 팀원이 동의 할 수 있고 그에 따라 준수 할 가능성이 높습니다.

다른 팁

당신은 모든 사람들이 표준 방식으로 코드를 읽고 쓰기를 원합니다. 이를 달성 할 수있는 두 가지 방법이 있습니다.

  1. 한 번의 개발자를 여러 번 복제하고 모두 같은 교육을 받도록하십시오. 바라건대 그들은 모두 동일한 코드베이스를 쓸 수 있어야합니다.
  2. 기존 개발자에게 필요한 것에 대한 명시 적 지시를 제공하십시오. 들여 쓰기를위한 탭 또는 공간. 교정기가 앉아있는 곳. 댓글을 달리는 방법. 버전 제어 커밋 가이드 라인.

정의되지 않은 채로 더 많이 남길수록 개발자 중 하나가 스타일에 충돌 할 확률이 높아집니다.

회사는 일부 스타일을 따라야한다고 부과해야합니다. 회사의 개발자 커뮤니티는 어떤 스타일과 가이드 라인이 얼마나 깊은 지에 따라 결정해야합니다.

나는 확실히 교정기, 들여 쓰기, 이름 지정 등에 대한 지침을 분명히 설명합니다 ... 당신은 가독성과 유지 관리에 대한 코드를 작성합니다. 항상 다른 사람이 코드를 읽을 것이라고 가정합니다. 코드를 자동으로 형식화 할 수있는 도구가 있으며 모든 사람이 도구를 사용하도록 요구할 수 있습니다.

.net에있는 경우 Stylecop, FXCop 및 Resharper를보십시오.

소프트웨어 회사가 개발자에게 코딩 스타일을 부과해야한다고 생각하십니까?

하향식 방식이 아닙니다. 소프트웨어 회사의 개발자는 일반적인 코딩 스타일에 동의해야합니다.

그렇다면, 지침은 당신의 의견에 얼마나 깊어야합니까?

그들은 편차를 최소화하려고 잘 알려진 규칙과의 차이 만 설명해야합니다. 이것은 Python 또는 Java와 같은 언어가 쉽고 C/C ++의 경우 다소 흐리며 Perl과 Ruby에게는 거의 불가능합니다.

예를 들어, 코드의 압입이 포함되어야합니까?

예, 코드를 훨씬 더 읽기 쉽게 만듭니다. 공간 대 탭 및 (공백을 선택하는 경우) 수의 공간 문자로 인기를 일관되게 유지하십시오. 또한 긴 줄에 대한 마진 (예 : 76 숯 또는 120 숯)에 동의합니다.

예, 그러나 이유 안에 있습니다.

모든 현대 IDE는 1 키 스트로크 코드를 매우 인쇄하여 제공하므로 "압입"포인트는 제 생각에 상당히 관련이 없습니다.

더 중요한 것은 모범 사례를 설정하는 것입니다. 예를 들어, 가능한 한 작은 "out"또는 "ref"매개 변수를 가능한 한 사용합니다 ...이 예에서는 두 가지 장점이 있습니다 : 가독성을 향상시키고 많은 실수를 수정합니다 (많은 실수를 수정합니다). 아웃 매개 변수는 코드 냄새이며 아마도 리팩토링되어야합니다).

그것을 넘어서는 것은 내 정직한 견해로는 약간의 "항문"과 불필요하게 짜증이납니다.


Hamish Smith의 좋은 지적 :

스타일은 모범 사례와는 상당히 다릅니다. '코딩 표준'이 두 사람을 함께 굴리는 경향이 있다는 것은 부끄러운 일입니다. 사람들이 스타일 부분을 최소로 유지하고 더 많은 가치를 더할 수있는 모범 사례에 집중할 수 있다면.

나는 개발팀이 일반적으로 따라야 하는 스타일 지침을 가져야 한다고 생각하지 않습니다.예를 들어 예외가 있습니다. <> 사용 대#include 문에 있는 "", 그러나 이러한 예외는 필요에 따라 발생해야 합니다.

사람들이 스타일 지침이 필요한 이유를 설명하는 가장 일반적인 이유는 공통 스타일로 작성된 코드가 개별 스타일로 작성된 코드를 유지 관리하기가 더 쉽다는 것입니다.나는 동의하지 않습니다.전문 프로그래머라면 다음과 같은 내용을 보고도 당황하지 않을 것입니다.

for( int n = 0; n < 42; ++42 ) {
 // blah
}

...이것을 보는 데 익숙해지면:

for(int n = 0; n < 42; ++42 )
{
 // blah
}

더욱이, 단순히 스타일을 인식하여 원래 코드를 작성한 프로그래머를 식별할 수 있다면 어떤 경우에는 코드를 유지 관리하는 것이 실제로 더 쉽다는 것을 발견했습니다.예상치 못한 일을 한 기술적 이유를 알아내는데 하루 중 더 많은 시간을 소비하는 대신 10분 만에 그렇게 복잡한 방식으로 기즈모를 구현한 이유를 물어보세요.사실, 프로그래머는 자신의 추론을 설명하기 위해 코드에 주석을 달았어야 했지만 실제 프로그래머는 그렇지 않은 경우가 많습니다.

마지막으로 Bill이 코드를 보는 데 3초를 더 적게 소비할 수 있도록 Joe가 백스페이스로 이동하고 중괄호를 이동하는 데 10분이 걸린다면 Bill이 그에게 자연스럽지 않은 작업을 수행하도록 만드는 데 실제로 시간이 절약되었습니까?

일관된 코드베이스를 갖는 것이 중요하다고 생각합니다. UR 코드의 유지 관리 가능성을 증가시킵니다. 모든 사람이 동일한 종류의 코드를 기대하면 쉽게 읽고 이해할 수 있습니다.

게다가 오늘날의 IDE와 자동 지정 기능을 감안할 때 번거 로움은 많지 않습니다.

추신 : 나는 다음 줄에 버팀대를 두는이 성가신 습관이 있습니다 :). 다른 사람은 그것을 좋아하지 않는 것 같습니다

프로그래머는 다른 프로그래머의 스타일에 적응할 수 있어야 한다고 생각합니다.새로운 프로그래머가 적응할 수 없다면 이는 일반적으로 새로운 프로그래머가 회사의 스타일을 사용하기에는 너무 완고하다는 것을 의미합니다.우리 모두가 각자의 일을 할 수 있다면 좋을 것입니다.그러나 우리 모두가 기본적인 지침에 따라 코딩하면 디버깅과 유지 관리가 더 쉬워집니다.이는 표준이 잘 ​​고려되어 있고 너무 제한적이지 않은 경우에만 해당됩니다.

모든 것에 동의하지는 않지만 이 책에는 표준에 대한 훌륭한 출발점이 포함되어 있습니다.

최상의 솔루션은 IDE가 이러한 형식을 메타 데이터와 관련하여 고려하는 것입니다. 예를 들어, 오프닝 곱슬 브레이스 위치 (현재 라인 또는 다음 줄), 연산자 주변의 압입 및 공백은 소스 파일을 변경하지 않고 구성 할 수 있어야합니다.

제 생각에는 표준과 스타일 가이드가 필요하다고 생각합니다. 코드 기반이 커지면 일관성을 원하기 때문입니다.

부수적으로, 그것이 내가 Python을 좋아하는 이유입니다. 이미 응용 프로그램을 구성하는 방법에 대해 많은 규칙을 부과하기 때문입니다. Perl, Ruby 또는 극도의 자유가있는 곳과 비교하십시오 (이 경우별로 좋지는 않습니다).

표준이 응용 프로그램의 개발 방식과 코드의 모습을 정의하는 데 많은 이유가 있습니다. 예를 들어 모든 사람이 동일한 표준을 사용하는 경우 자동 스타일 검사기는 프로젝트 CI의 일부로 사용할 수 있습니다. 동일한 표준을 사용하면 코드 가독성이 향상되며 동일한 코드를 다른 방식으로 다시 요약하는 것에 대한 팀원 간의 긴장을 줄이는 데 도움이됩니다. 그러므로:

  • 특정 팀이 개발 한 모든 코드는 정확히 동일한 표준을 따라야합니다.
  • 특정 프로젝트를 위해 개발 된 모든 코드는 정확히 동일한 표준을 따라야합니다.
  • 같은 회사에 속한 팀이 동일한 표준을 사용하는 것이 바람직합니다.

아웃소싱 회사에서 고객이 자신의 표준을 시행하려면 고객을 위해 일하는 팀에게는 예외가 될 수 있습니다. 이 경우 팀은 회사가 사용하는 것과 호환되지 않을 수있는 고객의 표준을 채택합니다.

다른 사람들이 언급했듯이, 엔지니어링이나 팀에 의한 것이 필요하다고 생각합니다. 회사 (즉, 비즈니스 단위)는 그러한 종류의 결정에 관여해서는 안됩니다.

그러나 내가 추가 할 또 다른 것은 도구에 의해 시행되어야한다는 것입니다. ~ 아니다 사람들에 의해. 최악의 시나리오 인 IMO는 과도한 문법 스노브 (예, 우리는 존재합니다. 우리 자신의 냄새를 맡을 수 있기 때문에 알고 있습니다)는 아무도 실제로 읽거나 따르지 않는 코딩 지침 세트를 요약 한 문서를 씁니다. 그들은 시간이 지남에 따라 더 이상 사용되지 않으며, 새로운 사람들이 팀에 추가되고 노인들이 떠날 때, 그들은 단순히 부실 해집니다.

그런 다음 일부 갈등이 발생하고 누군가가 코딩 스타일에 대해 다른 사람과 대면 해야하는 불편한 입장에 처해 있습니다.이 일종의 대립은 사람들이 아닌 도구에 의해 수행되어야합니다. 요컨대,이 집행 방법은 가장 바람직하지 않습니다. 제 생각에는 무시하기가 너무 쉽고 프로그래머들에게 어리석은 것들에 대해 논쟁하도록 간단히 구걸하기 때문입니다.

더 나은 옵션 (IMO)은 빌드 환경이이를 지원하는 한 컴파일 타임 (또는 유사한 것)에 경고를하는 것입니다. VS.NET에서이를 구성하는 것은 어렵지 않지만 유사한 기능을 가진 다른 개발 환경을 알지 못합니다.

스타일 가이드 라인은 설계 나 개발에 관계없이 매우 중요합니다. 왜냐하면 그들은 공동 작업 (또는 오래된 프로젝트의 조각을 선택할 때 순차적으로 혼자서 일하는 사람들의 의사 소통과 성능 속도를 높이기 때문입니다. 아니다 회사 내에서 컨벤션 시스템을 갖는 것은 사람들에게 최대한 비생산적이라는 것을 요구하는 것입니다. 대부분의 프로젝트에는 협업이 필요하며, 프로그래밍 절단을 행사하고 현재를 유지하려는 자연스러운 욕구에 취약 할 수없는 프로젝트조차 필요합니다. 학습하려는 우리의 욕구는 우리의 일관성을 방해합니다. 이는 그 자체로 좋은 일이지만, 새로운 직원을 미치게 만들 수 있습니다.

선과 악을위한 다른 시스템과 마찬가지로, 가이드의 진정한 힘은 사람들의 손에 달려 있습니다. 개발자 자체는 필수적이고 유용한 부품이 무엇인지 결정한 다음 사용하기를 바랍니다.

법처럼. 또는 영어.

스타일 가이드는 원하는만큼 깊어 야합니다. 브레인 스토밍 세션에 나오면 포함되어야합니다. 하루가 끝날 무렵 스타일 가이드를 "강요"할 방법이 없기 때문에 질문을 한 것은 이상한 일입니다.

rtfm, 좋은 물건을 수집하고 그것에 참여하십시오.

예, 회사는해야한다고 생각합니다. 개발자는 코딩 스타일에 익숙해 져야 할 수도 있지만 제 생각에는 좋은 프로그래머는 코딩 스타일로 작업 할 수 있어야합니다. Midhat가 말했듯이 : 일관된 코드베이스를 갖는 것이 중요합니다.

나는 이것이 OpenSource 프로젝트에도 중요하다고 생각합니다. 코드를 작성하는 방법을 알려주는 감독자는 없지만 많은 언어에는 코드의 이름 지정 및 구성에 대한 사양이 있습니다. 이는 OpenSource 구성 요소를 프로젝트에 통합 할 때 많은 도움이됩니다.

물론 가이드 라인은 좋으며, 헝가리어 표기법이 잘못 사용되지 않는 한 (ha!) 일관성을 향상시키고 다른 사람들의 코드를 더 쉽게 읽을 수있을 것입니다. 지침은 프로그래머에 대한 엄격한 규칙이 아니라 지침이어야합니다. 당신은 내 버팀대를 어디에 두어야하는지 또는 온도와 같은 이름을 사용하지 않겠다고 말할 수 있지만, 당신이 할 수없는 일은 배열 괄호 안에 인덱스 값 주위의 공백을 강요하는 것입니다 (한 번 시도했습니다 ...)

예.

코딩 표준은 특정 조직 내의 코드가 가장 놀라움의 원칙을 따를 수 있도록하는 일반적인 방법입니다. 변수 명명에서 곱슬 머리 사용에 이르기까지 변동에서 시작하는 표준의 일관성.

자신의 스타일과 자신의 표준을 가진 코더는 특히 큰 프로젝트에서 일관성이없고 혼란스럽고 읽기에 실망스러운 코드베이스 만 생성합니다.

이것들 내가 일했던 회사의 코딩 표준입니다. 그것들은 잘 정의되어 있으며, 그들에게 익숙해지는 데 시간이 걸렸지 만, 우리 모두가 코드를 읽을 수 있고 완전히 통일되었음을 의미했습니다.

코딩 표준이 회사 내에서 중요하다고 생각합니다. 아무도 설정되지 않으면 개발자 사이에 충돌이 발생하고 가독성 문제가 발생할 것입니다.

코드를 완전히 통합하는 것은 최종 사용자에게 더 나은 코드를 제공합니다 (따라서 한 사람이 작성한 것처럼 보입니다. 최종 사용자의 관점에서 볼 때 그 사람은 "회사"입니다. 또한 팀 내의 가독성에 도움이됩니다 ...

일반적인 코딩 스타일은 일관성을 높이고 다른 사람들이 자신의 작품뿐만 아니라 전체 코드 기반을 쉽게 이해, 유지 및 확장 할 수있게합니다. 또한 새로운 사람들이 코드를 더 빨리 배울 수 있습니다. 따라서 모든 팀은 코드 작성 방법에 대한 지침이 있어야합니다.

중요한 가이드 라인에는 (특정 순서없이)가 포함됩니다.

  • 공백과 들여 쓰기
  • 표준 주석 - 파일, 클래스 또는 메소드 헤더
  • 명명 컨벤션 - 클래스, 인터페이스, 변수, 네임 스페이스, 파일
  • 코드 주석
  • 프로젝트 조직 - 폴더 구조, 바이너리
  • 표준 라이브러리 - 사용할 템플릿, 제네릭, 컨테이너 등
  • 오류 처리 - 예외, hresults, 오류 코드
  • 스레딩 및 동기화

또한 팀 스타일에 적응할 수 없거나 적응할 수없는 프로그래머에 대해 조심해야합니다. 팀 규칙 중 하나에 의해 플레이하지 않으면 다른 팀 규칙도 플레이하지 않을 것입니다.

일관성이 핵심이라는 데 동의합니다. 일부 개발자 중 일부는 IDE를 사용하는 것을 좋아하지 않을 수도 있고, 수천 개의 소스 파일의 코드 기반을 통해 트롤링 할 때는 예쁜 일을 할 수 없기 때문에 IDE를 절약하기 위해 IDE에 의존 할 수 없습니다. 작업을 시작할 때 모든 파일을 인쇄하고 나중에 롤백을 수행하여 VCS가 모든 변경 사항을 다시 커밋하려고 시도하지 않도록하십시오 (모든 사람에게 부담을주는 불필요한 업데이트로 저장소를 막으십시오).

최소한 다음을 표준화하는 것이 좋습니다 (중요 순서가 감소) :

  • 공백 (일부 공유 도구의 자동 인쇄를 준수하는 스타일을 선택하면 가장 쉬운 일입니다).
  • 이름 지정 (파일 및 폴더, 클래스, 기능, 변수 ...)
  • 주석 (자동 문서 생성을 허용하는 형식 사용)

내 의견 :

  • 모든 기본 규칙은 모든 사람이 코드를 읽고 유지하는 데 도움이되므로 좋습니다.
  • 너무 많은 규칙이 코드를 배치하는 명확한 방법으로 개발자가 혁신을 막기 때문에 나쁘다.
  • 개별 스타일은 코드 파일의 기록을 결정하는 데 유용 할 수 있습니다. Diff/Blame 도구를 사용할 수 있지만 힌트는 여전히 유용합니다.

Modern Ides를 사용하면 형식 템플릿을 정의 할 수 있습니다. 기업 표준이있는 경우, 관심있는 모든 형식 값을 정의하는 구성 파일을 개발하고 코드를 확인하기 전에 모든 사람이 Formatter를 실행하는지 확인하십시오. 더 엄격하고 싶다면 버전 제어 시스템에 커밋 후크를 추가하여 코드가 수락되기 전에 코드를 들여 쓰기 할 수 있습니다.

예, 공통 명명 표준을 사용하는 관점에서도 클래스 및 파일 뒤에있는 클래스 및 코드의 일반적인 레이아웃을 사용하는 것입니다. 다른 모든 것이 열려 있습니다.

모든 회사는해야합니다. 일관된 코딩 스타일은 팀 전체에 걸쳐 코드베이스의 재 입장 가능성과 유지 보수 가능성을 보장합니다.

내가 일하는 가게에는 통일 코딩 표준이 없으며, 우리 (팀으로서) 우리가 그로 고통 받고 있다고 말할 수 있습니다. 개인의 의지가 없으면 (일부 동료의 경우와 같이), 팀 리더는 테이블에 주먹을 치고 일부 형태의 표준화 된 코딩 가이드 라인을 부과해야합니다.

Ever 언어에는 커뮤니티에서 사용되는 일반적인 표준이 있습니다.해당 언어에 익숙한 다른 사람들이 귀하의 코드를 유지 관리할 수 있도록 가능한 한 이를 따라야 하지만 이에 대해 독재할 필요는 없습니다.

회사 코딩 표준은 일반적으로 너무 엄격하고 해당 언어를 사용하는 일반 커뮤니티와 원활하게 소통할 수 없기 때문에 공식 표준을 만드는 것은 잘못된 것입니다.

팀원이 실제로 코딩 스타일에 문제가 있는 경우 코드 검토에서 그룹이 부드럽게 제안하는 것은 좋은 생각이 아닙니다.

코딩 표준 : 예. 이 스레드에서 이미 다루는 이유로.

스타일링 표준 : 아니오. 당신의 읽기 쉬운, 나의 당황한 쓰레기이며, 그 반대도 마찬가지입니다. 좋은 의견과 코드 팩터링은 훨씬 더 큰 이점을 가지고 있습니다. 또한 GNU의 들여 쓰기.

Ilya의 대답은 가독성의 중요성과 집행 메커니즘으로 지속적인 통합의 사용을 포함하기 때문에 좋아합니다. Hibri는 FXCOP를 언급했으며 빌드 프로세스에서의 사용을 빌드가 통과하는지 또는 실패 여부를 결정하는 기준 중 하나로 표준을 문서화하는 것보다 더 유연하고 효과적 일 것이라고 생각합니다.

코딩 표준을 적용해야하며 거의 항상 팀 수준에 있어야한다는 데 전적으로 동의합니다. 그러나 몇 가지 예외가 있습니다.

팀이 다른 팀이 사용할 코드를 작성하는 경우 (여기서는 다른 팀이 소스를 도서관으로 사용하는 것이 아니라 소스를 봐야한다는 것을 의미합니다). 그것을 사용합니다. 마찬가지로 회사의 정책이 한 팀에서 다른 팀으로 프로그래머를 자주 이동하거나 한 팀이 다른 팀의 코드를 재사용하려는 위치에있는 경우 회사 전체의 표준을 부과하는 것이 가장 좋습니다.

규칙에는 두 가지 유형이 있습니다.

A 형 컨벤션 : "제발 이걸 해봐, 더 낫다"

그리고 B 형 : "도로의 오른쪽에서 운전하십시오", 모든 사람이 같은 방식으로하는 한 다른 쪽에서 운전해도 괜찮습니다.

별도의 팀과 같은 것은 없습니다. 좋은 회사의 모든 코드는 어떻게 든 연결되어 있으며 스타일은 일관성이 있어야합니다. 20 가지 스타일보다 새로운 스타일에 익숙해지는 것이 더 쉽습니다..

또한 새로운 개발자는 기존 코드베이스의 관행을 존중하고이를 따라갈 수 있어야합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top