왜 내가 코드를 수직으로 정렬해야 하는지 (너도 그래야지!)

3457 단어
지난주 Hacker News에서 Linux Kernel 코드 스타일에 대해 흥미로운 토론을 벌였다.
토론 중에, 나는 코드를 수직으로 맞추어 작은 성전을 일으켜서는 안 된다.전적으로 지지합니다!내가 자세히 말할게.
수직 정렬이란 무엇입니까?
예를 들면 다음과 같습니다.
int robert_age = 32;
int annalouise_age = 25;
int bob_age = 250;
int dorothy_age = 56;

다음 코드는 읽기 쉽습니다.
int robert_age     = 32;
int annalouise_age = 25;
int bob_age        = 250;
int dorothy_age    = 56;

제가 한 번 훑어보면'bob 'age가 좀 정상이 아니다.나는 쓸데없는 일을 할 필요가 없다. 그것들이 모두 정수라는 것을 쉽게 알아차릴 수 있다.
이 의견은 아직 널리 공유되지 않았기 때문에 왜 많은 사람들이 이것이 유용한 스타일 매뉴얼이라고 생각하는지 설명하고자 한다.
이해하다.
90퍼센트의 프로그래밍 작업은 문제를 해결하기 위한 것이고 나머지 10퍼센트의 작업은 90퍼센트의 시간을 써서 문제가 어떻게 해결되었는지 이해해야 한다.(주1)
코드를 읽는 것과 산문을 읽는 것은 매우 크게 다르다.우리는 작가가 그들의 문장을 명확하게 해석할 수 있기를 기대한다. 그들이 선택한 언어로 너무 지루하게 상관없는 것을 말하는 것이 아니라, 우리는 모두 일반적인 문법 풍격을 기대한다.
확실히 Kernel 코드 스타일은 이 점을 강조했다.코드의 용도만큼 변수의 이름을 선택하는 것이 중요하다.
다음 코드를 고려하십시오.
var thinG=doIt(thestuff,MORE_sTuff); /* LOL! */

설령 네가 코드 라이브러리에 대해 깊이 이해한다고 해도, 그것은 특별히 읽기 쉬운 코드 줄은 아니다.
var totalBill = apply_tax(initialBill, taxRate);

뚜렷한 응용 프로그램은 명명 습관, 간격, 대문자를 빌려 코드를 더욱 쉽게 읽을 수 있도록 해야 한다.우리 코드를 인수한 불쌍한 녀석이 코드를 해독하는 데 더 적은 시간을 들이고 이해하는 데 더 많은 시간을 들이겠다는 뜻이다.
왜 등폭 글꼴을 사용합니까?
모든 유명하고 상투적인 설전에서 실력이 기본적으로 비슷한 두 진영, 즉 등관서체(주2)VS비례서체(주3)의 논쟁이 있었다.
어떤 이교도들은 너에게 비례 글씨체가 최고라고 말할 것이다. 이교도들을 무시하라.다른 이교도들은 비례 서체가 가지고 있는 상등의 순결도를 논쟁할 때 당신의 마음에 불협화음을 남긴다. 불쌍하고 비난받는 영혼들이야.
결국 가독성으로 귀결된다.당신은 어떤 것이 당신이 코드를 이해하는 데 가장 쉽게 도움을 줄 수 있다고 생각합니까?왜 IDE에 착색 방안이 있습니까? 따라서'foo'가 함수, 상수, 변수, 주석인지 한눈에 알 수 있습니다.이 코드의 용도를 더 빨리 이해할 수 있다면, 그것은 좋은 것이다!
이것도 역시 스프레드시트가 이렇게 환영받는 원인 중의 하나다.열이 가독성을 높였다.너는 한 줄을 빠르게 훑어볼 수 있을 뿐만 아니라, 어떤 줄과 다른 줄이 뚜렷하게 다른지 주의할 수 있다.
저희는 공구가 없어요.
흥미로운 것은 Hacker News에서 토론한 바와 같이, 내가 직면한 가장 큰 비판은 수직 정렬이 유용한지와 무관하고, 우리의 도구가 얼마나 엉망인지이다.
"이것은 diff의 가독성과 가용성을 파괴한다. 예를 들어 어떤 상수를 수정했기 때문에 심각한 버그를 신속하게 추적해야 한다. 수평으로 배열된 코드에 대해 diff는 수정된 모든 줄을 포함해서 관건적인 수정을 덮을 수도 있다. 빈칸을 무시하는 변통 방안과 단어를 기반으로 한 diff도 있지만, 본인의 우견으로는 이렇게 번거로울 필요가 없다.
——Andreas van Cranenburgh
...그리고...
만일 50줄의 값 부여 문구가 있다면, 모든 값을 가장 큰 값과 맞추면, 값 부여 문구를 추가하면 50줄 코드를 업데이트할 수 있다.나는 이미 이런 상황을 만났다. 그때마다 그렇게 값을 맞추지 않는 것이 얼마나 중요한지 알게 되었다.
——scrollaway
이런 논점들은 어떤 언어 환경에서는 합리적이지만, 더욱 좋은 도구가 필요하다는 것을 설명한다.
Elastic Tabstops-코드 블록을 자동으로 배열하는 방법이 생각납니다.
By Nick Gravgaard
공구는 이런 작업 방식을 쉽게 수용할 수 있다.컴퓨터는 우리를 위해 단조롭고 반복적인 작업을 하는 것이다. CPU 주기의 낭비는 코드를 더욱 읽을 수 있게 하는 데 있어서의 대가로 이미 충분히 싸다.
Linux Kernel에는 수직 배열로 코드를 인간 분석에 더욱 편리하게 하는 사례도 많다.
수직 배열은 모든 장면에 적용되지 않지만 빠른 평가 코드에 대한 가독성은 비길 데가 없다.
코드는 창조적인 플랫폼이다. 우리는 이 플랫폼을 통해 생각을 표현한다.만약 도구가 이러한 생각을 이해하는 데 어려움을 증가시켰다면, 우리가 아니라 도구를 바꿔야 한다.
메모
90-90법칙(ninety-ninety rule, 99법칙)은 컴퓨터 프로그래밍과 소프트웨어 공학 분야의 유명한 법칙으로 유머러스한 격언에서 나온 것이다. (소프트웨어를 개발할 때) 90%의 코드는 90%의 개발 시간을 소비하고 나머지 10%의 코드는 90%의 개발 시간을 소비한다.https://zh.wikipedia.org/wiki/90-90%E6%B3%95%E5%88%99 
등폭 글꼴(Monospaced Font)은 문자 폭이 같은 컴퓨터 글꼴을 말합니다.이에 비해 문자 폭이 같지 않은 컴퓨터 글꼴을 비례 글꼴이라고 한다.등폭 글씨체에서 자모 i, j는 양측의 여백이 비교적 많고 자모 w, m 등의 필획은 상당히 붐벼보인다.그러나 도형 사용자 인터페이스의 주류 업데이트와 컴퓨터 기술의 향상에 따라 비례 글씨체를 처리하는 한계가 돌파되었기 때문에 현재 조판에서 비교적 자연스러워 보이는 비례 글씨체의 사용은 상당히 보급되었다.코드도 같은 폭의 글꼴을 자주 사용한다.https://zh.wikipedia.org/wiki/%E7%AD%89%E5%AE%BD%E5%AD%97%E4%BD%93 
축척 글꼴(Proportional Font)은 문자 폭이 서로 다른 컴퓨터 글꼴을 말합니다.이와 상대적으로 문자의 폭이 같은 컴퓨터 글씨체를 등폭 글씨체라고 부른다.https://zh.wikipedia.org/wiki/%E6%AF%94%E4%BE%8B%E5%AD%97%E4%BD%93

좋은 웹페이지 즐겨찾기