문제

"도우미"클래스를 확장하는 공개 정적 내부 클래스를 설계 한 곳이 여러 곳이 있습니다. 내 코드가 훨씬 안전하고 내 의견으로는 읽기 쉬운 곳이 있습니다. 예를 들어, "SearchCriteria"클래스가 있다고 상상해보십시오. 정적 내부 클래스로 확장하여 검색어 (검색어 및 검색어 유형 그룹, 날짜 범위 등)에 대한 다양한 공통점이 있습니다. 특정 차이점을 가진 클래스. 이것 보인다 이론에서 나쁜 생각처럼 (타이트 커플 링 나쁜!) 확장은이 검색 가능한 클래스 (한 클래스, 한 목적)에만 해당됩니다.

내 질문은 귀하의 경험에서 정적 내부 클래스 (또는 언어 동등성이 무엇이든)를 사용하여 코드를 더 읽기 쉽고 유지 관리 할 수있게 만들었습니까?

또한 이것이 커뮤니티 위키 자료인지 확실하지 않습니다.

도움이 되었습니까?

해결책

나에게 완벽하게 합리적으로 들립니다. 내부 수업으로 만들면 검색 가능한 클래스가 변경 될 때 쉽게 찾을 수 있고 검토를위한 명백한 후보자가됩니다.

단단한 커플 링은 다른 하나를 부르기 때문에 실제로 함께 속하지 않는 것들을 몇 가지만 부를 때만 나쁩니다. 예를 들어, 당신의 경우와 같이, 그들 중 하나가 다른 것을 지원하기 위해 존재하고, "응집력"이라고 불리는 것과 같이, 예를 들어, 예를 들어, 예를 들어 좋은 것.

다른 팁

클래스는 재사용 단위가 아닙니다. 따라서 클래스 간의 일부 커플 링은 정상이며 예상됩니다. 재사용 단위는 일반적으로 관련 클래스 모음입니다.

파이썬에는 다양한 구조가 있습니다.

  1. 패키지. 그들은 모듈을 포함합니다. 이것들은 본질적으로 약간의 파이썬 기계가 들어간 디렉토리입니다.

  2. 모듈. 여기에는 수업 (및 기능)이 포함되어 있습니다. 이것들은 파일입니다. 밀접하게 관련된 수업을 포함 할 수 있습니다. 종종 "내부 클래스"사업은이 수준에서 처리됩니다.

  3. 클래스. 여기에는 내부 클래스 정의와 메소드 기능이 포함될 수 있습니다. 때때로 (자주) 내부 클래스가 실제로 사용될 수 있습니다. 클래스 간 모듈 레벨 커플 링은 일반적으로 완벽하게 깨끗하기 때문에 이것은 드 rare니다.

내부 클래스를 사용하는 유일한 경고는 내부 클래스를 정의 할 때 다른 곳에서는 해당 기능을 사용할 필요가없고 그 기능은 반드시 외부 클래스와 결합되어 있습니다. 당신은 모두 정확히 동일하게 구현하는 많은 내부 클래스로 끝나고 싶지 않습니다. setOrderyByNameDesc() 방법.

"느슨한 커플 링"의 요점은 두 클래스를 분리하여 "SearchCriteria"클래스에 코드 변경이있는 경우 다른 클래스에서 변경되지 않아야합니다. 나는 당신이 말하는 정적 내부 수업이 잠재적으로 코드를 악몽으로 만들 수 있다고 생각합니다. SearchCriteria의 한 가지 변경 사항은 모든 정적 클래스를 검색하여 업데이트로 인해 어떤 클래스가 파손되었는지 파악할 수 있습니다. 개인적으로, 나는 어떤 이유로 든 실제로 필요한 내면의 수업에서 멀리 떨어져있을 것입니다.

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