2016-08-09 3 views
0

다른 메서드 내에서만 사용되는 (또는 호출되는) 메서드를 선언 할 위치에 대한 표준적인 연습이나 규칙이 있습니까?방법을 구성하는 가장 좋은 방법은 무엇입니까?

public class MyClass{ 
    methodA(); 
    methodB(); 
    methodC(); 

    public void methodA(){ 
     methodA1(); 
     methodA2(); 
    } 
    public void methodB(){ 
     methodB1(); 
     methodB2(); 
    } 
    private void methodA1(){ 
     do something; 
    } 
    private void methodA2(){ 
     do something; 
    } 
} 

를 또는 위의 가독성을 향상시킬 수 codding의 다른 방법이 :이 다음과 같은 가정 보여주기 위해? 나는 비슷한 주제로 다른 질문을 읽었으나 다른 방법들 안에서 사용되는 mothod에 관한 나의 질문은 다루지 않는다. methodA, methodB 및 methodC는 특정 타스크에 대해 논리적이고 의미있는 순서가 있다고 가정 할 수 있습니다. 내 문제는 다른 메서드 (methodA1, methodA2, ..)는이 작업에서 의미가 없으며 호출 된 메서드 내에서만 의미가 있다는 것입니다. 또는 메서드 선언을 배치 할 위치에 전혀 신경 쓰지 않아야합니까?

+0

프록시 패턴? https://en.wikipedia.org/wiki/Proxy_pattern – Stefan

+1

먼저 public 메소드를 먼저 만든 다음 protected로 설정하고 private로 설정합니다. 읽는 것이 더 쉬워집니다. – pecks

+0

프로그램 이해력에 관한 최근의 연구에서, 결과는 아마도 그 결과가 일관성있는 순서 일 것이라고 나타났습니다. – Elazar

답변

1
그들은 독자가 너무 많은 코드

로버트 C 마틴 (일명 아저씨 주위에 뛰어 필요가 발생하지 않는 이야기처럼 읽을 수 있도록

방법은 같은 방법으로 주문해야

Bob)

이것은 간단히 말해서 methodA1, methodA2가 methodA (사용하는) 다음에 있어야한다는 것입니다. methodB methodB1, methodB2와 동일합니다. 또한 당신이 (따라서 액세스 수식을 기반으로 배치 결정을하지 않음) 상단에 멤버 변수를 넣어 제안 것

public class MyClass{ 
methodA(); 
methodB(); 
methodC(); 

public void methodA(){ 
    methodA1(); 
    methodA2(); 
} 

private void methodA1(){ 
    do something; 
} 
private void methodA2(){ 
    do something; 
} 

public void methodB(){ 
    methodB1(); 
    methodB2(); 
} 

public void methodB1(){ 

} 

public void methodB2(){ 

} 
} 

: 나는 그런 일을 볼 것으로 예상한다.

Bob 삼촌의 books 또는 videos에 깨끗한 코드를 작성하는 데 유용한 조언을 제공 할 수 있습니다.

+0

methodA 다음에 methodA1 & methodA2를 배치하지 않았습니다. – Addis

+0

죄송합니다. @Addis typo. 나는 내 대답을 편집했다. MethodA1과 methodA2는 methodA 다음에 위치해야한다. – sestus

0

텍스트 편집기를 사용하여 코드를 읽고 변경하는 경우 방법을 선언하는 순서에 대해 생각하는 것이 좋지만 일반적으로 Eclipse와 같은 최신 도구를 사용하게됩니다. 메소드의 개요는 물론 호출 계층 구조를 따라갈 수 있으므로 위치가 중요한 것은 아닙니다.

가능한 한 독립적이고 추상적 인 코드를 만드는 데 집중하고, 한 가지만하는 메서드와 매우 명확한 함수를 갖는 클래스를 집중시켜야합니다. 다른 객체에 의해 수행된다.

아, 좋은 의견을 남기십시오. 즉 을 설명하고이 아닌 은 무엇인가을 설명합니다.

0

하나의 함수 만 메서드를 호출하고 한 번만 호출하면 함수 하나만 사용할 수 있습니다.

여러 번 호출하는 경우 줄 바꿈없이 "부모"함수 바로 앞에 배치하십시오. 가독성이 영향을받는 경우가 몇 가지에 의해 호출되는 경우 util_/internaluse_//ZZZ 접두사로 개인에 따라 모두 숨어 고려 또는 methodA_methodA1

처럼 parentname_ (예를 들면의 javadoc는 천 개 쓸모없는 기능을 엉망됩니다) 기능은 유틸리티 기능에 가깝습니다. 그러니 그대로 취급하십시오. 이러한 유틸리티 함수 중 일부는 유틸리티 클래스가 될 수 있습니다.

또한 개인적으로 C++ 스타일을 사용합니다. 회원, 그렇다면 A1, A2, A, B1, B2, B.