728x90
규칙 4. 한 줄에 점을 하나만 찍는다.
낯선 사람과는 대화하지 말고, 친구랑만 대화하라. 즉 한 줄에 점을 여러 개 찍지 말고 하나만 찍으라는 원칙이다. 점이 많다면 설계에 대한 고민을 다시 해볼 필요가 있다.
점을 찍는 행위는 필드나 메서드에서 인스턴스에 접근하려는 행위를 의미한다. 점의 개수가 많다는 것은 호출하려는 객체의 내부에 깊이 접근하겠다는 의도이고, 이는 호출자와 피 호줄자 사이에 강한 결합도가 형성되었다는 것을 의미한다.
예시
다음은 팀과 그 안에 멤버들이 속해있는 간단한 예시이다. Team 내부에 팀원들의 리스트인 members가 정의되어 있는 구조이다.
팀에 새로운 멤버를 등록하기 위해 getter로 members를 가져와 add() 메서드를 통해 등록 하였다. 여기서 우리의 친구는 team이다. members는 우리에겐 낯선 사람이다. 결정적으로 점이 두 개다.
public class TeamService {
public void register() {
Team team = new Team("team1");
Member member = new Member("kim", 23);
team.getMembers().add(member);
}
}
메시지를 보내라
우리는 낯선 사람인 members에 직접 접근하는 것은 좋지 않다. 이는 객체 간의 결합도를 강하게 하는 원인이 된다.
그래서 우리는 직접 접근하기보다 team에게 "나 이 사람을 팀원으로 추가해 줘!"라는 메시지를 보내는 것이 좋다. 다음과 같이 team의 addMember라는 메서드를 호출하는 것으로 팀원을 등록한다. 우리는 team에게 추가해 달라는 메시지만 보내고 추가는 team이 알아서 처리하도록 한 것이다. 결과적으로 점이 하나로 줄었다.
public class TeamService {
public void register() {
Team team = new Team("team1");
Member member = new Member("kim", 23);
team.addMember(member);
}
}
public class Team {
private String name;
private List<Member> members = new ArrayList<>();
public Team(String name) {
this.name = name;
}
public void addMember(Member member) {
members.add(member);
}
}
728x90