리팩터링2 스터디 - 010 - 2
10장 조건부 로직 간소화 10.5 특이 케이스 추가하기 Introduce Special Case 배경 특정 값을 확인한 후 똑같은 동작을 수행하는 코드가 곳곳에 있으면 중복 코드이다. 특정 값에 대한 똑같이 반응하는 코드가 여러 곳이라면 그 반응들을 한 데로 모으는 게 효...
10장 조건부 로직 간소화 10.5 특이 케이스 추가하기 Introduce Special Case 배경 특정 값을 확인한 후 똑같은 동작을 수행하는 코드가 곳곳에 있으면 중복 코드이다. 특정 값에 대한 똑같이 반응하는 코드가 여러 곳이라면 그 반응들을 한 데로 모으는 게 효...
10장 조건부 로직 간소화 10.1 조건문 분해하기 Decompose Conditional 배경 복잡한 조건부 로직은 프로그램을 복잡하게 만드는 가장 흔한 원흉에 속한다. 긴 함수는 그 자체로 읽기가 어렵지만, 조건문은 그 어려움을 한층 가중시킨다. 거북한 코드 블록이 주...
9장 데이터 조직화 9.1 변수쪼개기 Split Variable // ASIS let temp = 2 * (height + width); console.log(temp); temp = height * width; console.log(temp); // TOBE const pe...
8장 기능 이동 8.6 문장 슬라이드하기 배경 관련된 코드들이 가까이 모여 있다면 이해하기가 더 쉽다. 하나의 데이터 구조를 이용하는 문장들은 한데 모여 있어야 좋다. 문장 슬라이드하기 리팩터링으로 코드를 한데 모을 수 있다. 모든 변수 선언을 함수 첫머리에 모아두는 사...
8장 기능 이동 8.1 함수 옮기기 Move Function 배경 좋은 소프트웨어 설계의 핵심은 모듈성(Modularity)이다. 모듈성이란 프로그램 어딘가 수정하려 할 때 해당 기능과 관련된 작은 일부만 이해해도 가능하게 해주는 능력이다. 모듈성을 높이려면 연관된 요소들...
7장 캡슐화 7.6 클래스 인라인하기 Inline Class // ASIS class Person { get officeAreaCode() { return this._telephoneNumber.areaCode; } get officeNumber() { ...
7장 캡슐화 모듈을 분리하는 가장 중요한 기준은 각 모듈이 다른 모듈을 상대로 자신의 비밀을 얼마나 잘 숨기느냐에 있다. 데이터 구조는 ‘레코드 캡슐화하기’와 ‘컬렉션 캡슐화하기’로 숨긴다. 기본형 데이터 역시 ‘기본형을 객체로 바꾸기’로 캡슐화할 수 있다. 임시 변수가 많...
6장 기본적인 리팩터링 6.6 변수 캡슐화하기 Encapsulate Variable // ASIS let defaultOwner = { firstName: "마틴", lastName: "파울러" }; // TOBE let defaultOwnerData = { firstName...
클린코드 리뷰 - 002 오류처리에 대해 깨끗한 코드를 만들려면 오류처리를 잘 해야 한다. 오류코드를 반환하기 보다는 예외를 던지고 예외처리 함수에 예외처리를 맡긴다. 꼭 확인된 예외로 처리할 필요는 없다. 미확인 예외로도 소프트웨어 구현에 무리없다. 예외를 던질 때 연산...
클린코드 리뷰 - 001 21년 11월 3일부터 22년 1월 19일까지 클린코드 북스터디를 진행하였다. 4명의 동료들과 서로 의지하며 마무리한 정말 값진 경험이었다. 클린코드는 소프트웨어 설계원칙, TDD 등을 다시금 상기시켜주는 고마운 책이다. 나는 클린코드를 타인이 이해...