나를 위해, 뭔가 좋은 이름을 찾는 것은 항상 그 존재를 정당화 해야하는 대상 으로 생각합니다 . 자신에게 물어:
- 클래스 / 메소드 / 변수는 무엇을 하는가? 즉 더 넓은 목적과 목적은 무엇인가?
- 의사 소통의 목적에 대해 구체적으로 무엇을해야합니까? 즉, 이름에 필요한 필수 부분은 무엇입니까?
대부분의 개발자는 이름을 지정할 때 가독성 이 항상 가장 중요하다는 데 동의합니다 . 코드를 작성하는 동안 의미를 알 수 있도록 코드를 작성하지 말고, 미래에 어느 시점에서 처음으로 코드를보고있는 사람이 너무 많이 생각하지 않아도 자신이 의미하는 바를 알 수 있도록 코드를 작성하십시오. 코드는 한 번만 작성하지만 수명 기간 동안 여러 번 편집하고 더 많은 시간을 읽어야 할 것입니다.
코드는 자체 문서화 되어야합니다즉, 이름을 지정하면 무엇을하는지 분명하게 알 수 있습니다. 주석에서 코드 행이 수행하는 작업을 설명해야하고 이름을 바꾸어도 충분하게 개선되지 않는 경우 해당 행을 적절한 설명 이름을 가진 새 메소드로 리팩토링하여 원래 메소드를 읽으십시오. 새로운 메소드 호출은 무슨 일이 일어나고 있는지 설명합니다. 긴 이름을 갖는 것을 두려워하지 마십시오. 물론 클래스 / 메소드 / 가변 이름으로 소설을 쓰면 안되지만, 이름이 너무 짧고 너무 짧기 때문에 그 이름을 너무 짧게해서 후드 아래를 살펴보면서 그 내용을 알아 내야합니다. x / y 좌표 및 일반적으로 사용되는 약어와 같은 명백한 예외를 제외하고 단일 문자 이름과 약어는 사용하지 마십시오. "backButton"대신 "bkBtn"호출
귀하의 언어가 허용하는 한, 영어 문장처럼 코드를 읽도록하십시오. 객체는 명사를 사용하고 메소드는 동사를 사용합니다. 부울 메서드는 일반적으로 "is"로 시작하지만 "can", "should"또는 "does"와 같이 사용 사례에 따라 의미를 더 잘 전달하는 다른 옵션이 많이 있습니다. 물론 모든 언어가 스몰 토크만큼 좋은 것은 아니지만 일부 기호는 일반적으로 문장의 일부로 이해됩니다. 개인적으로 가능한 한 다른 언어로 받아들이는 두 가지 스몰 토크 규칙은 루프 매개 변수 이름 앞에 "each"를 붙이고 메서드 매개 변수 앞에 "a"(또는 "an"또는 "일부"모음)를 붙입니다. . 이것은 Java의 일반적인 표준이 아닐 수 있으며 누구나이 비트를 무시할 수 있습니다. 그러나 이것이 코드의 가독성을 크게 향상시킵니다. 예를 들어 (Java의 예) :
public boolean shouldConsiderAbbreviating(List<String> someNames) {
for (String eachName : someNames) {
if (isTooLong(eachName)) {
return true;
}
}
return false;
}
이것은 다음과 같이 Java에 대한 약간의 지식을 가진 사람들이 읽을 수 있어야합니다.
일부 이름 (문자열) 목록의 약어를 고려해야하는지 여부를 결정하려면 일부 이름을 반복하고 각 이름에 대해 이름이 너무 긴지 판별하십시오. 그렇다면 반환 true
; 너무 길지 않으면를 반환하십시오 false
.
위의 코드를 인수 strings
와 루프 변수의 이름을 지정하는 것 string
, 특히 더 복잡한 방법으로 대조하십시오 . 이름을 한눈에 알 수있는 사용법 대신 차이점을 자세히 살펴보아야합니다.