2024-BookStudy/bookmark

[3주차] Clean_Code_5-6장 김주영

Closed this issue · 2 comments

Q1. 101p.서로 밀접한 개념은 세로로 가까이 둬야한다. ~ 이게 바로 protected 변수를 피해야 하는 이유 중 하나다.
이게 무슨 말일까요?? protected는 동일한 패키지 혹은 자식 클래스에서만 접근이 가능합니다. 이게 서로 밀접한 개념은 세로로 가까이 둬야 한다랑 무슨 연관이 있는지 아시나요??

밀접한 개념은 같은 클래스 내부에서 정의 되어야 하는데 protected는 같은 패키지 말고도 다른 패키지에 속한 하위 클래스에서도 접근 가능하도록 하게 하는 제어자이기 때문에 굳이라는거죠. 밀접한 개념은 가까이 둬야하는데, 굳이 protected를 써서 멀리 떨어뜨려 놓는/멀리 있는 거 가져다쓰는 것을 피하라고 하는 것 같아요

house/HousePark.java

package house;  // 패키지가 서로 다르다.

public class HousePark {
    protected String lastname = "park";
}

house/person/EungYongPark.java

package house.person;  // 패키지가 서로 다르다.

import house.HousePark;

public class EungYongPark extends HousePark {  // HousePark을 상속했다.
    public static void main(String[] args) {
        EungYongPark eyp = new EungYongPark();
        System.out.println(eyp.lastname);  // 상속한 클래스의 protected 변수는 접근이 가능하다.
    }
}

EungYongPark.class에서 eyp.lastname가 무엇을 의미하는지 HousePark.class를 뒤져보러 가야 하고 기억도 해야 되니까 피로도가 급상승하는데, 이런게 한 두개가 아니면 여간 골치아픈 일이 아닌가 싶습니다.