왜 모두?
우선, "설명 적"과 "자세한"은 동일하지 않습니다. 예를 들어, 꽤 로컬 루프를 작성하는 i
경우 루프 변수에 대한 매우 좋은 변수 이름입니다. 루프 변수로 current_iteration_index
사용 i
하는 것이 보편적으로 받아 들여지고 그 외에 다른 의미가 없기 때문에, 논란의 여지가 있지만 더 명확하고 더 장황하지만 훨씬 더 나쁘고 정보를 전혀 추가하지 않습니다 i
.
좋은 변수 이름은 언어 관용구와 코드베이스 규칙에 익숙한 프로그래머가 자신의 역할이 무엇인지 쉽게 추측 할 수 있지만 간결성을 유지하기에 간결하다는 점에서 설명하기 쉽습니다.
원래는 1970 년대 텍스트 터미널의 기술적 한계로 인해 80 자로 제한되었지만 오늘날에도 많은 사람들이 여전히 가치를 지니고 있지만 여전히 기술적 이유가 있지만 (일부 네트워크 프로토콜에서 최대 줄 길이, 특히 전자 메일 관련), 더 강력한 이유는 심리적, 사회적 이유입니다. 66 자 표시 주위의 줄 길이는 자연어 산문에서 가장 편안한 독서 경험을 제공한다는 것이 밝혀졌습니다 (글꼴 크기는 큰 차이를 만들지 않으므로 결과적으로 화면이나 용지 크기도 마찬가지입니다). 80 자 한도는 그와 거의 비슷하지만 일반적인 코드 조각은 일반적으로 최소 1 ~ 2 수준 (들여 쓰기 설정에 따라 4 ~ 16 자 사이)으로 들여 쓰기 때문에,
80 자 라인을 고수하는 또 다른 효과는 상황이 너무 복잡한시기를 나타내는 좋은 지표입니다. 긴 줄은 일반적으로 다음 중 하나에 의해 발생합니다.
- 긴 인수 목록이있는 함수; 가독성이 떨어지고 컴파일러가 잡을 수없는 방식으로 인수 순서를 바꿀 때 미묘한 버그를 쉽게 유발할 수 있기 때문에 이것은 좋은 점이 아닙니다.
- 조건부에서 자주 발견되는 복잡한 표현 (예 :)
if ((user.isLoggedIn && user.hasPermission(page.getRequiredPermission()) && !user.isBanned) || page.getRequiredPermission() == null)
; 이것 또한 보통 해독하기가 어렵고 코드는 좀 더 구조화 된 것으로 다시 작성되어야합니다. 대부분의 경우 표현식이 너무 많으므로 메소드 나 함수에 포함되어야합니다.
- 함수 호출 또는 표현식에 사용되는 긴 리터럴 (예 :)
print(translate(LANG_EN, LANG_ES, "This is the home page. Feel welcome to click around and see what we have."));
. 리터럴을 변수 또는 상수로 이동하십시오. 여전히 줄 길이를 초과 할 수 있지만 일관되게 수행하는 경우 리터럴의 나머지 부분 만 따르는 경우 독자는 줄의 보이지 않는 부분을 무시해도됩니다. 또는 리터럴을 코드에서 외부 데이터 저장소 (파일, 데이터베이스 등)로 옮기십시오.
- 깊이 중첩 된 명령문, 예를 들어
if
클래스 메소드 의 6 가지 레벨의 명령문 (일반 설정의 경우 32 열 들여 쓰기). 다시 말하지만, 딥 네 스팅은 복잡하고 읽기 어려운 코드를 만들며, 전염병처럼 피해야합니다. 간단히 말하면 딥 네 스팅은 인간의 뇌 스택에 넘치게됩니다.
이 모든 것은 궁극적으로 장기적으로 코드베이스에없는 것의 증상이며, 80 자 제한을 적용하면 복잡성과 가독성을 높이는 데 도움이되는 훌륭하고 간단한 방법입니다. (80 열에 완벽하게 읽을 수없는 코드를 작성할 수는 없습니다 : 다양한 난독 화 코드 경연 대회는 명확한 예입니다).