"유틸리티"클래스가 사악한 경우 일반 코드를 어디에 두어야합니까?
저는 일반적으로 전역 변수 / 함수가 악하고 모든 코드가 관련된 클래스에 정확히 나오는 규칙에 따라 생활합니다.
이것은 매우 쉬운 규칙이며, 지금 까지이 규칙에 문제가 많은 적이 있다고 생각합니다.
그러나 오늘 은 특정 클래스가 아닌 어셈블리에 함수를 추가해야합니다 . 즉, 거의 모든 클래스 가 특정 기능을 사용할 수 있습니다.
이 기능을 어디에 두어야 (+1 추가)?
"유틸리티"클래스에 놀랍게도 더럽게 죽입니다. 준 관련 수업에 붙이고 다른 수업에서 직접 부르게하면 기분이 나빠는.
이 특정 코드는 기본적으로 IList<PointF>a를 정규화 된 목록으로 절단 합니다. 나는 그것을 확장 방법으로 추가하는 것이 IList<PointF>가장 좋은 방법이라고 생각합니다.
이 작업이에 대한 작업 인 경우에 IList<PointF>대한 확장 메서드 IList<PointF>.
일반적으로, Utils그리고 Helper형 클래스는 피해야한다. 당신은 유틸리티 메소드 라고 생각할 수 있는 것이 실제로는 (당신이 말한 것처럼) 자신의 클래스에 다소 많은 방식이라는 것을 알게 것입니다. 그러나 Util-like 클래스 (유용한 메소드와 관련된 그룹 클래스)가 허용하는 도메인 특정 경우가 있습니다 .
"전역"국내와 메소드에는 문제가 없습니다. 당신은 항상 사용합니다. 프레임 워크는이를 "정적"클래스 또는 "정적"메서드라고는 것을 좋아합니다.
거의 필요하지 않지만 일반적으로 메소드 / 변수가 C #에 필요한 네임 스페이스에 내부 정적 클래스 Util을 추가하고 VB.NET에 대한 모듈을 추가합니다.
.NET Framework의 샘플
System.Collections.Specialized.CollectionsUtilSystem.Net.WebUtility- .NET Framework에 대한 Microsoft의 소스 코드를 확인하십시오. 수많은 내부 유틸리티 클래스를 사용할 수 있습니다.
물론 'ListUtilities'또는 PointListUtilities클래스에 넣어야합니다 . '유틸리티'클래스의 주요 문제인 단일 책임 원칙을 어기는 것이 아닙니다.
'ProgramingTip' 카테고리의 다른 글
| Android 애플리케이션에서 TLS 1.2 지원을 활성화하는 방법 (Android 4.1 JB에서 실행) (0) | 2020.11.25 |
|---|---|
| grunt "test command"는 npm init에서 무엇을 소유하고 있습니까? (0) | 2020.11.25 |
| NodeJS에서 모듈을 '요구'하는 동안 const와 var 사이에 효율성 차이가 있습니까? (0) | 2020.11.25 |
| 추상 구문 트리를 구성하는 방법 (0) | 2020.11.25 |
| Eclipse Juno 4.2에서 "JPA Java Change Event Handler"프로세스를 실행하는 이유는 무엇입니까? (0) | 2020.11.25 |