본문 바로가기

클린코드

[클린코드 완독하기] 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 06 객체와 자료구조 Chapter 06. 객체와 자료구조로 데이터 표현하기 01 자료구조 vs 객체 자료구조 Data Structure 객체 Object 데이터 그 자체 비즈니스 로직과 과련 자료를 공개한다. 자료를 숨기고, 추상화한다. 자료를 다루는 함수만 공개한다. 변수 사이에 조회 함수와 설정 함수로 변수를 다룬다고 객체가 되지 않는다. (getter, setter) 추상 인터페이스를 제공해 사용자가 구현을 모른 채 자료의 핵심을 조작할 수 있다. 📍 자료구조 vs 객체 예시 (1) Vehicle '자료구조' 로 쓰일 때, public interface Vehicle { double getFuelTankCapacityInGallons( ); // 연료 탱크 용량(갤런 단위) double getGallonsOfGasol.. 더보기
[클린코드 완독하기] Chapter 03 함수 Chapter 03. 함수 작성하기 01 SOLID 원칙 : 객체지향 설계의 5가지 원칙 * SOLID원칙 더 이해하기 -> https://6161990src.tistory.com/67?category=845791 [JAVA] 객체지향 5대원칙 / POJO JAVA 📌 SRP Single Responsibility Principle 단일 책임 원칙 클래스는 하나의 일에만 책임진다. 즉, 1개의 클래스에 하나의 역할만 가져야한다. 설계중인 프로그래밍에 클래스가 여러가지 역할을 가지고 있다 6161990src.tistory.com 1. SRP 단일 책임 원칙 클래스는 하나의 기능만 가지며, 어떤 변화에 의해 클래스를 변경해야하는 이유는 오직 하나뿐이어야한다. SRP 책임이 분명해지기 때문에, 변경에 의한 연.. 더보기
[클린코드 완독하기] Chapter 01~02 깨끗한 코드와 의미있는 이름 Chapter 01. 나쁜 코드란 무엇일까 성능이 나쁜 코드 불필요한 연산이 들어가서 개선의 여지가 있는 코드 의미가 모호한 코드 이해하기 어려운 코드 네이밍과 그 내용이 다른 코드 중복된 코드 비슷한 내용인데 중복되는 코드 나쁜 코드를 방치하면 안되는 이유 1. 깨진 유리창 법칙 *깨진 유리창 하나를 방치해두면 그 지점을 중심으로 범죄가 확산한다는 법칙 나쁜 코드는 깨진 유리창처럼 계속 나쁜 코드가 만들어지도록 한다. 2. 생산성 저하 나쁜 코드는 팀 생산성을 저하시킨다. 기술 부채를 만들어 수정을 더 어렵게한다. 3. 새로운 시스템을 만들어야한다. 현 시스템을 유지보수하며 대처할 새로운 시스템 개발은 현실적으로 매우 어렵다. 나쁜 코드를 짜는 이유 촉박한 일정 생각보다 영향범위가 넓어서 일이 커질까봐.. 더보기