문제

복제하다

C# 메서드를 다음과 같이 사용해야 합니까? ~할 수 있다 정적인가 정적인가?


이 질문이 초보적이라면 양해해 주십시오. 꽤 괜찮아 보이는 소스 코드를 살펴보고 있지만 몇 가지 질문이 제기됩니다...

특정 클래스에 멤버 데이터가 없는 경우 - 즉어떤 종류의 상태도 유지하지 않습니다. 해당 클래스를 정적 ​​메서드를 사용하여 정적 클래스로 표시하지 않으면 어떤 이점이 있습니까?

상태를 정적으로 유지하지 않는 메소드를 표시하지 않으면 어떤 이점이 있습니까?

감사해요!

편집하다:누군가가 그것을 언급했기 때문에 제가 보고 있는 코드는 C#으로 작성되었습니다.

도움이 되었습니까?

해결책

예.몇 가지 이유를 생각해 볼 수 있습니다.

  1. 모의 및 단위 테스트 용이성
  2. 상태 추가 용이성
  3. 당신은 그것을 전달할 수 있습니다 ( interface 또는 뭔가)

다른 팁

클래스의 정적 메서드로 만들고 클래스를 추상화하면 이점이 있다고 말하고 싶습니다.이렇게 하면 이 클래스는 인스턴스화할 의도가 전혀 없었고 메서드를 계속 사용할 수 있다는 것이 프로그래머에게 분명해집니다.

클래스에서 상속하고 해당 메서드를 다음과 같은 코드로 재정의하려는 경우(또는 그럴 것으로 생각하는 경우) 상태를 변경하지 않는 메서드를 비정적으로 남겨 두는 것이 이점이 있을 수 있습니다. 하다 상태를 변경합니다.하지만 이 경우 실제로는 추상 클래스여야 합니다.

클래스가 어떤 상태도 유지하지 않고, 인스턴스 메서드도 없고, 전적으로 클래스 메서드로 구현될 수 있는 경우, 나는 일반적으로 클래스의 동작이 실제로 다른 곳에서 더 의미가 있는지 오랫동안 자세히 살펴봅니다.나는 그들이 일반적으로 다음과 같은 방법으로 많은 방법을 가지고 있는 것 같다고 생각합니다. doSomethingWithItem(Item item), 이는 인스턴스 메서드로 더 적합합니다. Item.

예, 이것이 귀하의 질문에 대한 답이 아니라는 것을 압니다. 하지만 다른 사람들이 이미 그 내용을 꽤 잘 다루었다고 생각합니다. 그리고 저는 거기에서 또 다른 관점을 얻고 싶었습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top