[java] Java 메소드 이름이 너무 긴 경우는 언제입니까? [닫은]

지난 몇 주 동안 메소드 또는 클래스 (50 문자)에 실제로 긴 이름을 사용하는 일부 사람들을 보았습니다. 이것은 일반적으로 가독성을 향상 시킨다는 전제 아래에 있습니다. 제 생각에 이와 같은 긴 이름은 우리가 긴 이름이 필요한 경우 메소드 클래스에서 많이 또는 너무 많은 것을 시도하지만, 나는 당신이 그것에 대해 어떻게 생각하는지 알고 싶었습니다.

예를 들면 다음과 같습니다.

getNumberOfSkinCareEligibleItemsWithinTransaction



답변

메소드의 동작을 동일하게 전달하는 짧은 이름이 있으면 Java 또는 다른 언어로 된 이름이 너무 깁니다.


답변

메소드 이름의 길이를 줄이는 몇 가지 기술 :

  1. 전체 프로그램, 수업 또는 모듈이 ‘스킨 케어 아이템’에 관한 것이라면 스킨 케어를 떨어 뜨릴 수 있습니다. 예를 들어, 클래스가 호출 SkinCareUtils되면getNumberOfEligibleItemsWithinTransaction

  2. 당신은 변경할 수 있습니다 있는 ,getNumberOfEligibleItemsInTransaction

  3. Transaction을 Tx로 변경할 수 있습니다 getNumberOfEligibleItemsInTx.

  4. 또는 메소드가 유형의 매개 변수를 허용 Transaction하면 InTx를 모두 삭제할 수 있습니다.getNumberOfEligibleItems

  5. countOf에 의해 numberOf를 변경합니다 : getEligibleItemsCount

이제는 매우 합리적입니다. 그리고 60 % 더 짧습니다.


답변

변경의 경우, 비 주관적인 답변 : 65536 자.

A.java:1 : 문자열 “xxxxxxxxxxxxxxxxxxxx …”에 대한 UTF8 표현이 상수 풀에 비해 너무 깁니다.

😉


답변

나는 모든 사람들에게 동의합니다 : 메소드 이름은 너무 길어서는 안됩니다. 그래도 하나의 예외를 추가하고 싶습니다.

그러나 JUnit 테스트 방법의 이름은 길 수 있으며 문장과 유사해야합니다.

왜?

  • 다른 코드에서는 호출되지 않기 때문입니다.
  • 테스트 이름으로 사용되기 때문입니다.
  • 그런 다음 요구 사항을 설명하는 문장으로 작성할 수 있기 때문입니다. (예를 들어, AgileDox 사용 )

예:

    @Test
    public void testDialogClosesDownWhenTheRedButtonIsPressedTwice() {
        ...
    }

이 아이디어에 대한 자세한 내용은 ” 동작 기반 디자인 “을 참조하십시오 .


답변

컨텍스트 “… IninTransaction”은 분명해야합니다. 이것이 객체 지향의 전부입니다.

이 메소드는 클래스의 일부입니다. 클래스가 “트랜잭션”을 의미하지 않는 경우-그리고 항상 “WithinTransaction”이라고 말하지 않아도된다면 문제가있는 것입니다.


답변

나는 이름에 하이쿠 규칙 을 사용하는 경향이 있습니다 .

 Seven syllable class names
 five for variables
 seven for method and other names

이들은 최대 이름의 경험 법칙입니다. 가독성을 향상시킬 때만 위반합니다. recalculateMortgageInterest (currentRate, quoteSet …)와 같은 것이 recalculateMortgageInterestRate 또는 recalculateMortgageInterestRateFromSet보다 낫습니다. 속도와 따옴표가 포함되어 있다는 사실은 javadoc 또는 .NET과 같은 내장 문서에서 명확해야하기 때문입니다.

참고 : 실제 하이쿠는 아닙니다. 5-7-5가 아니라 7-5-7입니다. 그러나 나는 여전히 그것을 하이쿠라고 부르는 것을 선호합니다.


답변

Java에는 긴 이름을 장려하는 문화가 있습니다. 아마도 IDE에는 자동 완성 기능이 우수하기 때문일 것입니다.

이 사이트에 따르면 JRE에서 가장 긴 클래스 이름 InternalFrameInternalFrameTitlePaneInternalFrameTitlePaneMaximizeButtonWindowNotFocusedState은 92 자입니다.

가장 긴 메소드 이름 supportsDataDefinitionAndDataManipulationTransactions은 52 자입니다.