코딩 표준이 엄청나게 도움이된다는 것이 입증되었습니다. 그러나 프로그래머가 선호하는 표준으로 포맷 할 수있는 다양한 도구와 IDE가 있습니다. 코드가 깔끔하고 주석 처리 된 (스파게티 엉망이 아닌 한) 코딩 표준이 필요하지 않습니다.
코딩 표준 개발에 대한 논쟁이 있습니까? (우리는 없지만 표준을 만들려고했습니다)?
코딩 표준이 엄청나게 도움이된다는 것이 입증되었습니다. 그러나 프로그래머가 선호하는 표준으로 포맷 할 수있는 다양한 도구와 IDE가 있습니다. 코드가 깔끔하고 주석 처리 된 (스파게티 엉망이 아닌 한) 코딩 표준이 필요하지 않습니다.
코딩 표준 개발에 대한 논쟁이 있습니까? (우리는 없지만 표준을 만들려고했습니다)?
답변:
그러나 프로그래머가 선호하는 표준으로 포맷 할 수있는 다양한 도구와 IDE가 있습니다.
좋은 성과 있길 바래요. 내 경험에 따르면 X 형식에서 Y 형식으로 코드를 올바르게 다시 포맷 할 수있는 도구 (0!)가 거의 없습니다. 너무 많은 것들이 있습니다. 탭 대 공백, 여러 줄 문장 등. C ++ 표준 라이브러리 파일의 GNU 구현을 살펴보십시오. 당신이 할 수있는 일은 IDE가 탭 대신 항상 공백을 사용하고 외래 코드를 다시 포맷하는 것을 방해하지 않는 것입니다. 이제 코드는 원하는 방식으로 보이고 외래 코드는 원래 작성자가 작성한 방식으로 보입니다.
특정한 들여 쓰기 스타일은 코딩 표준이 마지막으로 지정해야하는 것입니다. 그것은 프로그래밍 종교 전쟁을 시작하는 것입니다. 코딩 표준 인 IMO는 수용 가능한 들여 쓰기 스타일의 합리적인 모음을 지정해야하지만 세부 사항은 패키지 작성자에게 맡겨야합니다. 들여 쓰기 스타일은 코딩 표준의 작은 부분이거나 그와 같아야합니다. 코딩 표준의 규칙 번호 제로 : 작은 것을 땀 내지 마십시오. 들여 쓰기 스타일은 작은 것입니다.
더 큰 것들 :
부록
아마도 더 중요한 것은 코딩 표준에 포함 하지 않는 것입니다. 요구 사항 작성 방법과 같은 항목은 코딩 표준에 속하지 않습니다. 테스트에 대한 세부 사항도 속하지 않습니다. 프로젝트는 프로젝트 관리 계획, 테스트 관리 계획, 검증 및 검증 계획 등의 표준으로 코딩 표준을 사용해서는 안됩니다. 코딩 표준의 목표는 코드 안전성, 품질, 이해도, 유지 보수성, 그리고 다른 "영양". 이런 일이 일어나지 않도록하는 방법은 많이 있습니다. 단지 몇 가지 : 표준을 일부 국가의 세법과 같이 복잡한 책으로 만들고, 프로그래밍 전쟁을 일으키고, 명명 규칙이 잘못되었습니다.
코딩 표준은 의도하지 않은 결과를 초래할 수 있습니다. 예 : 프로젝트 엔지니어의 일부 바보는 "숫자가 지배 마법"는 것을 의미하는 것으로 해석하는 것입니다 if (index == 0) {...}
및 for (ii = 0; ii < 3; ++ii) {...}
변경되어야합니다 if (ZERO == index) {}
및 for (ii = ZERO; ii < NUMBER_OF_DIMENSIONS_IN_THE_UNIVERSE; ++ii) {...}
음주 웃지. 나는 그것이 일어나는 것을 보았다. 요즘 코딩 표준을 작성할 때 이런 어리 석음에 대항하기위한 규칙이 아니라 "매직 넘버 가이드 라인"이 아닙니다.
코딩 표준은 나쁜 프로그래밍 스타일 / 위험한 코딩 관행에 대한 최고의 방어책이 아닙니다. 코드 검토입니다. 수년간의 자동화에도 불구하고, 다소 주관적인 인간의 눈으로 코드 덩어리를보고 판단하는 것보다 낫지는 않습니다.
코딩 표준은 선호하는 매개 변수에 관한 것이 아니라 indent
명명 규칙, 주석 규칙 및 관용구, 언어 기능 사용 등에 대한 많은 권장 사항을 포함합니다.
요컨대,이 모든 것을 어딘가에 문서화해야합니다. 마지막으로 모든 사람이 코드를 다시 포맷하는 IDE를 사용하고 싶지는 않을 것입니다 ...
팀 내에서 일관된 스타일을 사용하면 코드를 쉽게 읽을 수 있습니다. 코드를 쉽게 읽을 수있게되면 팀의 생산성이 향상됩니다. 코드를 정신적으로 분석 할 필요가 없기 때문에 생산성이 높아지고 코드를 검토하고 유지 관리 할 때 구문보다는 논리에 집중할 수 있습니다.
각 사용자가 IDE가 자신의 선택에 따라 코드를 다시 포맷하도록하는 경우 두 가지 문제 중 하나가 발생합니다. 저장시 항상 원래 형식으로 다시 변환하거나 diff가 많은 노이즈를 표시한다는 사실을 겪어야합니다. 코드의 논리에서 무엇이 바뀌 었는지보기가 더 어려워졌습니다.
짧은 답변 : 예, 품질을 반영합니다 .
코딩 표준은 매우 중요한 고품질 소프트웨어입니다. 그들은 이렇게 증가 생산성을 유지 할 수 있도록 코드를 쉽게 개발 과정에서, 한 사람 또는 팀에 연결되는 코드를 유지한다. 코딩 표준의 일관성은 또한 조기에 작성된 코드와 잘 만들어진 예술을 구별합니다.
모든 개발자는 코딩 규칙이 좋다는 것을 알고 있습니다. 그러나 표준은 어디에서 오는가?
주로 제품을 소유 한 공급 업체가 지시합니다. 모든 개발자는 다양한 산업 코딩 표준 중에서 선택할 수 있습니다. 일부 회사는 Microsoft, Oracle 및 Sun Microsystems가 지침을 제공합니다.
코딩 표준 개발에 대한 논쟁이 있습니까? (우리는 없지만 표준을 만들려고했습니다)?
예, 사용하도록 권장되는 산업 표준이 있습니다. 그러나 각 코딩 표준은 개발 플랫폼에 따라 다릅니다. 따라서 코딩 표준은 대부분 언어에 따라 다릅니다. 예를 들어 Java의 표준은 .NET과 다릅니다. 예를 들어 C # .NET은이 참조에서 해당 표준을 사용합니다 .
공통 표준은 프로그래밍 언어에 의존하지 않습니다. 공급 업체가 제공 한 표준 (일명 언급 된 산업 코딩 표준) 외에도 헝가리 표기법 또는 CamelCase 와 같은 다른 프로그래밍 표기법이 있습니다 . Microsoft .NET 코딩 표준은 처음에 CamelCase 표기법을 기반으로 한 것 같습니다.
모든 개발 팀 은 프로젝트가 시작되는 즉시 코딩 표준에 동의해야합니다. 코딩 지침은 일반적으로 팀장 또는 회사의 수석 아키텍트가 작성합니다. 일반적으로 필요에 따라 따르고 개선해야하는 공개 문서입니다. 예를 들어, 회사에는이 문서가 업로드되어 회사 개발자가 사용할 수있는 Wiki 페이지가 있습니다.
While Not
완전히이어야합니다 Do Until
.
논란의 여지가있는 의견을 받아들이고 코딩 표준이 필요하지 않다고 말할 것 입니다. 당신이 말하는 것처럼, 규칙은 IDE 시행 지침, 모든 회사의 모든 사람들이 따라야 할 일반적인 모범 사례이거나, 유능한 팀에서 한 사람 이상이 수행해야하는 팀별 판단 요청입니다. 페어 프로그래밍 또는 코드 리뷰를 통해.
이 변수의 이름을 어떻게 지정해야합니까? 어떤 언어 기능을 사용해야합니까? 피해야합니까? 어떤 테스트가 가장 좋습니까? 이것은 우리가 지금 작업하고 있는 좁게 정의 된 문제에 직면 할 때까지 응답하지 않는 것이 가장 좋습니다 .
이러한 미세한 결정을 통해 결정된 현재 문제 영역과 사용중인 기술의 교차점에 따라 팀 내의 비공식 표준 / 패턴이 발생할 수 있습니다. 이를 체계화한다는 것은 수백 가지의 미세한 결정에 따라이 프로젝트에 사용 된 명명 표준, 적절한 언어 하위 집합 등과 같은 것들이 팀에 의해 비공식적으로 채택되어야한다는 것을 의미합니다.
원칙적으로 그것은 대단한 것 같지만 실제로는 정치의 자석이됩니다. 모든 사람이 어떤 도구를 사용해야합니까? 다른 사람들이 무엇을 피하도록 강요하고 싶습니까? 모든 사람이이 질문에 동의하면 표준이 필요하지 않습니다. 우리는 그냥 할 것입니다. 내 경험상 표준은 개발자의 한 하위 집합이 다른 하위 집합에 대한 통제력을 행사하기를 원합니다. 일반적으로 이러한 유형의 정치 및 그 뒤에 따르는 기술 정책은 지침을 제공하는 대신 혁신을 방해합니다.
도움이되지 않는 규칙이 많은 표준을 읽는 대신 실제 지침 을 원한다면 팀의 유능한 구성원을 찾아서 그들이 어떻게 생각하는지 물어보십시오. 그들은 무엇을 태웠습니까? 코드 작성을 제안하는 방법은 무엇입니까? 귀중한 경험을 바탕으로 다양한 유용한 답변을 얻을 수 있습니다. 일반적인 경험을 바탕으로 많은 교차점이 보입니다. 표준에 의해 시행되는 단일 문화 대신, 문제를 해결하기위한 많은 유효한 방법을 보는 데 도움이되는 다양한 다양성이 있습니다.
누군가가 "표준"에서 규칙의 원인을 밝히지 말라고 주장하지만 그들의 주장에 대한 경험이나 합리적인 백업이 없다면 무시하십시오. 이 표준은 누구에게나 제공되지 않았거나 더 나은 개발자가되었습니다.
이제 상용 항공기가 와이어로 연결되므로 조종사 입력 작업을 기반으로 비행기를 비행하는 프로그램을 원할 것입니다. 프로그래머가 그러한 코드를 작성할 때 일반적으로 피할 수있는 프로그래밍 오류를 피하기 위해 엄격한 규칙을 따르기를 바랍니다. 이를 수행하는 한 가지 방법은 코딩 표준을 사용하는 것입니다.
참조 : 미국 연방 항공청 C 및 C ++ 코딩 표준 제안
더 말할 필요가 있습니다.
참고 : FAA 온라인에서 실제 표준을 찾을 수는 없지만 보았습니다.
저에게는 징계 문제와 징계 문제가 항상 도움이됩니다.
그렇게 말하면서, 코딩 표준을 IDE 및 / 또는 도구의 사용 상태를 유지하게 만들 것입니다. 또한 각 개발자마다 IDE를 동일하게 구성해야합니다 (예 : 각 개발자의 IDE는 들여 쓰기를 위해 모든 탭 또는 모든 공백을 사용해야하고 모든 IDE는 동일한 탭 길이를 가져야합니다).
또한 체크인 스크립트를 개발하고 사용하여 코딩 표준을 어느 정도 준수 할 수 있습니다. 예를 들어 체크인 된 파일을 실제로 버전 제어 시스템에 커밋하기 전에 들여 쓰기를 수정할 수 있습니다.
코딩 표준은 더 이상 중요 할 수 없습니다! 나는 열렬한 CakePHP 사용자이며 버전마다 변경 사항을 검토하고 개발자는 표준을 따르지 않습니다.
사실, 나는 스타일의 차이에 너무 화가 나서 코딩 규칙에 대한 짧은 Rant 를 작성해야했습니다 . 새로운 개발자를 기존 팀에 데려 오는 데 많은 시간과 비용이 소요됩니다. 표준없이 새로운 개발자를 데려 오는 것을 상상해보십시오.