cleanCode/FiveLinesOfCode 6

[FiveLinesOfCode] 6장: 유사한 코드 융합하기

6장 데이터 보호 의문점 학습목표 ‘getter와 setter를 사용하지 말것’ 으로 캡슐화 강제하기란? ‘getter와 setter 제거하기’ 로 getter제거하기란? ‘공통 접사를 사용하지말것’을 위한 ‘데이터 캡슐화’ 사용이란? ‘순서 강제화’로 불변속성제거란? 키워드 6.1 getter없이 캡슐화 하기 정의 Boolean 이 아닌 필드에 getter나 setter 사용하지 말것 즉 직접할당하거나 반환하는 메서드를 의미함 getter 존재시 캡슐화를 해제하고 불변속성을 전역적으로 만듬 객체 반환 후 반환받은 곳은 객체를 다른곳어 더 전달이 가능하고 이것은 제어 불가능 setter 존재시 setter수정시 시그니처 유지할 수있는 또 다른 간접적 레이어 도입할 수있음 실제로는 setter를 통한 새로..

[FiveLinesOfCode] 5장 유사한 코드 융합하기

5장 유사한 코드 융합하기 의문점 성능 최적화는 프로파일링 도구 사용해서 가이드 해야함 (p.112) 인터페이스는 사용구의 일반적인 원입니다. 학습목표 유사 클래스 통합하기란? 조건부 산술로 구조 노출하기란? 간단한 UML 클래스 다이어그램 이해하기란? ‘전략 패턴 도입’으로 유사코드 도입하기란? ‘구현체가 하나뿐인 인터페이스 만들지 말것’으로 어지러움 정리하기 키워드 1. 유사한 클래스 통합하기 5.1 개요 updateTile() 은 우선 else 사용금지 규칙 위반함 → 첫번째 단계로 || 에 대해서 하나의 함수로 도입해야함 // Stone FallingStone의 유일한 차이점 2개 class Stone implements Tile { isAir() { return false; } isStone()..

[FiveLinesOfCode] 4장 타입코드 처리하기

4장 : 타입코드 처리하기 의문점 enum 을 클래스로 굳이 다 나눠야함? → 복잡도에 따라서 선택! 대출부분 학습목표 if 문에서 else를 사용하지말것과 switch문을 사용하지 말것으로 ‘이른 바인딩’ 제거란? ‘클래스로 타입 코드 대체’, 그리고 ‘클래스로의 코드 이관’으로 if 문 제거하기란? ‘메서드 전문화’로 문제가 있는 일반성 제거하기란? ‘인터페이스에서만 상속’받을 것으로 코드 간 커플링(결합) 방지하기 ‘메서드의 인라인화’ 및 ‘삭제 후 컴파일하기’를 통한 불필요한 메서드 제거 키워드 1. 간단한 if문 리팩터링 4.1 규칙 : if문에서 else를 사용하지 말것 정의 프로그램에서 인식 하지 못하는 타입인지를 검사하지 않는 한, if문에서 else사용하지 말것 if-else 를 사용하면..

[FiveLinesOfCode] 3장 : 긴 코드 조각내기

3장 : 긴 코드 조각내기 의문점 불변속성(invariant), 가정설정문(assertion) 디자인패턴 → 상속보다는 컴포지션, 컴포지션이 컴파일 오류 발생 만듬? 학습목표 다섯줄 제한(FIVE LINES)으로 지나치게 긴 메서드 식별하기란? 세부사항을 보지 않고 코드 작업하기란? 메서드 추출(EXTRACT METHOD)로 긴 메소드 분해하기란? 호출 또는 전달, 한가지만할것(EITHER CALL OR PASS)으로 추상화 수준에 맞추기란? if 문은 함수의 시작에만 배치로 if문 분리하기란? 키워드 DRY, KISS 지침을 따른경우라도 코드는 여전히 혼란스러움 1. 다섯줄 제한(FIVE LINES)으로 지나치게 긴 메서드 식별하기란? 정의 {} 제외 if, for, while, 세미콜론끝나는 모든것은..

[FiveLinesOfCode] 2장 : 리팩터링 깊게 들여다보기

2장 : 리팩터링 깊게 들여다보기 의문점 - 불변속성(invariant), 가정설정문(assertion) - 불변속성? - 객체가 정상적으로 작동하기 위해 값, 식, 상태의 일관성 보장하기위해 항상 참이 되기 위한 조건 - 기름양은 0 ≤ oil ≤ 100 사이여야만 함 - 이 범위를 벗어나면 안되는 조건을 불변속성이라 함 - - 디자인패턴 → 상속보다는 컴포지션 학습목표 가독성을 통한 의도 전달이란? 유지보수성 개선을 위한 불변속성(invariant) 지역화란? 개발속도 향상을 위한, 추가(addition)를 통해 변경가능하게 만들기란? 리팩터링의 일상 업무화란? 키워드 1. 가독성을 통한 의도 전달이란? 2. 유지보수성 개선을 위한 불변속성(invariant) 지역화란? - 가독성 및 유지보수성 향상..

[FiveLinesOfCode] 1장 : 리팩터링, 리팩터링 하기

1장 : 리팩터링 리팩터링 하기 의문점 XP에서 스파이크 시작전 핵심기능 간단구현 레드 - 그린 - 리팩터 반복 TDD 를 처리를 기술한 방법 자동화된 테스트 학습목표 리팩토링의 구성요소는? 일상 업무에 리팩토링 도입이란? 리팩토링에 있어 안전의 중요성이란? 키워드 리팩토링의 구성요소는 스킬,문화,도구 로 구성되어있다 제반 정의 좋은 코드? : 사람이 읽기 쉽고, 유지보수가 용이하며, 의도한대로 잘 작동하는 코드 리팩토링? : 기능을 변경하지않고, 코드의 가독성과 유지보수가 쉽도록 코드를 변경하는것 리팩토링의 이유 가독성 높이면 → 기능구현 시간 확보 (경제성) 유지보수가 용이 → 버그가 줄어들고 수정이 쉬워짐 생각하기 편하다 → 한번에 많은 것을 기억해야할수록 지침, 스킬 : 무엇을 리팩토링 할 것인가..