2011-05-02 5 views
1

다음은 Show() 메소드에 가능한 매개 변수를 포함하기 위해 매개 변수 클래스를 사용하는 일부 코드입니다. 이 FooOption 클래스의 값은별로 관련이 없습니다. 아래 Show()의 구현을 보면 알 수 있습니다. 나는 이것이 나쁜 코드라는 것을 알고 있지만, 이것에 관련된 반 패턴이 있습니까?이와 같은 코드 작성을위한 패턴 방지 이름이 있습니까?

class FooOptions { 
    public int? Id { get; set; } 
    public string BazContext { get; set; } 
    public int? BazId { get; set; } 
} 

class BarMgr { 
    public Bar Show(FooOptions options) { 
    if (options == null) 
     options = new FooOptions(); 
    if (options.Id.HasValue) 
     return svc.GetBar(options.Id.Value); 
    if (!string.IsNullOrEmpty(options.BazContext) && options.BazId.HasValue) 
     return svc.GetBar(options.BazContext, options.BazId.Value); 
    return null; 
    } 
} 

업데이트 : 내가 매개 변수 객체 안티 패턴이 아니라는 것을 알고있다. 내 경험에 의하면 매개 변수 개체 속성이 관련되어 있습니다. 이것은 내가 찾으려고하는 가능한 반 패턴입니다. 세 가지 속성을 모두 설정하는 것은 말이되지 않습니다.

+5

매개 변수 클래스는 안티 패턴이 아닙니다. –

+0

고맙습니다. 이미 알고 있습니다. 이 질문에 대한 혼란을 줄이기 위해 제 질문을 업데이트했습니다. –

답변

5

, 여기 내 대답 :
는 지금까지 내가 아는 한,이 같은 반 패턴에 대한 실제 이름이없는 하지만,이 방법을 위반하는 것으로 적어도 하나 개의 원칙이있다 :
Single-Responsibility-Principle가.

그리고 실제로 매개 변수 개체가 아니라 메서드의 문제입니다. 당신이 옵션 우리가 뭔가 기능 부러워라고 당신이 사용중인 실제 기능에 기능을 이동 할 수 있습니다 나타냅니다가 많이 사용하는 경우

5

매개 변수 객체 패턴이라고하며 반 패턴으로 간주되지 않습니다. 매개 변수가 너무 많은 메소드를 처리하는 좋은 방법입니다. 당신의 갱신 후

+0

서로 관련이없는 매개 변수 객체의 속성에 대해 묻습니다. –