본문 바로가기

공부/노개북

[노개북] '클린 코드' Assignment #03

📌 1 주차
일 | Assignment #03
- 📖 2장. 의미 있는 이름
- 📝 TIL

💡 TIL (Today I Learned)

2022.02.20.일

📖 오늘 읽은 범위

2장. 의미 있는 이름

  책에서 기억하고 싶은 내용을 써보세요.

  • 의도를 분명히 밝혀라 : 좋은 이름을 지으려면 시간이 걸리지만 좋은 이름으로 절약하는 시간이 훨씬 더 많다. - p.22
  • 그릇된 정보를 피하라 : 그릇된 단서는 코드 의미를 흐린다. 나름대로 널리 쓰이는 의미가 있는 단어를 다른 의미로 사용해도 안 된다. ... 이름으로 그릇된 정보를 제공하는 진짜 끔찍한 예가 소문자 L이나 대문자 O변수다. 두 변수를 한꺼번에 사용하면 더욱 끔찍해진다. 소문자 L은 숫자 1처럼 보이고 대문자 O는 숫자 0처럼 보인다. - p.24
  • 발음하기 쉬운 이름을 사용하라 : 발음하기 어려운 이름은 토론하기도 어렵다. 발음하기 쉬운 이름은 중요하다. 프로그래밍은 사회 활동이기 때문이다. - p.27
  • 인코딩을 피하라 : 유형이나 범위 정보까지 인코딩에 넣으면 그만큼 이름을 해독하기 어려워진다. 인코딩한 이름은 거의가 발음하기 어려우며 오타가 생기기도 쉽다. - p.29
  • 자신의 기억력을 자랑하지 마라 : 문자 하나만 상요하는 변수 이름은 문제가 있다. 루프에서 반복 횟수를 세는 변수 i,j,k는 괜찮다.(l은 절대 안된다!) - p.31
  • 클래스 이름 : 클래스 이름과 객체 이름은 명사나 명사구가 적합하다. 동사는 사용하지 않는다. - p.32
  • 메서드 이름 : 메서드 이름은 동사나 동사구가 적합하다. 접근자(Accessor), 변경자(Mutator), 조건자(Predicate)는 javabean 표준에 따라 값 앞에 get, set, is를 붙인다. - p.32
  • 기발한 이름은 피하라 : 재미난 이름보다 명료한 이름을 선택해라. 의도를 분명하고 솔직하게 표현하라. - p.33
  • 한 개념에 한 단어를 사용하라 : 추상적인 개념 하나에 단어 하나를 선택해 이를 고수한다. 이름이 다르면 독자는 당연히 클래스도 다르고 타입도 다르리라 생각한다. - p.33
  • 말장난을 하지 마라 : 한 단어를 두 가지 목적으로 사용하지 마라. 프로그래머는 코드를 최대한 이해하기 쉽게 짜야 한다. 집중적인 탐구가 필요한 코드가 아니라 대충 훑어봐도 이해할 코드 작성이 목표다. - p.34
  • 불필요한 맥락을 없애라 : 일반적으로는 짧은 이름이 긴 이름보다 좋다. 단, 의미가 분명한 경우에 한해서다. 이름에 불필요한 맥락을 추가하지 않도록 주의한다. - p.37
  • 여느 코드 개선 노력과 마찬가지로 이름 역시 나름대로 바꿨다가는 누군가 질책할지도 모른다. 그렇다고 코드를 개선하려는 노력을 중단해서는 안 된다. - p.38

📝 오늘 읽은 소감은? 떠오르는 생각을 가볍게 적어보세요

  • 동작 가능한 코드를 만들기 위해서 동작이 되게 만들기 -> 업로드할 코드 수정하기를 반복하는 과정을 진행했다. 동작이 되는 것을 목표로 두어 이름에 대해서 중요하게 생각하지 않고 나만이 기억하고 알 수 있다면 된다는 것을 우선시 했다. 그렇기에, 다시 한번 이름을 변경해주는 번거로운 과정을 거치고 이름을 변경하면서 오류들도 겪었다. 이렇게 반복하는 생활과 책을 읽으면서 들었던 생각은 잘못된 우선순위가 독이 된 것 같다. 이름을 동작하기 위한 도구로만 여겼지만 이름은 설명을 담고 있다는 의미를 다시 한번 깨닭게 되었다. 이름에 의미와 시간을 투자해야할 방법과 이유를 알게 되었다. 

🔎 궁금한 내용이 있거나, 잘 이해되지 않는 내용이 있다면 적어보세요.

  • Java code
list에 값을 추가할 때, add 사용
ex) list1.add(x);

for문
for (시작 부분; 조건 부분; 참일때 부분;)
ex) for (int 1 = 0; i < 4; i++)

멤버 변수 : 메소드 밖에서 선언된 변수