2025/05 7

읽기 좋은 코드가 좋은 코드다.

9. 변수와 가독성변수를 엉터리로 사용하면- 변수의 수가 많을수록 기억하고 다루기 더 어려워진다.- 변수의 범위가 넓어질수록 기억하고 다루는 시간이 더 길어진다.- 변수값이 자주 바뀔수록 현재값을 기억하고 다루기가 더 어려워진다. 📌변수 제거하기now = datetime.datetime.now()root_message.last_view_time = now/// =>root_message.last_view_time = datetime.datetime.now()now 변수가 꼭 필요한가? 그렇지 않다.datetime.datetime.now()는 그 자체로 명확하다. 📌변수의 범위를 좁혀라- 변수가 적용되는 범위를 최대한 좁게 만들어라. - 많은 메소드를 정적 static으로 만들어서 클래스 멤버 접근을..

2025.05.20

읽기 좋은 코드가 좋은 코드다.

8. 거대한 표현을 잘게 쪼개기📌 설명변수- 커다란 표현을 쪽개는 가장 쉬운 방법은 하위표현을 담을 '추가 변수 = 설명 변수" 를 만드는 것1. if line.split(':')[0].strip() == "root": ...2. username = line.split(':')[0].strip() if username == "root"1, 2 동일한 코드이지만 2번은 설명 변수를 사용한 예 📌 요약변수- 커다란 코드의 덩어리를 짧은 이름으로 대체하여 더 쉽게 관리하고 파악하는 목적을 가진 변수if (request.user.id == document.owner_id) { // 사용자가 이 문서를 수정할 수 있다.}if (request.user.id != document.owner_id) { // 문서..

2025.05.14

읽기 좋은 코드가 좋은 코드다.

7. 읽기 쉽게 흐름제어 만들기 📌 조건문에서 인수의 순서1. if (length >= 10)2. if (10 bytes_received)같은 코드인데 왜 1번이 읽기가 더 편할까?왼쪽오른쪽값이 더 유동적인 '질문을 받는' 표현더 고정적인 값으로 , 비교대상으로 사용되는 표현 📌 if/else 블록의 순서- 부정이 아닌 긍정을 다루어라.즉 if(!debug) 가 아니라 if(debug)- 간단한 것을 먼저 처리하라. - 더 흥미롭고, 확실한 것을 먼저 다루어라 if (url.HasQueryParameter("expand_all")) { for (int i = 0; i- 코드를 보자마자 expand_all이 무엇인지 궁금해 할 것이다. 더 흥미롭고 긍정하는 부분이므로 이를 먼저 다르는 것이 좋다. ..

2025.05.14

읽기 좋은 코드가 좋은 코드다

6. 명확하고 간결한 주석 달기 📌 주석을 간결하게 하라// int는 CategoryType이다// 내부 페어의 첫 번째 float는 'score'다.// 두 번째는 'weight'다.typeof hash_map> ScoreMap;- 주석을 왜 세줄이나 쓰나?// CategoryType -> (score, weight)typedef has_map> ScoreMap- 주석이 세줄 필요할 때도 있지만 이 경우는 아니다. 📌 모호한 대명사는 피하라- it (x) > the data (o) 📌 엉터리 문장을 다듬어라❌ # 이 URL을 전에 이미 방문했는지에 따라서 다른 우선순위를 부여한다.⭕ # 전에 방문하지 않은 URL에 높은 우선순위를 부여하라. 📌 함수의 동작을 명확하게 설명하라.// 이 파일에 담..

2025.05.13

읽기 좋은 코드가 좋은 코드다

5.주석에 담아야 하는 대상 - 주석의 목적은 코드를 읽는 사람이 코드를 작성한 사람만큼 코드를 잘 이해하게 돕는 데 있다. 📌 설명하지 말아야하는 것- 코드에서 빠르게 유추할 수 있는 내용은 주석으로 달지 말라.- 나쁜 이름에 주석을 달지 말고 이름을 고쳐라- 나쁘게 작성된 코드를 보정하려고 애쓰는 주석을 달지 말고 코드를 수정해라// 반환되는 항목의 수나 전체 바이트 수와 같이// Request가 정하는 대로 Reply에 일정한 한계를 적용한다.void ClieanReply(Request request, Reply reply);== > 'clean'이 의미하는 바를 설명하지 말고 '한계를 적용한다'는 부분을 애초에 함수명에 포함하기void EnforceLimitsFromRequest(...) 📌 ..

2025.05.12

읽기 좋은 코드가 좋은 코드다

3. 오해할 수 없는 이름들📌 clip(text, length)-> '문단을 처음부터 length만큼 잘라낸다'를 원하면 Truncate(text, max_length)가 더 나음. 📌 경계를 포함하는 범위는 first/ last📌 경계 포함/ 배제하는 범위는 begin/ end 📌 경계를 포함하는 한계값을 다룰 때는 min, max* 고객이 한 번에 10개 이상의 품목을 구매하지 못하게 한다.CART_TOO_BIG_LIMIT = 10if(num_items() >= CART_TOO_BIG_LIMIT) {...}❗오류: 11개까지 포함됨.>= 을 >로 고치면 되지만 이름을 MAX_ITEMS_IN_CART로 고쳐야 의미 전달이 확실해짐. ** 항상 최악의 경우를 가정하고 이름의 의미가 잘못 이해되는 ..

2025.05.11

읽기 좋은 코드가 좋은 코드다

1. 코드는 이해하기 쉬워야한다.- 분량을 줄이기 보다 이해하기 좋게 만들기- 표면적 수준: 좋은 이름을 짓고, 좋은 설명을 달고, 코드를 보기 좋게 정렬 2. 이름에 정보 담기.- 특정한 단어 고르기- 보편적인 이름 피하기 (언제 그런 이름을 사용해야 하는지 깨닫기)- 추상적인 이름 대신 구체적인 이름- 접두사 or 접미사로 이름에 추가적인 정보 덧붙이기- 이름이 얼마나 길어져도 좋을지 결정- 추가적인 정보를 담을 수 있게 이름 구성 📌 무의미한 단어 피하기getPage -> FetchPage/ DownloadPageStop -> Kill(최초동작시)/ Pause(다시 돌아간다면) 📌 보편적인 이름 사용하는 경우* tmptmp = rightright = leftleft = tmp-> 이 경우엔 't..

2025.05.11