좋은 코드란 무엇인가?
Bad Code
- 이해하기 어렵다.
- 수정이 어렵다.
- 따라서 버그가 빠르게 고쳐지지 않는다.
- 제품의 출시일이 늦어진다.
- 로딩 타임이 증가하고 crash 발생이 증가한다.
-더 많은 기능이 들어갈수록, 코드의 code smell은 증가한다.
우리는 프로그램이 돌아가게 하려고만 하지, 코드를 clean up하지 않는다.
추후에 수정할 일도 없기 때문에, 항상 clean code를 짜는 것이 중요하다.
* 보이 스카우트 규칙
"Leave the campgroud cleaner than you found it"
캠프장을 처음 왔을 때보다 깨끗하게 해 놓고 떠나기
코드를 가져왔을 때보다 더 clean하도록 코드를 짜야 한다는 의미이다.
Name
의미 있는 이름을 짓자
- 변수, 함수, 클래스 등에 이름을 짓게 된다.
- 이러한 요소들의 이름을 지을 때는 의도(intent)를 담도록 해야 한다.
좌측은 b1, b2, s가 뭔지 알 수 없다.
우측은, 이게 월급에 대한 계산 값임을 알 수 있다. 이를 통해 코드에 대한 버그를 미리 알 수 있다.
예를 들어,
salary = base - bonus
로 되어 있다면, 이 변수들의 intent를 통해 이 코드가 잘못되었다는 것을 빠르게 캐치할 수 있게 된다.
* 주석 쓰기?
- 주석은 메타데이터이기 때문에 주석의 내용과 함수의 내용과 일치하지 않을 수도 있음
- 함수 수정 -> 주석 수정을 업데이트 하지 않으면 혼란이 발생할 수 있음
* code smell
4번째 줄의 4는 어떤 의미를 나타내는 건지 알 수없다. 이러한 숫자를 magic number라고 한다.
이런 magic number는 변수에 할당하여 어떤 의미를 담는 상수인지 표기하는게 좋다.
x[0]==4 부분을 아예 의도가 드러나는 함수로 만들었다.
발음 가능한 이름으로 짓자
- 변수의 이름을 억지로 줄일려 하지 말자
- 읽어도 의도를 알 수 없다.
genymdhms => generationTimestsamp
modymdhms => modificationTimestamp
검색 가능한 이름을 사용하자
중간의 realTaskDays는 없어도 되는 변수이다.
하지만 일종의 주석 역할을 해 주는, 설명적 변수이다.
* 가독성
코드가 잘 읽히고, 해당 코드의 동작을 직관적으로 예측할 수 있는지에 대한 것.
- 표현적 가독성;Legibility
: 눈에 잘 들어오는 코드, 읽기 편한 코드
- 기능적 가독성;Readability;
: 변수, 함수, 클래스 등이 어떤 역할을 갖고, 어떤 동작을 하며, 서로 어떤 관계를 맺는지 직관적으로 파악할 수 있는 코드
참고 자료
[네이버클라우드 개발자 스토리] 좋은 코드란 무엇일까?🤔 #클린코드 이야기
📍 “좋은 코드를 짜야 한다”
medium.com
https://jbee.io/etc/what-is-good-code/
좋은 코드란 무엇일까?
‘성선설’에 기반하면 모든 개발자는 좋은 코드를 작성하고 싶으리라 생각한다. 누구나 관심 있어 하는 주제인 만큼 나 또한 여러 고민을 거듭해왔고 여태까지의 생각을 정리해보려고 한다.
jbee.io
- 학교 다닐때 강의자료