독서 6

책01. 파이브라인즈 오브 코드 06. 데이터보호

6장. 데이터 보호 6.1 getter없이 캡슐화하기 getter와 setter를 사용하지 말것. getter와 setter는 결국 캡슐화된 객체의 필드의 캡슈로하를 해제하고, 불변속성을 전역적으로 만든다. 가변객체에서 발생하는 문제라서, bool 타입을 예외로한다. 말이 너무 어려워서, 곱씹을 수 있도록 전문을 쓴다. 여기서 setter 또는 getter를 언급할 때는 각각 부울이 아닌 필드를 직접 할당하거나 반환하는 메서드를 의미합니다. C# 프로그래머의 경우 이 정의에 프로퍼티(property)도 포함됩니다. 메서드의 이름과는 아무런 상관이 없습니다. getX라고 부를수도 있고 아닐수 도 있습니다. getter와 setter는 흔히 private 필드를 다루기 위한 메서드로 캡슐화와 함께 배웁니다...

독서 2024.03.03

책01. 파이브라인즈 오브 코드 05. 유사한 코드 융합하기

5. 유사한 코드 융합하기 5.1 유사한 클래스 통합하기 공통된 *상수 메서드를 가지고 있고, 반환값만 다르다면, 생성자로서 무엇을 반환할지 결정하는 식으로 클래스를 통합할수 있다. 통합하는 방식은 다음과 같다. 메소드 주위에 if(true){}를 추가한다. true를 기준 메서드를 호출해서 결과를 상수값과 비교하는 표현식으로 바꾼다. 각 클래스들의 표현식과 본문들을 else와 함께 붙여넣는다. 기준 메서드에 대한 상수를 생성자를 통해 필드에 할당받도록 한다. 상수 메소드에서 상수 대신 할당된 필드 값을 반환하도록 메서드를 변경한다. 문제없나 확인을 위해 컴파일한다. 필드 기본값을 매개변수로만든다. 통합 클래스중 하나를 제외한 다른 모든 클래스를 삭제하고, 모든 컴파일 오류를 삭제하지 않은 클래스로 변경..

독서 2024.02.18

책01. 파이브라인즈 오브 코드 04. 타입 코드 처리하기

4. 타입 코드 처리하기 4.1. 간단한 if 문 리팩터링 4.1.1. if문에서 else 문 사용하지말기 if문은 검사(check)이고, if-else문은 의사결정(decision)으로 간주합니다. (캬.. else문을 쓰면 빠르게 "결정"되니까, 하드코딩느낌이고, 코드의 유연성이 떨어진다) if-else같은 동작은 컴파일때 빠르게 결정되는 이른바인딩 스멜. 별루다. if문을 수정해야 변경할 수 있기 때문에 전에 배운 추가에 의한 변경을 방해한다. 반면 늦은 바인딩은 추가에 의한 변경을 가능케 한다. 여기서 또 멋있는 말이 등장하는데, if는 조건연산자로 흐름을 제어하지만, 객체지향 프로그래밍에서는 객체라는 훨씬 더 강력한 제어 흐름 연산자가 있다!. 즉 if를 쓰지말고 객체를 쓰자는 말인데, 이게 무..

독서 2024.02.07

책01. 파이브라인즈 오브 코드 03. 긴코드 조각내기

3장. 긴코드 조각내기 3장이다. 말그대로 긴코드를 조각내는 다양한 방법들을 소개한다. 원래 짧을수록 쉽게쉽게 읽힌다. 나는 소설읽는 것을 좋아하는데, 교과서에 실린 문학작품들의 표현은 고급스럽고 곱씹는 묘미가 있는반면, 좀 길어서 한번에 이해하기 어렵다. 반면 웹 소설의 경우 짧은 문체로 인해 바로바로 이해가 가능하고 쉽게쉽게 읽힌다. 여기 아주 긴코드가 있다. 아주 길고 복잡한 로직으로 이루어져 코드를 보며 음미한다.. 해당 코드의 유지보수는 천년만년이걸리겟따. 여기 아주 짧은 코드가 있다. 아주 짧고 단순한 로직으로 이루어져 코드를 보면 바로 이해가 된다. 해당 코드의 유지보수는 너무 손쉽다. 3장 느낀점 실제로 현재 싸피(개발자 부트캠프)에서 프로젝트중인데, 내가 짠 코드를 리팩토링하고 싶은 욕구..

독서 2024.02.01

책01. 파이브 라인즈 오브 코드 02. 리팩토링 깊게 들여다보기

2장. 리팩토링 맛보기 말그대로 리팩토링 기법 맛보기 느낌이다. 뭔가 다 아는 내용 엄밀하게 말하기 느낌이랄까.. 역시나 도움이 되었다. 2장을 읽으며 느낀점과 고찰 전역변수는 지양하자리팩토링의 이유 중 하나인 가독성면에서도 전역변수 사용이 오히려 유리할 수있다. dfs 탐색을 예로서 떠올려보자. 매번 dfs에서 다뤄야하는 객체들을 매개변수로 바리바리(바리스타) 싸들고 다니는걸 보면 오히려 어지러울 때가 많다고 느끼기 때문이다. 근데 막상 코딩테스트 볼때는 전역변수가 선택이 아닌 필수로서 사용중이다.. 하나의 변수를 예쁘게 포장해서 옮기며 안전하게 수정하기보다는, 빠르게 변수에 접근해서 다양한 메소드로 변수값을 휙휙 바꿔야하기 때문이다. 목적에 따라서 필요할수도 있겠다는 생각이든다. 리팩토링 범위설정 잘..

독서 2024.01.31

책01. 파이브 라인즈 오브 코드 01. 리팩토링 리팩토링

독서.. 현재 다니고 있는 싸피에서 친구들과 책을 읽기로 했다. 이번에 읽을 책은 파이브라인즈 오브 코드 이다. 코드 리팩토링에 관련된 책이다. 책에 대한 전반적인 요약은 목차 수준으로 할 거 같다. 책을 읽었을때의 나의 감정과 인상적이었던 책의 내용, 내용으로 비롯된 나의 사고 흐름에 대해 기록하고자 한다. 1장을 읽고 느낀점.. 리팩토링은 기능구현에 의의를 두기보단, 기능 개발이 끝나고 지속성 있는 코드를 만들기 위해 필요하다는 생각이 든다. 책이 다양한 규칙을 소개하고, 실습위주의 내용이라, 책 내용을 따라 갔을때 리팩토링에 대한 가닥이 잡히길 기대한다. 객체지향 언어를 기반으로 한 리팩토링 유형들이다. 그만큼 객체지향언어가 가독성과 유지보수에서 강력하다는 생각이 들기도 한다. 1장 내용 대충 요약..

독서 2024.01.31