2014-06-05 2 views
1

제가 작업하고있는 프로젝트에서 프로그래머는 Decimalstring에 일반적으로 유용한 확장 메소드를 작성했습니다. 그러나 나는 다른 팀 동료에 대한하고있어 코드 검토에서 확장 메서드를 정적 메서드로 호출 - 좋고 나쁜 스타일?

public static class StringExtensions 
{ 
    public decimal ForceStringToDecimalInSomeSpecialWay(this string str) 
    { 
     // ...Magic... 
    } 
} 

public static class DecimalExtensions 
{ 
    // Similarly useful methods. 
} 

, 나는 그 대신에 ... 음, 확장 메서드, 등 등과 같은 확장 메서드를 호출하는주의 사항 :

Decimal foo = someString.ForceStringToDecimalInSomeSpecialWay(); 

... 대신 정적 메서드로 호출했습니다.

Decimal foo = StringExtensions.ForceStringToDecimalInSomeSpecialWay(someString); 

실제로 작동 문법적으로 정확한 호출, 그것은 좋은 방법, 또는하지 여부를 I 질문이지만.

유용한 도구를 제공하고 정적 메서드로 호출하는 정적 도우미 클래스를 사용하려면 괜찮습니다. 그러나 의도적으로 다른 메소드를 새 메소드로 확장 할 때 정적 메소드에서 새 메소드를 호출하는 것은 다소 의문의 여지가 있습니다.

답변

3

Extension methods은 구문 설탕입니다. 컴파일시에 나머지 정적 메서드처럼 호출됩니다. (두 번째 코드 스 니펫과 유사).

IMO, 같은 간단한 방법처럼 그들을 호출하는 것이 좋습니다 : 당신이 확장 방식의 기능을 활용할 수 있도록

someString.ForceStringToDecimalInSomeSpecialWay(); 

, 그렇지 않으면 포인트에서 확장 방법으로 그들을 필요에 없다 처음. 단지 끔찍한 나쁜 보이는

List<int> list = new List<int>() { 1, 3, 4, 5, 5, 5 }; 
var result = Enumerable.ToList(Enumerable.Where(list, r => r != 5)); 

: 당신은 같은 LINQ 확장 메소드를 호출해야하는 경우

은 상상 해보세요.

관련 문제