목록clean code (5)
초보개발자 긍.응.성
객체와 자료 구조는 다르다. 객체는 동작을 공개하고 자료를 숨긴다. 그래서 기존 동작을 변경하지 않으면서 새 객체 타입을 추가하기는 쉬운 반면, 기존 객체에 새 동작을 추가하기는 어렵다. 자료 구조는 별다른 동작 없이 자료를 노출한다. 그래서 기존 자료 구조에 새 동작을 추가하기는 쉬우나, 기존 함수에 새 자료 구조를 추가하기는 어렵다. 자료 추상화 자료를 공개하기 보다는 추상적인 개념으로 표현하는 편이 좋다 자료/객체 비대칭 객체 지향 코드에서 어려운 변경은 절차적인 코드에서 쉬우며, 절차적인 코드에서 어려운 변경은 객체 지향 코드에서 쉽다 새로운 함수가 아닌 새로운 자료 타입이 필요한 경우, 객체 지향 기법이 가장 적합하다 새로운 함수가 필요한 경우 절차적인 자료 구조가 좀 더 적합하다 단순한 자료 ..
프로그래머라면 형식을 깔끔하게 맞춰 코드를 짜야한다. 코드 형식을 맞추기 위해 간단한 규칙을 정하고 그 규칙을 착실히 따라야 한다. 형식을 맞추는 목적 코드의 형식은 중요하다 오늘 구현한 기능이 다음 버전에서 바뀔 확률은 아주 높으며, 코드의 가독성은 앞으로 바뀔 코드의 품질에 지대한 영향을 미친다 적절한 행 길이를 유지해라 대부분 200줄 정도인 파일로도 커다란 시스템을 구축할 수 있다. 신문 기사 처럼 작성하라 이름은 간단하면서도 설명이 가능하게 짓는다 소스 파일 첫 부분은 고차원 개념과 알고리즘을 설명한다 아래로 내려갈수록 의도를 세세하게 묘사한다 개념은 빈 행으로 분리하라 일련의 행 묶음은 완결된 생각 하나를 표현한다 생각 사이는 빈 행을 넣어 분리해야 한다 빈 행은 새로운 개념을 시작한다는 시각..
우리는 코드로 의도를 표현하지 못해 주석을 사용한다 주석이 필요한 상황에 처하면 상황을 역전해 코드로 의도를 표현할 방법을 생각하자 주석은 오래될수록 코드에서 멀어진다 애초에 주석이 필요없는 방향으로 에너지를 쏟아 코드를 깔끔하게 정리하자 주석은 나쁜 코드를 보완하지 못한다 코드에 주석을 추가하는 일반적인 이유는 코드 품질이 나쁘기 때문이다 표현력이 풍부하고 깔끔하며 주석이 거의 없는 코드가 좋다 코드로 의도를 표현하라! 코드만으로 의도를 설명하기 어려운 경우가 존재한다 하지만 많은 경우에서 주석으로 달려는 설명을 함수로 표현해도 충분하다 좋은 주석 법적인 주석 정보를 제공하는 주석 의도를 설명하는 주석 의미를 명료하게 밝히는 주석 결과를 경고하는 주석 TODO 주석 중요성을 강조하는 주석 공개 API에..
작게 만들어라! 함수는 작게 만들수록 이해하기 쉽다 블록과 들여 쓰기 if 문/else 문/while 문 등에 들어가는 블록은 한 줄인것이 좋다 대개 거기서 함수를 호출한다 바깥을 감싸는 함수(enclosing function)가 작아진다 한 가지만 해라! 함수는 한 가지만 해야한다 단순히 다른 표현이 아니라 의미 있는 이름으로 다른 함수를 추출할 수 있다면 그 함수는 여러작업을 하는 것이다 함수 당 추상화 수준은 하나로! 함수가 확실히 '한 가지' 작업만 하려면 함수 내 모든 문장의 추상화 수준이 동일화 해야 한다 추상화 수준이 하나로 맞춰지기 어렵다면 내려가기 규칙에 따라 작성하는것이 권장된다 위에서 아래로 코드 읽기: 내려가기 규칙 코드는 위에서 아래로 이야기처럼 읽혀야 한다 위에서 아래로 프로그램..
소프트웨어에서 이름은 어디나 쓰인다. 이름을 잘 짓는 것만으로도 코드의 가독성이 많이 향상될 수 있다. 의도를 분명히 밝혀라 아무 의미 없는 이름은 짓지 말아야 한다 자료구조에도 그 쓰임을 이해할 수 있도록 이름을 지어야 한다 주석 없이 이해할 수 있는 이름을 지어라 int d; // 경과 시간(단위: 날짜) int elapsedTimeInDays; int daysSinceCreation; int daysSinceModification; int fileAgeInDays; 그릇된 정보를 피하라 널리 쓰이는 의미가 있는 단어를 다른 의미로 사용해선 안된다 서로 흡사한 이름을 사용하지 않도록 주의한다 유사한 개념은 유사한 표기법을 사용한다 일관성이 떨어지는 표기법을 갖지 않도록 한다 의미 있게 구분하라 불용어..