내가 신입일때는
게터 세터 프라이빗 퍼블릭 변수 등을 나누는 기준을 명확하게 파악하지 못했었음
다 아는 거겠지만 접근 한정자가 왜 존재하는지에 대해서 고민해보는것도 재미있었음
일반적으로 프라이빗 변수는 해당 클래스 내에서만 접근 가능한 변수인데... 이렇게만 알고있으면 코드를 읽을때 바로 와닿지 않을꺼야. 그래서 프라이빗 변수는 뭐다라고 나름대로 정의를 내리고 코드를 읽어나감.
접근한정자는 궁극적으로 다음에 이 코드를 읽을 사람에게 지금 코드를 작성하는 이의 의도를 알려주는 문법이라고 생각함. 즉 의사소통의 수단인거지.
프라이빗은 -> "이 변수는 이 클래스에서 당신이 머릿속에 담아둘 필요가 없으니 넘어가라"
퍼블릭은 -> "이 변수는 다른 클래스에서 수정해서 사용해야하고 언제든 확인도 가능해"
읽기전용 프로퍼티 (public get, private set) -> "이 변수는 꺼내서 확인만 하는 용도야 수정할필요없어"
등등 다 의도가 있는데 종종 예를들어 자동차 계기판의 속력을 public 변수로 만들어두는 경우가 있어.
계기판에서 속력은 외부에 노출만 되어야하는거니 프로퍼티를 써야하는게 맞는건데 말이지.
신입때 선임이었던 두 사람이 있었는데
한 사람은 전부다 퍼블릭 변수로 만들어 쓰는 사람이었고
나머지 한 사람은 싹다 프로퍼티로 만드는 사람이었음
...
결국 oop 언어에서는 객체의 인터페이스를 항상 고민해줘야하는데 이걸 귀찮아하진 않아야겠다라며 선임들을 통해 반면교사삼아 배웠던것같다.
위 내용은 변수에만 쓰이는게 아니라 함수 클래스 등 모든 단위에 통용되는 결이며
결국 캡슐화를 지향하는 oop 언어에서 지켜줘야하는 것임
...
이 글은 똥글입니까 신에게 묻고싶다
- dc official App
사실 protected,internal등 변수의 역할및 범위를 명확히 함으로써 코드의 가독성이 향상되는게 주요목적이라 생각함.
ㄹㅇ 동의함