1. 코드는 이해하기 쉬워야 한다.
2. 이름에 정보 담기
jQuery객체라는것을 알수 있게 아래와 같이 표기한다.
var $all_images = $("img"); // $all_images는 jQuery 객체다.
var height = 250; // height는 아니다.
id는 _로 구분 class는 -로 구분
<div id="middle_column" class="main-content">
위의 예시로 든 컨벤션은 협업자와 이야기가 되어 있어야 한다. 위의 예시는 책에서 든 예이다.
3. 오해할 수 없는 이름들
4. 미학
4-1. 코드를 읽는 사람이 이미 친숙한, 일관성 있는 레이아웃을 사용하라.
4-2. 비슷한 코드는 서로 비슷해 보이게 만들어라.
4-3. 서로 연관된 코드는 하나의 블록으로 묶어라.
미학적으로 보기 좋은 코드가 사용하기 더 편리하다
5. 주석에 담아야 하는 대상
5-1. 설명하지 말아야 하는 것
코드에서 빠르게 유추할 수 있는 내용은 주석으로 달지 말라.
설명 자체를 위한 설명을 달지 말라
나쁜 이름에 주석을 달지 마라 - 대신 이름을 고쳐라
// 반환되는 항목의 수나 전체 바이트 수와 같이
// Request가 정하는 대로 Reply에 일정한 한계를 적용한다.
void CleanReply(Request request, Reply reply);
아래의 예시가 더 좋다.
// 'reply'가 count/byte/등과 같이 'request'가 정하는 한계조건을 만족시키도록 한다.
void EnforceLimitsFromRequest(Request request, Reply reply)
5-2. 코딩을 수행하면서 머릿속에 있는 정보를 기록하기.
코드가 특정한 방식으로 작성된 이유를 설명해주는 내용(감독의 설명)
코드에 담긴 결함. TODO: 혹은 xxx:와 같은 표시를 사용하라.
어떤 상수가 특정한 값을 갖게 된 '사연'
5-3. 코드를 읽는 사람의 입장에서 필요한 정보가 무엇인지 유추하기.
코드를 읽는 사람이 자기가 작성한 코드의 어느 부분을 보고 '뭐라고?'라는 생각을 할지 예측해보고, 그 부분에 주석을 추가하라.
평범한 사람이 예상하지 못할 특이한 동작을 기록하라
파일이나 클래스 수준 주석에서 '큰 그림'을 설명하고 각 조각이 어떻게 맞춰지는지 설명하라.
코드에 블록별로 주석을 달아 세부 코드를 읽다가 나무만 보고 숲은 못 보는 실수를 저지르지 마라.
6. 명확하고 간결한 주석 달기
7. 읽기 쉽게 흐름제어 만들기
if(user_result == SUCCESS) {
if(permission_result != SUCCESS){
reply.WriteErrors("error reading permissions");
reply.Done();
return;
}
reply.WriteErrors("");
} else {
reply.WriteErrors(user_result);
}
reply.Done();
위의 코드는 이중 중첩문이 되었다. 이렇게 되면 코드는 읽기 어려워 지고 읽는 사람의 머릿속은 복잡해진다.
if(user_result != SUCCESS){
reply.WriteErrors(user_result);
reply.Done();
return;
}
if(permission_result != SUCCESS){
reply.WriteErrors(user_result);
reply.Done();
return;
}
reply.WriteErrors("");
reply.Done();
실패한 경우들을 최대한 빠르게 처리하고 함수에서 반환하여 제거할 수 있다.
8. 거대한 표현을 잘게 쪼개기
요약변수
if(request.user_id == document.owner_id){
// 사용자가 이 문서를 수정할 수 있다.
}
...
if(request.user_id != document.owner_id){
// 이 문서는 읽기 전용이다.
}
요약변수를 활용하면 코드를 읽는 이에게 간결함을 줄수 있다
final boolean user_owns_document = (request.user_id == document.owner_id)
if(user_owns_document){
// 사용자가 이 문서를 수정할 수 있다.
}
...
if(user_owns_document){
// 이 문서는 읽기 전용이다.
}
9. 변수와 가독성
10. 상관없는 하위문제 추출하기
11. 한번에 하나씩
여러분이 작성한 코드가 읽기 어렵다면, 일단 수행하는 작업을 모두 나열하라. 나열된 작업중 일부는 별도의 함수나 클래스로 쉽사리 분리할 수 있을 것이다. 다른 작업은 원래 함수 내에서 별도의 논리적 '문단'으로 존재할 수 있다. 이러한 '어떻게 작업을 정확히 분리할까?'는 '분리된다'는 사실보다 중요하지는 않다. 어려운 부분은 애초에 프로그램이 수행하는 모든 작은 일들을 빠뜨리지 않고 정확하게 서술하는 것이다.
12. 생각을 코드로 만들기
13. 코드 분량 줄이기
제품에 꼭 필요하지 않는 기능을 제거하고, 과도한 작업을 피한다.
요구사항을 다시 생각해서, 가장 단순한 형태의 문제를 찾아본다.
주기적으로 라이브러리 전체 API를 훑어봄으로써 표준 라이브러리에 친숙해진다.
14. 테스트와 가독성
15. 분/시간 카운터를 설계하고 구현하기
'책' 카테고리의 다른 글
무뚝뚝해도 괜찮습니다(타인에게 휘둘리지 않고 나답게 사는 법) (0) | 2021.09.26 |
---|---|
데이터베이스 첫걸음 (0) | 2021.01.17 |
아키텍트 이야기 (0) | 2020.12.25 |
타이탄의 도구들 (0) | 2020.12.25 |
스마트한 성공들 (0) | 2020.12.25 |