나는 GRASP를 배우려고 노력 중이며 로우 커플 링에 대한 설명 (이 페이지 3 )을 발견했으며 이것을 발견 했을 때 매우 놀랐습니다.
클래스 의 메소드
addTrack
를 고려하십시오.Album
가능한 두 가지 메소드는 다음과 같습니다.
addTrack( Track t )
과
addTrack( int no, String title, double duration )
커플 링을 줄이는 방법은 무엇입니까? 앨범 클래스를 사용하는 클래스는 트랙 클래스를 알 필요가 없기 때문에 두 번째는 않습니다. 일반적으로 메소드에 대한 매개 변수는 기본 유형 (int, char ...) 및 java. * 패키지의 클래스를 사용해야합니다.
나는 이것에 반대하는 경향이있다. 나는 여러 가지 이유로 인해 addTrack(Track t)
더 낫다고 믿는다 addTrack(int no, String title, double duration)
.
가능한 한 적은 수의 매개 변수를 사용하는 것이 좋습니다 (Bob Uncle Bob의 Clean Code에 따르면 바람직하지 않거나 경우에 따라 2, 특별한 경우에는 3, 리팩터링이 필요한 경우-홀리 규칙이 아닌 권장 사항 임) .
경우
addTrack
인터페이스하는 방법이며, 요구 사항이이 것을 필요Track
자세한 내용은 (예를 들어 연도 또는 장르)를해야하고 인터페이스를 변경해야하는 등 방법이 다른 매개 변수 지원을해야한다고.캡슐화가 깨졌습니다.
addTrack
인터페이스에 있으면 의 내부를 알 수 없습니다Track
.실제로 많은 매개 변수와 함께 두 번째 방식으로 더 연결됩니다. 가정
no
매개 변수를 요구하는 것은에서 변경할 수int
에long
이상이 있기 때문에MAX_INT
트랙 (또는 어떤 이유) 다음 두Track
방법이 될 경우 상태 및 방법의 필요성이 변경되는addTrack(Track track)
경우에만이Track
변경됩니다.
모든 4 가지 주장은 실제로 서로 연결되어 있으며, 그 중 일부는 다른 것의 결과입니다.
어떤 접근법이 더 낫습니까?