2014-05-22 3 views
-1

공용 API 메소드에 대한 메소드 이름 지정에 대한 결정이 때로는 불안합니다.명시 적 메소드 이름 또는 호출 목적 매개 변수가있는 일반 메소드 이름

변형 A :

public void play(); 
public void stop(); 
public void pause(); 

변형의 B :

public enum CallType { 
      PLAY, 
      STOP, 
      PAUSE 
     } 
public void execute(CallType type); 

내가 어떤 매개 변수 때문에, 변형 A의 인터페이스가 더 편리한 API 클라이언트에 대한 생각 (! 및 검사)입니다 필요합니다.

그러나 변형 B에서는 공용 인터페이스가 더 작고 개발자를위한 작업이 더 쉽다고 생각합니다.

이러한 접근 방식에 대한 의견은 어떻습니까?

+0

주로 의견에 근거한 질문을하지 마십시오. http://stackoverflow.com/help/dont-ask를 참조하십시오. – arshajii

+0

B에 대한 (또는 반대의) 인수는'CallType'의 값 집합이 변경되면 구현 클래스의 컴파일 타임 오류 대신 런타임 문제가 발생할 수 있다는 것입니다. – hexafraction

답변

1

통화 유형 수가 이라면 합리적으로이며, 각 작업 (변형 A)에 대해 별도의 메소드를 사용하는 것이 좋습니다. 인터페이스를 더 쉽게 읽을 수있게 해 주며, 인터페이스를 사용하는 옵션에 대한 정보를 얻기 위해 클래스 사용자를 추가 JavaDoc 페이지 (열거 형)로 전환 할 필요가 없습니다. 호출 유형의 수가 증가하면 더 큰 계약 (즉, 메소드 수 증가)이있는 인터페이스를 얻을 수 있으므로 enum을 사용하는 것이 좋습니다. 그러나이 경우 귀하의 execute 방법이 너무 커질 수 있음을 유의하십시오 (많은 경우에 switch 성명을 사용하는 것이 좋습니다).

답변은 reasonably이 의미하는 것으로 주어져야한다고 생각합니다. 이에 대한 정확한 대답은 없습니다. 개발자 기본 설정, 조직의 표준 코딩, 정적 코드 검사 규칙 (분석기가있는 경우) 등등에 따라 다릅니다.