ProgramingTip

"유틸리티"클래스가 사악한 경우 일반 코드를 어디에 두어야합니까?

bestdevel 2020. 11. 25. 08:16
반응형

"유틸리티"클래스가 사악한 경우 일반 코드를 어디에 두어야합니까?


저는 일반적으로 전역 변수 / 함수가 악하고 모든 코드가 관련된 클래스에 정확히 나오는 규칙에 따라 생활합니다.

이것은 매우 쉬운 규칙이며, 지금 까지이 규칙에 문제가 많은 적이 있다고 생각합니다.

그러나 오늘 은 특정 클래스가 아닌 어셈블리에 함수를 추가해야합니다 . 즉, 거의 모든 클래스 가 특정 기능을 사용할 있습니다.

이 기능을 어디에 두어야 (+1 추가)?

"유틸리티"클래스에 놀랍게도 더럽게 죽입니다. 준 관련 수업에 붙이고 다른 수업에서 직접 부르게하면 기분이 나빠는.

이 특정 코드는 기본적으로 IList<PointF>a를 정규화 된 목록으로 절단 합니다. 나는 그것을 확장 방법으로 추가하는 것이 IList<PointF>가장 좋은 방법이라고 생각합니다.


이 작업이에 대한 작업 인 경우에 IList<PointF>대한 확장 메서드 IList<PointF>.

일반적으로, Utils그리고 Helper형 클래스는 피해야한다. 당신은 유틸리티 메소드 라고 생각할있는 것이 실제로는 (당신이 말한 것처럼) 자신의 클래스에 다소 많은 방식이라는 것을 알게 것입니다. 그러나 Util-like 클래스 (유용한 메소드와 관련된 그룹 클래스)가 허용하는 도메인 특정 경우가 있습니다 .


"전역"국내와 메소드에는 문제가 없습니다. 당신은 항상 사용합니다. 프레임 워크는이를 "정적"클래스 또는 "정적"메서드라고는 것을 좋아합니다.

거의 필요하지 않지만 일반적으로 메소드 / 변수가 C #에 필요한 네임 스페이스에 내부 정적 클래스 Util을 추가하고 VB.NET에 대한 모듈을 추가합니다.

.NET Framework의 샘플

  • System.Collections.Specialized.CollectionsUtil
  • System.Net.WebUtility
  • .NET Framework에 대한 Microsoft의 소스 코드를 확인하십시오. 수많은 내부 유틸리티 클래스를 사용할 수 있습니다.

물론 'ListUtilities'또는 PointListUtilities클래스에 넣어야합니다 . '유틸리티'클래스의 주요 문제인 단일 책임 원칙을 어기는 것이 아닙니다.

참고 URL : https://stackoverflow.com/questions/3339929/if-a-utilities-class-is-evil-where-do-i-put-my-generic-code

반응형