2012-07-17 2 views
0

선택 매개 변수를 나타내는 데 줄임표를 사용하는 것이 좋은 방법일까요? 나는 여러 삽입 (레거시 코드는 그래서 여기에 어떤 나쁜 연습의 생각을 용서하시기 바랍니다) 허용하는 기본 키가없는 DB 테이블에 연결 코드를 사용하고자바에서는 선택적 매개 변수를 나타내는 데에는 줄임표를 사용하고 있습니까?

public void update(Object object, boolean... checkFirst) 
{ 
    if (checkFirst[0]) 
    { 
     ... 
    } //if 
} //update 

. 따라서 두 가지 방법 (오버로딩)을 사용하는 대신 동일한 효과를 얻기 위해 줄임표를 사용할 수 있다고 생각했습니다. 하지만 이것이 끔찍한 일이라고 생각합니까?

건배,

Alexei Blue.

+1

내 생각에 끔찍한 연습은 아닙니다. 네, 단지 하나가 아닌 27 개의 부울을 보낼 수 있습니다. 그게 큰 문제라고 생각하지 않습니다. 그러나 오버로드 된 서명은 실제로이를 정당화하기에 충분하지 않습니다. –

+0

필자는 두 번째 (옵션) 플래그가 있으면 매개 변수 이름과 문서가 필요하다는 사실을 끔찍한 생각으로 생각합니다. 메소드의 서명에 생략 기호가 있으면 함수를 사용하여 의미있는 값을 무제한으로 개발자에게 전달할 수 있습니다. – Elemental

답변

6

줄임표의 적절한 용어는 varargs입니다. Varargs를 사용하면 개발자는 다양한 수의 인수를 전달할 수 있습니다.

하나의 선택적 인수를 제공하려면 varargs를 사용하는 것은 좋지 않습니다. 아래 코드 예제와 같이 overloading을 사용하는 것이 좋습니다.

public void update(Object object) 
{ 
    update(update, false); 
} 

public void update(Object object, boolean check) 
{ 
    if (check) 
    { 
     ... 
    } //if 
} 

이렇게하면 개발자는 여러개의 부울을 전달할 수 없지만 아무 것도 전달할 수 없습니다.

+0

아마도 오버로드 기능을 고수하는 것이 가장 좋습니다 :) 나는 그 시절에 LOL 중 하나를 가지고 있다고 생각합니다. –