2020-08-19 TIL
1 minute read
인스턴스 필드와 인스턴스 메소드가 필요한 이유
의존 객체
- 클래스는 상호 크로스로 의존 객체가 될 수 있다.
- 객체지향은 절대 쌍방향으로 참조(레퍼런스)하지 말라고 이야기 한다.
- 쌍방향이 되는 상황이 되면 인터페이스 등을 사용한다.
인스턴스 필드(non-static field)
- new 명령을 통해 Heap 영역에 생성된다.
- 개별적으로 다뤄야 할 값이라면 인스턴스 필드로 선언하라.(처음부터 인스턴스 필드로 만들어도 좋다.)
- 인스턴스 필드를 다루는 메서드는 인스턴스 메서드(non-static method)로 선언한다.
- 인스턴스 메서드는 호출할 때 반드시 유효한 레퍼런스(인스턴스 주소)가 있어야 한다.
- 레퍼런스는 인스턴스 메서드의 내장(built-in) 로컬 변수인 this에 저장된다.
- 인스턴스들이 공유하는 상수값은 인스턴스 필드로 만들 필요가 없고 스태틱 멤버(클래스 멤버)로 만든다.
- 스태틱 필드로 만든 클래스가 여러개 필요해질 때 클래스를 여러개 만들지 말고 처음부터 인스턴스 필드로 만들어 대비하는 것이 좋다.
- 클래스를 복붙하면 버그가 복사되었을 때 관리하기 어렵다.
생성자가 필요한 이유
생성자
- 생성자는 인스턴스를 사용하는데 문제가 없도록 인스턴스 필드를 유효한 값으로 초기화시키는 일을 한다.
- 생성자를 이용하여 의존 객체를 강제로 주입하게 한다.
- 인스턴스를 생성할 때 의존 객체를 반드시 주입하도록 기본 생성자 대신 의존 객체를 파라미터로 받는 생성자를 추가한다.
UI 코드와 Data 코드 분리
- 객체지향 프로그래밍을 할 때 다음 두 가지를 명심해야 한다.
- Low Coupling
- High Cohesion
관계도 낮추기(Low Coupling) 란?
- 한 클래스가 많은 클래스에 의존하는 구조로 작성하면 의존 클래스가 변경될 때 마다 영향을 받기 때문에 유지보수에 좋지 않다.
- 그래서, 가능한 의존하는 클래스의 접점을 줄이는 구조로 만드는 것이 좋다.
응집력 강화(High Cohesion) 란?
- 한 클래스가 너무 다양한 역할을 수행하면 클래스의 코드가 커지고 변경 사항이 잦아지기 때문에 유지보수에 좋지 않다.
- 그래서, 가능한 한 클래스가 한 개의 역할만 수행하게 만드는 것이 유지보수에 좋다.
- 역할을 작게 쪼개게 되면 해당 클래스를 다른 프로젝트에서 재사용하기가 쉽다.
You may also enjoy
less than 1 minute read
TIL
less than 1 minute read
TIL
less than 1 minute read
TIL