본문 바로가기
728x90

도서6

1부- 6장. 데이터 보호(단계 4/4) 1. 긴 함수 조각내기 2. 타입 코드 처리 3. 유사 코드 통합 4. 데이터 보호 데이터 캡슐화 데이터와 기능에 대한 접근을 제한하는 캡슐화에 중점을 둔다. 데이터 캡슐화란 변수와 메서드를 클래스로 옮기는 과정을 말한다. 이는 접근할 수 있는 지점을 제한하고 구조를 명확하게 하며 응집력을 더 명확하게 하는데 도움을 준다. 1) getter 와 setter를 사용하지 말 것 부울(Boolean)이 아닌 필드에 setter나 getter를 사용하지 말자. 문제점 -> getter: 캡슐화를 해제하고 불변속성을 전역으로 만들어 객체를 얻은 어느 곳에서나 호출하여 수정할 수 있게 만든다. setter: 데이터를 반환하도록 getter를 수정하고 이 데이터를 받는 곳에서도 이러한 구조를 .. 2023. 10. 14.
1부- 5장. 유사한 코드 융합하기(단계 3/4) 1. 긴 함수 조각내기 2. 타입 코드 처리 3. 유사 코드 통합 4. 데이터 보호 5.4 클래스 간의 코드 통합 어떤 동작에 따라 클래스를 분리한다. 이것을 전략 패턴이라 하는데 예를 들어, 지도에서 출도착지를 설정하고 수단은 어떤것을 선택할건지에 따라 클래스를 나눈다. 대중교통 클래스, 자동차 클래스, 도보 클래스 처럼 동작별로 나누게 된다. 이러한 패턴을 이용하여 발생하는 클래스 간의 관계를 다이어그램으로 표현할 수 있는데 흔히 UML을 사용한다. 전략 패턴이 도입 되면서 상태 패턴이라는 개념도 알아야 하는데, 상태 패턴이란 객체의 상태에 따라 클래스를 분리하는 것을 의미 한다. 예를 들어, 컴퓨터 전원 인터페이스가 있다면 이 인터페이스를 구현 하는 on 클래스, off 클래.. 2023. 10. 4.
1부- 4장. 타입 코드 처리하기(단계 2/4) 1. 긴 함수 조각내기 2. 타입 코드 처리 3. 유사 코드 통합 4. 데이터 보호 4.1. 간단한 if문 리팩터링 if-else문의 사용을 지양하고 다형성 있는 코드를 작성 해야한다. (if-else를 사용하면 코드에서 결정이 내려지는 지점을 고정하게 된다. 그럴 경우 if-else가 있는 위치 이후에서는 다른 변형을 도입할 수 없기 때문에 코드의 유연성이 떨어진다.) 신호등의 동작을 코드로 만든다고 생각해보자. func run(input: String) -> Bool { if input == Light.Red { return false } else if input == Light.Yello { return false } else in input == Light.Green { r.. 2023. 9. 22.
1부- 3장. 긴 코드 조각내기(단계 1/4) 1. 긴 함수 조각내기 2.타입 코드 처리 3. 유사 코드 통합 4. 데이터 보호 코드가 쉽게 지저분해지는 주 원인 메서드 여러가지 일을 한다 추상화의 수준이 맞지않다 주석과 적절한 메서드명이 부족하다 코드를 조각내는 5가지 규칙 1. 다섯 줄 제한 한가지 작업만 해야하는 리펙터링 정의를 생각해보면 메서드가 길다는 것 자체가 좋지 않은 코드이다. 그렇기 때문에 메서드는 {}를 제외하고 5줄 이하여야 한다. 한가지 작업만 하는 메소드를 만들게 되면, 훨씬 빠르고 이해하기 쉽다. 2. 메소드 분리 메소드 내에 역할들을 그룹으로 작게 분리하여, 빈 줄을 추가하거나 주석을 추가한다. 이런 작은 그룹들은 하나의 메서드로 추출할 수 있다. 3. 추상화 수준 맞추기 코드는 직접 조작하는 낮은 .. 2023. 8. 27.
1부- 2장. 리팩터링 깊게 들여다보기 리팩터링의 이점과 핵심을 정리한다. 가독성 의도가 잘 전달되어야 한다는 의미 예. if a != false { return false } else { return true } 위와 같이 첫 조건문에 false를 사용하는 것은 (부정문을 사용하는 것은) 읽기 어렵고, 단순하게 만들 수 있는 코드를 길게 풀어 씀으로써 또 읽기 어려운 코드이다. 이를. return a 위와 같이 리팩터링 하면, 같은 기능을 하며 가독성 좋은 코드로 만들 수 있다. 유지보수성 변경(수정 및 추가)되는 부분이 많으면 안된다. 한군데서 무언가 수정함으로 관련 없는 다른 곳에 문제가 발생하는 것은 코드가 취악한 것이고, 일반적으로 이 근원은 전역변수에 있다. 전역 변수는 어디서든 읽고 쓰기가 가능하여 값의 변경이 나타날 수 있다. .. 2023. 8. 19.
1부- 1장. 리팩터링 리팩터링하기 이 책은 리팩터링을 어떻게 해야하는지에 대한 수련법을 기록한다. 리팩터링이란? 코드 스멜을 줄이고 코드의 가독성과 유지보수성을 높이기 위한 방법 (기능은 변경하지 않고 코드를 변경하는 것) 리팩터링을 하는 이유? 향후 유지보수를 하기 위해 코드의 가독성을 높이고 수정의 범위를 줄이기 위함 리팩터링은 언제 하고 언제 하지 말아야 하나 리팩터링은 항상 해야한다. 다만 아래와 같은 상황에서는 하지 않는것이 좋다 1. 한번 실행하고 삭제될 코드 2. 폐기 전 3. 엄격한 성능 요구 사항이 있는 경우 2023. 8. 19.