문제
복제하다
이 질문이 초보적이라면 양해해 주십시오. 꽤 괜찮아 보이는 소스 코드를 살펴보고 있지만 몇 가지 질문이 제기됩니다...
특정 클래스에 멤버 데이터가 없는 경우 - 즉어떤 종류의 상태도 유지하지 않습니다. 해당 클래스를 정적 메서드를 사용하여 정적 클래스로 표시하지 않으면 어떤 이점이 있습니까?
상태를 정적으로 유지하지 않는 메소드를 표시하지 않으면 어떤 이점이 있습니까?
감사해요!
편집하다:누군가가 그것을 언급했기 때문에 제가 보고 있는 코드는 C#으로 작성되었습니다.
해결책
예.몇 가지 이유를 생각해 볼 수 있습니다.
- 모의 및 단위 테스트 용이성
- 상태 추가 용이성
- 당신은 그것을 전달할 수 있습니다 (
interface
또는 뭔가)
다른 팁
클래스의 정적 메서드로 만들고 클래스를 추상화하면 이점이 있다고 말하고 싶습니다.이렇게 하면 이 클래스는 인스턴스화할 의도가 전혀 없었고 메서드를 계속 사용할 수 있다는 것이 프로그래머에게 분명해집니다.
클래스에서 상속하고 해당 메서드를 다음과 같은 코드로 재정의하려는 경우(또는 그럴 것으로 생각하는 경우) 상태를 변경하지 않는 메서드를 비정적으로 남겨 두는 것이 이점이 있을 수 있습니다. 하다 상태를 변경합니다.하지만 이 경우 실제로는 추상 클래스여야 합니다.
클래스가 어떤 상태도 유지하지 않고, 인스턴스 메서드도 없고, 전적으로 클래스 메서드로 구현될 수 있는 경우, 나는 일반적으로 클래스의 동작이 실제로 다른 곳에서 더 의미가 있는지 오랫동안 자세히 살펴봅니다.나는 그들이 일반적으로 다음과 같은 방법으로 많은 방법을 가지고 있는 것 같다고 생각합니다. doSomethingWithItem(Item item)
, 이는 인스턴스 메서드로 더 적합합니다. Item
.
예, 이것이 귀하의 질문에 대한 답이 아니라는 것을 압니다. 하지만 다른 사람들이 이미 그 내용을 꽤 잘 다루었다고 생각합니다. 그리고 저는 거기에서 또 다른 관점을 얻고 싶었습니다.