2012-05-22 4 views
0

에 대한 메서드를 호출하기 전에 변수 매개 변수를 만들 가치가 :이 방법 매개 변수의 가능한 의미 있고 명확한 이름을 가지고 최선의 방법을 간주 선명도

public myFunction(String meaningfulName1, String meaningfulName2, boolean meaningfulName3) 

하지만, 때때로 우리는이를 찾을 수있는 방법을 호출 할 때,

myFunction("", "foo", false); 

명확성을 위해 매개 변수에 대한 변수를 만드는 것이 오버 헤드가 될까요?

String meaningfulName1 = ""; 
String meaningfulName2 = "foo"; 
String meaningfulName3 = false; 
myFunction(meaningfulName1,meaningfulName2,meaningfulName3) 

답변

1

내 경험에 비추어 볼 때 명백한 방법이 (적어도 대부분의 경우) 더 나은 것으로 확신합니다. 첫 번째 방법은 성능 향상에 도움이되지 않습니다. 유지 보수 작업을 계속하는 사람들에게 많은 도움이 될 것입니다.

결국, Pre-optimization is the root of evils입니다.

P/s : 두 번째 방법은 LONG 매개 변수 목록이있는 메소드 ("objectize"params 메소드 제외)에도 매우 필요합니다. 그러나 당신이 그것을 처리 할 필요가 없기를 바랍니다.

+0

자바 (알빈의 대답에 대한 개념에 대한 크레딧)에 대한 구문 설탕을 추가했습니다. http://www.artima.com/weblogs/viewpost.jsp?thread=118828 –

0

당신이이 매개 변수에 대한 설명이 멀리 클릭 또는 마우스가 멀리 IDE에서 가져 + 만 Ctrl 키입니다 다음 정의되어 제대로 기능을 문서화합니다.

개발자로서 런타임에 해당 컨텍스트와 대조적으로 해당 함수에서 수행하는 기능에 관심이있을 가능성이 높습니다 (심지어 각 var이 출력에 의존 할 수 없다는 것을 정확히 알고 있습니다. 어쨌든 실제로 코드를 보려고 할 것입니다.

+0

그렇습니다. 그렇지만 자체 프로젝트를 반복하는 경우 클릭 * x 번을 저장하는 것이 합리적입니다 ... 생각하지 않습니까? – jasalguero

2

당신의 명명 규칙에 따라 나는 당신이 C#을 사용하지 않는다고 가정하지만, 많은 다른 언어들에서뿐만 아니라 C#에서도 메서드를 호출 할 때 명명 된 인자를 사용할 수 있습니다.

myFunction(meaningfulName1: "", meaningfulName2: "foo", meaningfulName3: false) 

나는 그것이 다른 인수가 무엇을 나타내는 내용에서 명확하지 않다 경우 가독성을 돕기 위해이 기술을 많이 사용합니다. 0, 1, true, false, null을 많이 사용하는 메소드 호출은 코드를 읽을 수 있도록하기 위해 인수 이름 지정에 좀 더 명시해야하는 좋은 후보입니다.

명명 된 인수가 옵션이 아닌 언어에서는 내용이 컨텍스트에서 분명하지 않을 때 가독성을 높이기 위해 변수를 분명히 구분합니다.

그러나 대부분의 코드에서 필자는 상수 인수를 사용하여 내 메서드를 거의 호출하지 않지만 대부분의 인수는 다른 곳에서 계산되고 좋은 명명 된 변수에 이미 포함됩니다.

+0

좋은 정보를 주셔서 감사합니다! 그것은 자바처럼이 기능을 가지고 있으며, 이것에 대해 처음 들었습니다! 감사! –