본문 바로가기

[클린코드 완독하기] Chapter 10 클래스 Chapter 10. 클래스 01 캡슐화되어야 한다 📍 캡슐화(Encapsulation) : 객체의 실제 구현을 외부로부터 감추는 방식 클래스를 개발할 때 기본적으로 구현을 감추고, 외부 객체와 상호작용하는 부분만 노출한다. 외부의 잘못된 사용을 방지한다. 경계에서 배웠던 부분, Map public class Stack { private int topOfStack = 0; private List elements = new LinkedList( ); public List getElements( ) { return elements; } public int size( ) { return topOfStack; } public void push(int element) { topOfStack++; elements... 더보기
[클린코드 완독하기] Chapter 09 단위 테스트 Chapter 09. 깨끗한 테스트 코드 01 테스트 코드의 중요성 📍 테스트 코드는 중요하다 테스트 코드는 실수를 바로잡아준다. 테스트 코드는 반드시 존재해야하며, 실제 코드 못지 않게 중요하다. 테스트 케이스는 변경이 쉽도록 한다. 코드에 유연성, 유지보수성, 재사용성을 제공하는 버팀목이 바로 단위테스트다. 테스트 케이스가 있으면 변경이 두렵지 않다. 테스트 케이스가 없다면 모든 변경이 잠정적인 버그다. 테스트 커버리지가 높을수록 버그에 대한 공포가 줄어든다. 지저분한 테스트 코드는 테스트를 안하니만 못하다. 테스트의 중요성 🤚. 테스트는 실사용에 적합한 설계를 끌어내준다. 🤚. 테스트를 작성해서 얻게 되는 가장 큰 수확은 테스트 자체가 아니다. 작성 과정에서 얻는 깨달음이다. 📍 테스트 코드는 자동.. 더보기
[클린코드 완독하기] Chapter 08 모호한 경계를 구분짓기 Chapter 08. 모호한 경계를 구분짓기 01 경계 오픈소스, 라이브러리를 안쓰는 프로젝트는 없다. 우리가 만든 코드에 외부에서 들어온 코드를 병합해야한다. 외부 코드는 외부에서 만든 코드인데, 외부 시스템과 호출하거나 단순히 외부에서 만들어진 코드일 수 있다. 우리 코드와 외부 코드를 깔끔하게 통합시키기 위해 경계를 잘 지어야 한다. 02 경계 짓기 (1) 우리 코드를 보호하기 캡슐화 (Encapsulation) 📍 객체의 실체 구현을 외부로부터 감추는 방식 📍 Sensor를 관리해야 한다. Sensor는 외부에서 사용된다. Sensor Id와 Sensor 객체로 저장하고 싶어서, Map을 사용한다. 하지만 Map을 그대로 사용하면 Map이 가진 clear()가 외부로 노출된다. Sensor의 '외.. 더보기
[클린코드 완독하기] Chapter 07 오류 처리 Chapter 07. 우아하게 예외 처리하기 01 예외 처리 방식 📍 오류 코드를 리턴하지 말고, 예외를 던져라 👎 Bad public class DeviceController { ... public void sendShutDown( ) { DeviceHandle handle = getHandle(DEV1); // Check the state of the device if ( handle != DeviceHandle.INVALID ) { // Save the device status to the record field retrieveDeviceRecord(handle); // If not suspended, shut down if ( record.getStatus( ) != DEVICE_SUSPENDED.. 더보기
[클린코드 완독하기] Chapter 06 객체와 자료구조 Chapter 06. 객체와 자료구조로 데이터 표현하기 01 자료구조 vs 객체 자료구조 Data Structure 객체 Object 데이터 그 자체 비즈니스 로직과 과련 자료를 공개한다. 자료를 숨기고, 추상화한다. 자료를 다루는 함수만 공개한다. 변수 사이에 조회 함수와 설정 함수로 변수를 다룬다고 객체가 되지 않는다. (getter, setter) 추상 인터페이스를 제공해 사용자가 구현을 모른 채 자료의 핵심을 조작할 수 있다. 📍 자료구조 vs 객체 예시 (1) Vehicle '자료구조' 로 쓰일 때, public interface Vehicle { double getFuelTankCapacityInGallons( ); // 연료 탱크 용량(갤런 단위) double getGallonsOfGasol.. 더보기
[클린코드 완독하기] Chapter 05 형식 맞추기 Chapter 05. 형식 맞추기 : 코드의 가독성에 필수적인 포맷팅 01 포맷팅이 중요한 이유 public void horriblyFormattedMethod(){ System.out.println("First line"); System.out.println("Second line"); System.out.println("Third line"); for( int i=0; i< 3; i++) System.out.println("number " + i ); } public void horriblyFormattedMethod(){ System.out.println("First line"); System.out.println("Second line"); System.out.println("Third line".. 더보기