소스 코드를 작성하는 동안 80 자 제한 모범 사례를 따르는 방법은 무엇입니까?


15

알다시피 모범 사례가 있습니다.

소스 코드 행을 80 자로 제한하십시오.

다음은 2 개의 링크입니다.

코드 너비에 대해 80자가 '표준'제한 인 이유는 무엇입니까?

와이드 스크린 모니터의 경우 80 자 제한이 여전히 관련이 있습니까?

이 모범 사례를 검색하면 더 많은 정보를 얻을 수 있습니다.

그러나 나는 이것이 매우 어렵다는 것을 알았습니다. 여기에 샘플 예제가 있습니다.

public class MyClass {

    public void myMethod() {

        final Map<String, List<MyInterfaceHere>> myReference

따라서 각 클래스와 메소드 및 명령문을 들여 씁니다.

그리고 나는 'myReference'에있는 마지막 'e'의 끝까지 이미 60 열에 있습니다.

실제로 생성자를 호출하고 참조하는 객체를 20 개의 공백으로 남겨 둡니다.

나는 이것이 정말로 더 좋아 보인다는 것을 의미합니다.

public class MyClass {

    public void myMethod() {

        final Map<String, List<MyInterfaceHere>> myReference 
                = new HashMap<String, List<MyInterfaceHere>>(); 

가장 좋은 방법은 무엇입니까?


6
우리는 그것을 140으로 만듭니다. 80은 더 작은 화면과 더 작은 프린터
시대에 좋았을 것입니다

7
가장 좋은 방법은 당신이 수명이 다한 버전 아니라면 5/6이 같은 가능성이있을 것입니다 final Map<String, List<MyInterfaceHere>> myReference = new HashMap<>();(귀하의 예제에서 들여 쓰기 80 개 문자 등)
모기

4
메타 모범 사례는 20 년 전의 모범 사례를 맹목적으로 사용해서는 안됩니다. 17 인치 CRT가 1280x1024 해상도를 자랑 할 때 문자 제한이 낮지 만 현재는 그렇지 않습니다.
TMN

2
디스플레이에서 사용 가능한 모든 공간에 좁히지 않고 좁은 텍스트 열을 사용하면 얻을 수있는 이점 중 하나는 여러 코드를 나란히 쉽게 볼 수 있다는 것입니다. 80 chars * 7 pixels/char = 560 pixels per file. 이렇게하면 두 파일 (1120 픽셀)을 1280px 와이드 화면에 편안하게 맞출 수 있고 1920px 화면에 3 개 (1680px)를 맞출 수 있습니다. . 또는 때때로 약간 더 긴 선.
8bittree

3
@ 8bittree 두 모니터에서 코드를 나란히 볼 수 있습니다. 단일 모니터에서 개발하는 것은 하나의 바퀴로 자동차를 운전하는 것과 같습니다.

답변:


18

최선의 방법은 "길이를 제한하여 사용자, 모든 동료 및 사용중인 모든 도구에 만족"과 상식을 갖추어야합니다. 80자인 문자가 매우 낮아 보이고 가독성이 떨어지는 경향이 있습니다. 나는 한 번 다음과 같은 선에 완전히 속아 왔습니다.

/* Very long comment to the end of the line */ realCode ();

여기서 함수 호출이 화면에 표시되지 않았으며 (다른 동료의 화면에도 표시되지 않음) 표시가 없습니다.

편집기에서 100 열 여백을 표시하고 코드를 다시 표시하여 편집하는 동안 모든 것이 항상 표시되며 지나치게 긴 줄은 수동으로 두 개 이상의 줄로 분할되는 경향이 있습니다. 자동 형식화를 수행하는 경우 편집기가 분할 문을 멋지게 형식화하도록기도하십시오. 깊이 중첩 된 명령문으로 이어지지 않는 코딩 스타일을 사용하십시오. (어떤 사람들은 20 개의 if 문 뒤에 20 개의 다른 꼬리가 뒤 따르는 200 개의 문자 들여 쓰기를 만들어 내고, 어느 것이 어떤 if에 속하는지 알아낼 수있는 사람이 없습니다).

특별한 경우 Swift는이를 피하는 방법을 발명했습니다. "let"변수 (다른 언어의 "final"과 거의 동일)에는 사용하기 전에 정확히 한 번만 값을 할당해야하지만 반드시 선언에는 필요하지 않습니다. 따라서 귀찮은 줄을 두 개의 독립적 인 진술로 나눌 수 있습니다.

추신. 실제 사람이 작성한 코드에서 400자를 넘는 행이 발견되었습니다. 다시 말해, 24 인치 모니터에서도 나머지 줄을 읽으려면 나이를 스크롤해야합니다. 나는 즐겁게하지 않았다 :-(


10
/* Very long comment to the end of the line */ realCode ();이미 다른 스타일 규칙을 어기는 것 같습니다 .
Robert Harvey

3
/* Very long comment to the end of the line */ realCode ();IDE에 주석과 코드를 별도의 줄에 자동으로 넣는 코드 포맷터가있는 이유 중 하나입니다.

2
"if (조건) \ n \ tgoto exit; \ n \ tgoto exit;"라는 악명 높은 출처에서 나온 것입니다. 몇 년 전에
gnasher729

최대 줄 길이를 80 자로 설정하면 긴 줄의 텍스트를 작성하여 한 번에 모든 작업을 수행하는 대신 함수 및 클래스 및 OO로 생각해야합니다. 다른 사람들이 쉽게 준비 할 수있는 프로그램을 작성합니다. 둘째, SV에서 볼 수있는 대부분의 프로그램 (내 경험상)은 랩톱에서 작동하며 항상 대형 화면 디스플레이를 사용할 수 없습니다. 따라서 80 자 제한으로 작성하면 모두에게 도움이됩니다. 셋째, 대형 모니터 화면을 여러 창으로 분할하고 동시에 코드를 볼 수 있습니다.
alpha_989

3

예, 더 좋아 보입니다. 그래서 "긴 줄을 사용하지 마십시오!" 맥심은 매우 강하다.

모범 사례와 마찬가지로,이 끔찍하게 긴 생성자 표현식을 절대 사용하지 마십시오. 나는 항상 사용합니다

public class MyClass {

    public void myMethod() {

        final Map<String, List<MyInterfaceHere>> yReference = newMap();

일부 적절한 정의를 위해 정적 값을 가져 newMap(). 내장 버전이없는 Java의 중대한 결함이라고 생각합니다.


1

목표는 "80 자로 줄을 유지하는 것"이 ​​아닙니다. 목표는 "코드를 읽고 이해하기 쉽게"만드는 것입니다. 인위적인 80 자 제한은 가독성을 높이는 데 도움이되지만 팀에서 결정하지 않는 한 어렵고 빠른 규칙은 아닙니다.

모범 사례를 요청했으며 모범 사례는 "가능한 한 코드를 읽을 수있게 만드는 데 중점을 두는 것"입니다. 80 자 이상이 필요한 경우도 마찬가지입니다.


1

Return 키를 누르는 것을 두려워하지 마십시오. 예를 들어 Java를 포함한 대부분의 현대 언어는 여러 줄에 걸쳐 실행되는 문장에 매우 만족합니다.

줄을 나누는 위치에 대해 약간만 생각하면 80 열 제한에 맞는 내용을 읽을 수 있습니다. 공식 Java 코딩 규칙은 줄 바꿈을 선호하는 장소도 지정합니다.

깔끔하게 정리 된 줄은 화면에서 사라지는 줄보다 훨씬 읽기 쉽습니다.


1

코드의 줄 길이 / 폭을 적용하는 경우 도구를 사용하십시오.

  • 재 연마기
  • 시각 보조
  • 기타

개발자는 합리적인 길이 (80, 120, 200 등)를 결정하고 도구에서 해당 옵션을 설정합니다.

그 후, 선의 너비 나 길이에 관계없이 정상적으로 코드를 작성하십시오. 작동하고 완료되면 마우스 오른쪽 버튼을 클릭하고 코드 정리 또는 유사한 옵션을 선택하십시오. 도구는 사용자가 지시 한대로 코드를 포맷하고 표시된대로 긴 줄을 나눕니다.

마음도 쉽고 쉽고 모든 소스 파일도 같은 방식으로 포맷됩니다.


0

요즘 80 자 제한이 너무 짧을 수 있지만 도움이됩니다. 코드의 형식도 잘 지정해야한다는 모든 의견에 동의합니다. 예를 들어 코드

/ * 줄 끝에 매우 긴 주석 * / realCode ();

80 ch 이내 일 수 있지만 설명과 코드 옵션이 동일한 한 줄에 있으므로 혼동을 일으 킵니다.

80 ch 제한을 준수하는 것은 개인의 선택이지만 싱글 샷으로 볼 수 있다면 프로그래머와 다른 검토 자에게도 편안한 시야와 느낌을 줄 것입니다.

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