CS

좋은 코드란 무엇인가?

서머스 2022. 9. 16. 23:18

Bad Code

- 이해하기 어렵다.

- 수정이 어렵다. 

- 따라서 버그가 빠르게 고쳐지지 않는다.

- 제품의 출시일이 늦어진다.

- 로딩 타임이 증가하고 crash 발생이 증가한다.

-더 많은 기능이 들어갈수록, 코드의 code smell은 증가한다.

 

 

우리는 프로그램이 돌아가게 하려고만 하지, 코드를 clean up하지 않는다.

추후에 수정할 일도 없기 때문에, 항상 clean code를 짜는 것이 중요하다.

 

 

 

* 보이 스카우트 규칙

"Leave the campgroud cleaner than you found it"

캠프장을 처음 왔을 때보다 깨끗하게 해 놓고 떠나기

코드를 가져왔을 때보다 더 clean하도록 코드를 짜야 한다는 의미이다.

 

 

Name

의미 있는 이름을 짓자

- 변수, 함수, 클래스 등에 이름을 짓게 된다.

- 이러한 요소들의 이름을 지을 때는 의도(intent)를 담도록 해야 한다.

좌: bad case, 우: good case

좌측은 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;

 : 변수, 함수, 클래스 등이 어떤 역할을 갖고, 어떤 동작을 하며, 서로 어떤 관계를 맺는지 직관적으로 파악할 수 있는 코드

 

 

 

 

 

 

 

 

 

참고 자료

https://medium.com/naver-cloud-platform/%EB%84%A4%EC%9D%B4%EB%B2%84%ED%81%B4%EB%9D%BC%EC%9A%B0%EB%93%9C-%EA%B0%9C%EB%B0%9C%EC%9E%90-%EC%8A%A4%ED%86%A0%EB%A6%AC-%EC%A2%8B%EC%9D%80-%EC%BD%94%EB%93%9C%EB%9E%80-%EB%AC%B4%EC%97%87%EC%9D%BC%EA%B9%8C-%ED%81%B4%EB%A6%B0%EC%BD%94%EB%93%9C-%EC%9D%B4%EC%95%BC%EA%B8%B0-c7811f73a46b

 

[네이버클라우드 개발자 스토리] 좋은 코드란 무엇일까?🤔 #클린코드 이야기

📍 “좋은 코드를 짜야 한다”​

medium.com

https://jbee.io/etc/what-is-good-code/

 

좋은 코드란 무엇일까?

‘성선설’에 기반하면 모든 개발자는 좋은 코드를 작성하고 싶으리라 생각한다. 누구나 관심 있어 하는 주제인 만큼 나 또한 여러 고민을 거듭해왔고 여태까지의 생각을 정리해보려고 한다.

jbee.io

- 학교 다닐때 강의자료