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

홍시_코딩기록 2025. 5. 20. 22:52

9. 변수와 가독성

변수를 엉터리로 사용하면

- 변수의 수가 많을수록 기억하고 다루기 더 어려워진다.

- 변수의 범위가 넓어질수록 기억하고 다루는 시간이 더 길어진다.

- 변수값이 자주 바뀔수록 현재값을 기억하고 다루기가 더 어려워진다.

 

📌변수 제거하기

now = datetime.datetime.now()
root_message.last_view_time = now


/// =>
root_message.last_view_time = datetime.datetime.now()

now 변수가 꼭 필요한가? 그렇지 않다.

datetime.datetime.now()는 그 자체로 명확하다.

 

 

📌변수의 범위를 좁혀라

- 변수가 적용되는 범위를 최대한 좁게 만들어라.

 

- 많은 메소드를 정적 static으로 만들어서 클래스 멤버 접근을 제한해라

  (이 코드는 변수들로부터 독립적 이라는 사실을 알려주는 방법)

- 커다란 클래스를 여러 작은 클래스로 나누는 방법

PaymentInfo* Info = database.ReadPaymentInfo();
if (info) {
	cout << "User paid: " << info->amount() << end1
}

// =>
if (PaymentInfo* info = database.ReadPaymentInfo()) {
	cout << "User paid: " << info->amount() << end1
}

이제 코드를 읽는 사람은 info가 속한 범위에서 빠져 나오는 순간 더 이상 info를 생각하지 않아도 된다.

 

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

1. 코드 블록을 보고 스스로에게 질문하기 "상위수준에서 본 이 코드의 목적은 무엇인가?"

2. "이 코드는 직접적으로 목적을 위해서존재하는가? 혹은 목적 자체와 직접적으로 상관없는 하위문제를 해결하는가?"

3. 만약 상당히 원래의 목적과 직접적으로 관련되지 않은 하위문제를 해결하는 코드 분량이 많으면 이를 추출해서 별도의 함수로 만든다.

 

📌 일반적인 목적을 가진 코드를 많이 만들어라

ReadFileToString()과 format_pretty()는 상관없는 하위문제를 다루는 대표적인 함수다.

이들은 매우 기본적이고 폭 넓게 적용할 수 있는 일을 수행하므로 다른 프로젝트에서도 사용할 수 있다.

이런 코드베이스는 프로젝트에서 완전히 분리되어 있다.