728x90

15

13장 코드 분량 줄이기

PART Ⅲ. 코드 재작성하기 13장. 코드 분량 줄이기 - 프로그래머가 배워야 하는 가장 중요한 기술은 언제 코딩을 해야 하는지 아는 것이다. ★ 가장 읽기 쉬운 코드는 아무것도 없는 코드다. __1. 그 기능을 구현하려고 애쓰지 마라. 그럴 필요가 없다. - 프로그래머는 대개 프로젝트에 정말로 필요한 기능이 얼마나 있는지 과대평가하는 경향이 있다. - 또한 어떤 기능을 구현하는 데 필요한 노력을 과소평가하는 경향도 있다. - 이는 조잡한 프로토타입을 구현하는 시간을 지나치게 낙관적으로 에측하고, 그 코드를 장차 유지보수하고, 문서를 만들고, 코드 베이스에 새로운 '무게'를 더하는데 얼마나 많은 시간이 필요한지를 완전히 잊어버리게 한다. __2. 요구사항에 질문을 던지고 질문을 잘게 나누어 분석하라. ..

12장 생각을 코드로 만들기

PART Ⅲ. 코드 재작성하기. 12장. 생각을 코드로 만들기 - 복잡한 생각을 다른 사람에게 설명할 때 중요하지 않은 자세한 내용 때문에 듣는 사람을 혼동시키는 일이 종종 있다. - '쉬운 말'로 자신의 생각을 지식이 부족한 사람에게 전달하는 기술은 매우 중요하다. - 여기에는 설명할 내용을 걸러서 요지만 뽑아내는 능력이 요구된다. - 코드도 마찬가지로 '쉬운 말'로 작성되어야 한다. - 이 장에서 설명할 코드를 더 명확하게 만드는 간단한 과정은 다음과 같다. 1. 코드가 할 일을 다른 사람에게 설명하듯이 '쉬운 말'로 묘사하라. 2. 이 설명에 들어가는 핵심적인 단어와 문구를 포착하라. 3. 설명과 부합하는 코드를 작성하라. __1. 논리를 명확하게 설명하기 - 예제 코드는 '사용자가 페이지를 볼 수..

11장 한 번에 하나씩

PART Ⅲ. 코드 재작성하기 11장. 한 번에 하나씩 - 한 번에 여러 가지 일을 수행하는 코드는 이해하기 어렵다. ★ 한 번에 하나의 작업만 수행하게 코드를 구성해야 한다. (코드를 '탈파편화(Defragmenting)'하라.) - 하나의 함수는 오직 한가지 작업만 하게 하는 것이 좋지만, 큰 함수를 독자적인 논리적 영역들로 재구성하는 것만으로 가독성에 도움이 된다. - 코드가 한 번에 한가지 일만 수행하게 하는 절차는 다음과 같다. 1. 코드가 수행하는 모든 '작업'을 나열한다. 이때 작업은 아주 간단한 일일수도 있고, 아주 모호한 일일수도 있다. 2. 이러한 작업을 분리하여 서로 다른 함수로 혹은 적어도 논리적으로 구분되는 영역에 놓을 수 있는 코드로 만들어라. __1. 작업은 작을 수 있다. -..

10장 상관없는 하위문제 추출하기.

PART Ⅲ. 코드 재작성하기 10장. 상관없는 하위문제 추출하기 - 큰 흐름과 관계가 적은 하위 문제를 적극적으로 발견해서 추출하라. 1. 주어진 함수나 코드 블록을 보고, 스스로에게 질문하라. "상위수준에서 본 이 코드의 목적은 무엇인가?" 2. 코드의 모든 줄에 질문을 던져라. "이 코드는 직접적으로 코드가 해결하기 위한 목적을 위해서 존재하는가? 혹은 그 목적을 위해서 필요하긴 하지만 그 자체와 직접적으로 상관없는 하위문제를 해결하는가?" 3. 만약 본래 목적과 직접적으로 관련되지 않은 하위문제를 해결하는 코드의 분량이 상당히 많으면, 이를 추출해서 별도의 함수로 만들어라. - 이렇게 추출된 코드는 자신이 호출되는 이유를 알 필요가 없어야 한다. __1. 소개를 위한 예: findClosestLo..

9장 변수와 가독성

PART Ⅱ. 루프와 논리를 단순화하기 9장. 변수와 가독성 - 변수를 잘못 사용하면 다음과 같은 문제가 있다. 1. 변수의 수가 많을수록 기억하고 다루기 더 어려워진다. 2. 변수의 범위가 넓어질수록 기억하고 다루는 시간이 더 길어진다. 3. 변수값이 자주 바뀔수록 현재값을 기억하고 다루기가 더 어려워진다. __01 변수 제거하기 - 가독성에 도움되지 않는 변수는 제거하는 것이 좋다. - 불필요한 임시 변수 : 복잡한 표현을 나누는 것도 아니고, 명확성에 도움이 되는 것도 아니고, 중복된 코드를 압축하지도 않는 임시 변수. - 중간 결과 삭제하기 : 그저 중간 값을 저장하는 변수는 결과를 얻자마자 곧바로 처리하는 방식으로 제거할 수 있다. - 흐름 제어 변수 제거하기 : 순수하게 프로그램의 실행 방향을..

8장 거대한 표현을 잘게 쪼개기

PART Ⅱ. 루프와 논리를 단순화하기 8장. 거대한 표현을 잘게 쪼개기 ★ 거대한 표현을 더 소화하기 쉬운 여러 조각으로 나눈다. __01 설명 변수 - 거대한 표현을 쪼개는 가장 쉬운 방법은 작은 하위표현을 담을 '추가 변수(extra variable)'을 만드는 것이다. - 추가 변수는 하위 표현의 의미를 설명하므로 '설명 변수(explaning variable)'라고도 한다. __02 요약 변수 - 커다란 코드의 덩어리를 짧은 이름으로 대체하여 더 쉽게 관리하고 파악하는 목적으로 만드는 변수를 '요약 변수(summary variable)'라고 한다. - 요약 변수를 통해 읽는 사람이 코드의 주된 개념을 더 쉽게 파악할 수 있게 도와줄 수 있다. __03 드모르간의 법칙 사용하기 - 불리언 표현은 ..

7장 읽기 쉽게 흐름제어 만들기

PART Ⅱ. 루프와 논리를 단순화하기 7장. 읽기 쉽게 흐름제어 만들기 - 제어문은 사실 코드를 읽기 어렵게 만든다. ★ 흐름을 제어하는 조건과 루프 그리고 여타 요소를 최대한 '자연스럽게' 만들도록 노력하라. 코드를 읽다가 다시 되돌아가서 코드를 읽지 않아도 되게끔 만들어야 한다. __01. 조건문에서 인수의 순서 - 왼쪽에 '질문을 받는' 유동적인 값을 쓰고, 오른쪽에 비교대상으로 사용되는 고정적인 값을 써라. __02. if/else 블록의 순서 - 조건은 부정문이 아닌 긍정문으로 쓰려고하라. - 간단한 것을 먼저 처리하라. 이러면 한 화면으로 두개의 구문을 볼 수 있을 가능성이 높아진다. - 더 흥미롭고, 확실한 것을 먼저 다루어라. - 위의 세가지 규칙이 서로 충돌을 일으킬 수도 있다. 중요한..

6장 명확하고 간결한 주석 달기

PART I. 표면적 수준에서의 개선 6장 명확하고 간결한 주석 달기 - 주석은 높은 '정보 대 공간' 비율을 갖춰야 한다. __01. 주석을 간결하게 하라 - 짧게 줄여도 정보를 충분히 전달할 수 있다면 주석을 짧게 줄여라. __02. 모호한 대명사는 피하라 - 모호한 대명사는 원래 명사로 고치거나, 의미가 명확해지도록 문장을 고쳐라. __03. 엉터리 문장을 다듬어라 - 주석을 명확하게 하는 작업과 간결하게 하는 작업은 대부분 한꺼번에 이루어진다. __04. 함수의 동작을 명확하게 설명하라 - 애매한 단어를 사용하지 말고 구현한 방식을 명확하게 설명하는 것이 좋다. __5. 구체적인 용법을 설명해주는 입/출력 예를 사용하라 - 주석을 작성하는 데 신중하게 선택된 입/출력 예는 천 마디 말보다 위력적이..

5장 주석에 담아야 하는 대상

PART I. 표면적 수준에서의 개선 5장. 주석에 담아야 하는 대상 ★ 주석의 목적은 코드를 읽는 사람이 코드를 작성한 사람만큼 코드를 잘 이해하게 돕는 데 있다. __01. 설명하지 말아야 하는 것 ★ 코드에서 빠르게 유추할 수 있는 내용은 주석으로 달지 말라. - 설명 자체를 위한 설명을 달지 말라. 주석을 달아야하겠다면 파악하기 어려운 세부사항을 적는것이 좋다. - 나쁜 이름에 주석을 달지 마라. 대신 이름을 고쳐라. 좋은 코드 > 나쁜 코드 + 좋은 주석 __02. 생각을 기록하라 - 코드를 짜면서 의도한 바나 깨달은 바를 주석으로 기록하라. - 상수가 무엇을 하는지, 그것이 왜 특정한 값을 갖게 되었는지에 대한 내용을 기록해둬라. - 코드에 있는 결함을 설명하라. 코드에 부족한 점이 있는건 당..

4장 미학

Part 1. 표면적 수준의 개선4장. 미학 -좋은 소스코드는 '눈을 편하게' 해야 한다. 이 장에서는 다음과 같은 세 가지 원리가 사용된다. 1. 코드를 읽는 사람이 이미 친숙한, 일관성 있는 레이아웃을 사용하라. 2. 비슷한 코드는 서로 비슷해 보이게 만들어라. 3. 서로 연관된 코드는 하나의 블록으로 묶어라. ※ 여기서 말하는 미학은 가독성만을 위한 것으로 새롭게 설계하는 리팩토링은 서로 독립된 아이디어에 해당한다. 두가지 모두를 추구하는게 이상적이다. __01. 미학이 무슨 상관인가? - 미학적으로 보기 좋은 코드가 사용하기 더 편리하다. 우리는 대부분의 시간을 코드를 그저 바라보는 데 쓴다는 것을 명심하라. __02. 일관성과 간결성을 위해서 줄 바꿈을 재정렬하기 - 줄이 길어져 줄바꿈을 해야한..

반응형