OOP에서 진짜 중요한 건 '캡슐화'도 '상속'도 아닙니다
- OOP에서 가장 중요한 것은 객체가 생성되는 시점부터 유효한 상태를 유지하는 것임 🔑
- 객체 초기화 시 유효하지 않은 상태는 널(null) 예외와 같은 버그를 유발할 수 있음 🐛
- 생성자를 통해 객체 생성 시 필요한 모든 매개변수를 받아 유효한 상태로 초기화해야 함 🛠️
- C#의 'required' 키워드는 필수 필드를 초기화하지 않으면 컴파일 에러를 발생시켜 객체의 유효한 상태를 강제함 ✅
- 과거에는 객체 초기화 구문(Object Initializer) 사용을 금지하고 생성자를 통한 초기화를 권장했음 🚫
- 생성자를 통해 초기화하면 객체 생성 과정을 명확히 파악하고 유지보수를 용이하게 할 수 있음 👓
- JSON 직렬화/역직렬화를 위해 기본 생성자와 세터(setter)/게터(getter)를 사용하고, 코드 내 직접 호출을 막기 위해 Obsolete 태그를 활용함 🏷️
- JSON 직렬화/역직렬화 과정에서 객체의 유효성을 보장하기 위해 특정 인터페이스를 상속하도록 강제하는 자체 직렬화 래퍼를 사용함 🛡️
- 객체의 상태 유지는 메모리 관리뿐만 아니라 데이터 직렬화/역직렬화 과정에서도 중요함 💾
- 객체지향 프로그래밍 및 설계 시 객체의 유효한 상태 유지를 위한 노력이 필요함 🤔