코드 포맷 지침은 얼마나 중요합니까? [닫은]


18

코딩 표준은 모든 소프트웨어 개발 조직에서 일반적이지만 준수해야하는 중요성은 무엇입니까? 일관성이 필요하다는 것을 이해할 수는 있지만 중괄호 위치, 줄 길이 등과 같은 간단한 것들을 처리 할 때 지나치게 엄격한 표준이 소프트웨어 개발에 크게 기여하는지 확신 할 수 없습니다.

미리 정의 된 표준을 따르는 것이 아니라 코드를 읽을 수있는 것이 더 중요하지 않습니까? 어쨌든 그들은 지침과 같은 것 같습니다.

답변:


12

모든 사람에게 동일한 표준 코드 형식 지침을 100 % 준수하도록 요구하는 것은 모든 사람이 동일한 작문 스타일로 100 페이지 종이를 작성하는 것에 대해 별도로 공동 작업하도록 요구하는 것과 같습니다.

모두가 영어 (또는 같은 언어)로 논문을 쓰길 바랍니다. 그러나 다른 스타일이 분명하게 나타납니다. 어떤 사람들은 그것을 잘 쓸 것이고, 다른 사람들은 그렇지 않을 것입니다. 어떤 사람들은 수축을 사용하고 어떤 사람들은 단어를 완전히 철자 할 것입니다 (예 : 그것은 사실입니다). 기타.

나는 당신이 가장 중요한 점을 만졌다 고 생각합니다.

  1. 가이드 라인입니다
  2. 가독성

종이가 같은 글쓰기 스타일로되어있는 것처럼 코드가 같은 서식을 유지하려면 편집하고 수정해야합니다. 코드를 정리, 검토, 리팩터링해야합니다.

나는 다른 개발자의 코딩 스타일이나 형식에 완전히 만족하는 상점에 가본 적이 없습니다 (정확히 내 것과 같지 않기 때문에 최소한). 그러나 나는 그것을 읽고 이해할 수 있고 일관성이 있다면 만족할 것입니다. 다른 모든 것은 구문 설탕의 설탕입니다.

따라서 귀하의 질문에 대답하십시오 : 다소 중요하지만, 그렇지 않은 경우 세계의 끝이 아닙니다.


3
특히 # 2 : 가독성. 때로는 지침에서 벗어나 특정 코드를 더 읽기 쉽게 만들 수 있습니다.
Bart van Heukelom

오늘날의 IDE 덕분에 모든 저장 작업마다 템플릿을 기반으로 코드를 다시 포맷하면 100 %에 가까워 질 수 있습니다. 이클립스는 그것을 아주 잘한다.
Markus

1
@Markus 누군가 다른 IDE 나 편집기를 사용하기를 원할 때까지 작동합니다. 나는 개발자들에게 더 많은 자유를주기 위해 사전 커밋 된 훅으로하는 것을 선호한다.
구스타프 칼손

공정한 점 @GustavKarlsson, 이런 식으로 "표준"이 변경되는 경우 서식을 중앙 집중화하고 단일 변경 지점을 만듭니다. 해결 방법으로 (더 많은 노력을 기울이면) 항상 새 IDE에 대한 추가 템플릿을 작성할 수 있습니다.
Markus

5

형식 표준의 경우 다른 사람들이하는 일을 따릅니다. 그들이 모든 것에 PascalCase를 사용하고 있다면 PascalCase를 사용합니다. 그들이 _camelCase를 사용한다면, 나는 _camelCase를 사용합니다. 왜? 그것은 내가하는 재 포맷의 양을 제한하고, 그것을 "좋아 보이게"하기 위해 다른 사람들이해야 할 일을 제한하기 때문입니다. 형식 표준은 일반적으로 모든 사람이 쉽게 사용할 수 있도록하기 위해 존재합니다.


5

현재 업무에서 첫 번째 작업 중 하나는 개발 그룹의 코딩 표준을 마련하는 것이 었습니다.

첫 번째 노력은 약 60 페이지였습니다 (Microsoft의 프레임 워크 지침 중 상당 부분을 통합했습니다). 나는 그것을 파싱하라는 요청을 받았으며, 다음 번의 노력은 다양한 좋은 출처의 아이디어를 활용하여 10 페이지 길이였습니다. 나는 그것을 다시 깎아달라고 요청 받았으며 마침내 3-4 페이지로 떨어 졌다고 생각합니다.

결코 채택되지 않았습니다.

왜? 저는 현명한 코딩 표준을 본능적으로 따르는 많은 똑똑한 사람들과 함께 일하기 때문입니다.

필자는 Microsoft에서 일반적으로 받아 들여지는 지침을 따르고 일반적으로 사용되는 다른 스타일을 모방합니다 (Javascript 및 jQuery 는 모두 중괄호 언어이지만 C #과 다르게 형식지정 됩니다). 또한 규칙을 수시로 위반하면 코드를 더 읽기 쉽게 만듭니다.


많은 언어가 존재하고 실제로 사용되는 언어 / 프레임 워크에 표준 인 경우 왜 고유 한 코딩 표준을 작성 했습니까?
Florian Margaine

2
그것은 결코 채택되지 않았습니다 -tadaa, 답을 탐색하는 동안 내가 찾고있는 진술이있었습니다. 그것은 요점입니다. 더 많은 사람들이 많고 규칙의 복잡성과 임의성이 높을수록 팀의 대다수에 의해 채택 될 가능성은 줄어 듭니다. Visual Studio 또는 Go 언어와 같이 강제로 실행되지 않는 한 개발자는 자신의 마음을 따르는 경향이 있습니다. 코드 내용과 코드 스타일을 구분하는 IDE를 거의 10 년 동안 기다리고 있습니다.
JensG

2

이 기본 사항을 수행하는 IDE를 사용하는 경우 (예 : Visual Studio) IDE에서 IDE를 수행하고 IDE에서 수행하도록 허용하는 한 여전히 수정하기 어려운 것으로 보이는 경우 또는 자동 서식을 설정하는 다음 사람은 어쨌든 그것을 죽일 것입니다.

한 사람이 가장 읽을 수있는 것은 모든 사람에게 해당되는 것은 아닙니다.

이런 종류의 IDE를 사용하지 않는다면 하나를 얻으십시오. 10 분 이상 이것에 대해 생각하더라도 자원 IMHO의 낭비입니다.


4
동의하지 않아야합니다. 형식을 자체적으로 변경하는 IDE보다 더 짜증나는 것은 없습니다. 동의없이 코드를 수정하도록해야하는 이유는 무엇입니까? 그것은 내가 일을 끝내고 싶은 통제의 적절한 부분을 잘라냅니다.
derekerdmann

빌, IDE에서 TextBox01과 같이 생성하는 드래그 앤 드롭 명명 규칙에 대해 이야기하고 있습니까? 아니면 Resharper와 같은 Visual Studio 플러그인을 의미합니까?

데릭-그래, 그것은 성가신 일이지만, 그것에주의를 기울이지 않아도되는 시간을 90 %는 내가 그것을 레슬링 해야하는 시간의 10 %의 가치가 있습니다.
Bill

sun-나는이 경우에만 서식을 의미했습니다. 무슨 일이 일어나고 있는지 분명한 경우에만 드롭에 기본 컨트롤 이름으로 괜찮을 것입니다. 두 번째 컨트롤 이후에 여러 형태로 분리됩니다. 나는 거대한 재 샤프 팬이 아니지만 그것을 사용할 때 나는 그것이 많이 생성하는 것을 시도하고 수정하지 않습니다. 필요하지 않을 때 툴셋과 싸우지 마십시오.
Bill

동일한 팀에 여러 IDE가있을 수 있습니다 (예 : Eclipse 및 IDEA for Java). 구성 파일 형식으로 코드 형식을 설정하는 데 약간의 노력이 필요하지만 그만한 가치가 있습니다.
talonx

1

코드를 빠르게 이해하는 데 도움이되는 언급되지 않은 이점이 있다고 생각합니다. 코드 형식화가 프로젝트와 모든 개발자에 걸쳐 비슷할수록 코드를 더 쉽게 (그리고 무의식적으로) 작업 할 수 있습니다.

오랜 기간 동안 간단한 버그조차도 다루지 않은 후배 개발자들이 저를 찾아 왔습니다. 코드 형식을 적용하는 데 몇 분이 소요 된 후 이전에 놓친 버그를 신속하게 확인할 수있었습니다.

가독성은 확실히 중요하지만. 코드 형식 표준을 잘 이해하고 올바르게 사용하면 코드를 읽는 것 이상으로 코드를 더 빨리 이해할 수있을 것입니다.

코딩 형식을 개발하거나 업데이트 할 때 사용하는 지침 중 하나는 그룹화의 Gestalt 원칙입니다-http: //en.wikipedia.org/wiki/Gestalt_psychology#Gestalt_laws_of_grouping

직접적인 결과 / 예제로서 우리 코드 포맷은 모든 블록 코드 (if, switch 등)가 다음 줄에 열린 괄호를 갖도록 요구하므로 닫는 괄호와 일치합니다 :

if(true)
{
}

Principle of Symmetry에 의해, 당신의 마음은 열린 괄호와 닫는 괄호를보고 더 빨리 코드 블록을 자연스럽게 인식 할 수 있습니다.


After taking a few minutes to apply our code format with them, they were quickly able to see the bug that they had missed before.코드 형식이 버그를 확인하는 데 도움이 되었기 때문이 아닙니다. 코드를 다시 포맷하는 작업으로 인해 이전에 훑어 본 코드를주의 깊게 살펴보아야했기 때문입니다.
Brandin

1

어떤 언어 나 도구를 사용하든 무언가를 생각해 내십시오. IDE를 구성하고 구성 파일을 체크인하십시오.

누구나 프로젝트를 체크 아웃하면 동일한 서식 스타일을 사용합니다. 스타일이 무엇이든 중요하지 않으며 일관성 만 있습니다. 공백 v. 탭과 중괄호 중 어느 줄을 선호합니까? 그러나 내 자신의 취향보다 더 많은 것은 주어진 소스 코드 파일이 그 자체와 일치하는지 걱정합니다. 형식 전쟁으로 인한 혼잡보다 훨씬 더 읽기 쉽습니다.


0

내가 지금까지 만난 최악의 것은 코딩 표준을 사용하지 않는 것입니다. 그리고 diff 도구를 손상시키기 때문에 일부 코드 블록을 더 읽기 쉽게 만들 수 없습니다 ... 패치를 사용하여 변경 사항을 적용하고 있기 때문에 (변경 / 버그 수정 요청-> 수정 / 변경-> 패치-> "신뢰할 수있는"사람이 적용한 패치 -> commit) (가독성 관점에서) 꽤 재밌는 소스 코드를 얻을 수 있습니다. 적어도 우리는 두 개의 문자 변수를 사용하는 사람이 없습니다 (-.

가장 재미있는 것은 모든 사람이 우리가 이것을 바꿔야한다는 데 동의한다는 것입니다. 몇 번의 재 포맷 시도가 있었지만 (커밋시 자동), 하나의 작은 비트 형식 옵션이 누락 되었기 때문에 모든 것이 끝났습니다. 시력 ... [/ rant]


0

코드 품질 개선에 도움이되는 지침 :

  • 작가의 관점에서 : 많은 규칙이 버그의 도입을 줄이는 것을 목표로합니다. 예를 들어, 단일 지시문이 아니라 블록이 있어야 한다는 규칙 if()이나 규칙 for(;;)은 초기 코더의 의도를 명시하고 다음 코더가이를 유지하는 데 도움이됩니다.

  • 독자의 관점에서 : 합의 된 지침을 따르는 코드는 다양한 스타일의 코드보다 효율적으로 검토됩니다. 검토자는 가능한 버그를 찾을 수있는 노력을 줄이면서 더 잘 알고 있습니다.


0

팀이해야하거나하지 말아야 할 것에 대한 보편적 인 표준은 없습니다. 일부 팀은 엄격한 지침을 따라야하지만 일부는 그렇지 않습니다.

요점은 팀으로 함께 일하고 팀에 가장 적합한 것을 결정 해야한다는 입니다. 코드는 쓰여진 것보다 여러 번 읽히기 때문에 쉽게 읽을 수 있어야합니다. 팀에서 읽을 수있는 코드를 작성하기위한 지침이 필요한 경우 코딩 표준을 준수하십시오. 당신이하지 않으면하지 마십시오.

그러나 대부분의 팀은 변수, 함수 및 클래스, 위치 괄호 등을 명명하는 표준 방법에 동의하면 도움이 될 것이라고 생각합니다. 팀이 그렇게 단순한 것에 동의 할 수 없다면 어떻게 모여서 정말로 중요한 결정을 내릴 수 있을까요? 또한 팀은 영원히 같은 사람들로 구성되지 않습니다. 사람들은 떠나고 새로운 사람들은 고용됩니다. 신입 사원이 코드베이스를 이해하기 쉬울수록 코드 품질을 저하시키지 않고 팀에 더 빨리 기여할 수 있습니다.

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