Clean Code 6장. 객체와 자료 구조

HYl·2022년 5월 3일
0

Clean Code

목록 보기
6/9

DAY 6

오늘 읽은 범위 : 6장, 객체와 자료 구조


책에서 기억하고 싶은 내용을 써보세요.

변수를 private로 정의하는 이유가 있다. 남들이 변수에 의존하지 않게 만 들고 싶어서다. 충동이든 변덕이든, 변수 타입이나 구현을 맘대로 바꾸고 싶어 서다. 그렇다면 어째서 수많은 프로그래머가 get 함수와 set 함수를 당연 하게 public해 비공개 변수를 외부에 노출할까?

// 목록 6-3 구체적인 Vehicle 클래스
public interface Vehicle {
	double getFuelTankCapacityInGallons(); 
    double getGallonsOfGasoline();
}

// 목록 6-4 추상적인 Vehicle 클래스
public interface Vehicle {
	double getPercentFuelRemaining();
}

목록 6-3과 목록 6-4에서는 목록 6-4가 더 좋다. 자료를 세세하게 공개하기보다는 추상적인 개념으로 표현하는 편이 좋다. 인터페이스나 조회/설정 함수만으로는 추상화가 이뤄지지 않는다. 개발자는 객체가 포함하는 자료를 표현할 가장 좋은 방법을 심각하게 고민해야 한다. 아무 생각 없이 조회/설정 함수를 추가하는 방법이 가장 나쁘다.


객체는 동작을 공개하고 자료를 숨긴다. 그래서 기존 동작을 변경하지 않으면서 새 객체 타입을 추가하기는 쉬운 반면, 기존 객체에 새 동작을 추가하기는 어렵다. 자료 구조는 별다른 동작 없이 자료를 노출한다. 그래서 기존 자료 구조에 새 동작을 추가하기는 쉬우나, 기존 함수에 새 자료 구조를 추가하기는 어렵다.
(어떤) 시스템을 구현할 때, 새로운 자료 타입을 추가하는 유연성이 필요하면 객체가 더 적합하다. 다른 경우로 새로운 동작을 추가하는 유연성이 필요하면 자료 구조와 절차적인 코드가 더 적합하다. 우수한 소프트웨어 개발자는 편견 없이 이 사실을 이해해 직면한 문제에 최적인 해결책을 선택한다.


오늘 읽은 소감은?

이번 장을 통하여 내가 더러운 코드를 작성하고 있었구나 생각이 들었다.
객체 지향 코드를 잘 설계하기 위하여 최적인 해결책을 끊임없이 생각하고 고치자.

profile
꾸준히 새로운 것을 알아가는 것을 좋아합니다.

0개의 댓글