[클린코드] 1, 2장 내용 정리

박성빈·2023년 6월 19일
0

클린 코드

목록 보기
1/1

서문

클린 코드 애자일 소프트웨어 장인 정신 (로버트 C.마틴)이라는 책을 읽고 내용을 1,2장의 내용을 정리하고자 한다.

나는 평소 코딩할 때 코드를 잘 짜고 싶다는 생각을 자주 했었다.
여기서 '잘 짠다'라는 것은 어떤 것일까?

이 책이 그 답을 해주고 있다.
코드를 잘 짠다는 것은 알고리즘이나 어떠한 기능을 구현하는 것도 중요하지만
더 중요한 것은 깔끔한 코드로 짜는 것이라고 느꼈다.

게임 제작 팀플을 할 때 프로그래머로서 게임의 여러 기능을 구현한 경험이 있었다.
이 때 당장 눈 앞의 기능 구현을 위해 프로그래밍을 했더니, 팀플 후반에 간단한 기능을 추가하거나, 버그의 수정을 위해 다시 내가 짠 코드를 읽는데 애를 먹었었다.
그래서 그런지 작업 속도도 느려졌고 같이 협업하는 사람도 나의 코드를 보고 해석하느라 시간을 많이 허비했었다.

이렇듯 더러운 코드는 생산성을 크게 저하시킨다는 사실을 알 수 있었다.

이러한 문제를 해결하려면 어떻게 해야 할까?

먼저 깔끔한 코드가 무엇인지에 대해 질문해야 할 것이다.

1장 깨끗한 코드에서는 그 물음에 답을 해준다.

1장 깨끗한 코드

좋은 코드를 사수하는 일은 바로 우리 프로그래머들의 책임이다.

사람들은 왜 나쁜 코드를 자꾸 짜게 되는 것일까.
아마 코드 작성하는 사람이 초보자이거나 시간에 쫓겨 빠르게 기능만 만들기 위해서 일 것이다. 하지만 빠르게 구현하기 위해서는 오히려 깨끗한 코드를 짜야만 한다.
앞서 말했듯이 나쁜 코드가 쌓일수록 팀 생산성은 크게 떨어지기 때문이다.

그러므로 우리는 일정에 쫓기더라도 좋은 코드를 사수하기 위해 힘써야 한다.
프로그래머는 전문가답게 좋은 코드를 사수해야 한다.

이제 깨끗한 코드가 무엇인지에 대해 알아보자
많은 프로그래밍의 권위자들이 생각하는 '깨끗한 코드'에 대한 그들의 생각을 엿보면 힌트를 얻을 수 있다.
중요한 내용만 나열해 보았다.

  1. 논리가 간단해야 함.
  2. 의존성을 최대한 줄여야 함. 유지보수 쉬워지기 때문임
  3. 깨끗한 코드는 한 가지를 제대로 함.
  4. 세세한 사항까지 꼼꼼하게 처리함.
  5. 좋은 코드는 잘 쓴 문장처럼 읽힘.
  6. 설계자의 의도를 숨기지 않고, 명쾌하고 단순한 제어문으로 가득함.
  7. 깨끗한 코드는 다른 사람이 고치기 쉬움.
  8. 깨끗한 코드는 주의 깊게 작성한 코드임.
  9. 중복이 없음.
  10. 코드를 독해하느라 머리를 쥐어짤 필요가 없어야 함.

이러한 내용을 이해하고 좋은 코드를 짜기 위해 정진해야 할 것이다.

2장 의미있는 이름

코드를 짤 때 변수의 이름은 중요하다.
하지만 나는 종종 이름을 모호하거나 의도를 알아볼 수 없게 짓곤 했었다.

저자는 이름의 중요성에 대해 언급하며 좋은 이름을 짓는 방법에 대해 소개한다.

의도를 분명히 밝혀라

변수(혹은 함수나 클래스)의 존재 이유, 수행 기능, 사용 방법에 대한 답을 하면 좋은 이름을 지을 수 있다.
의도가 드러나는 이름을 사용하면 코드 이해와 변경이 쉬워진다.

a1, a2, a3이런 식의 이름은 아무런 의도를 전달할 수 없다.

모호한 단어는 쓰지 않는다

예를 들어 Manager나 Info같은 이름은 크게 어떤 의미를 전할 수 없다.
Student클래스와 StudentInfo 클래스가 있다고 했을 때 이름만 보고서 두 클래스가 어떤 차이가 있는지 알기는 쉽지 않다.
읽는 사람이 차이를 알도록 이름을 지어야 한다.

검색하기 쉬운 단어를 쓴다.

우리는 디버깅을 할 때나 코드를 다시 볼 때 변수의 이름을 자주 찾게 된다. 이 때 검색하기 어려운 단어로 변수 이름이 명명되었을 경우에는 찾기가 곤혹스러울 수 있다. 따라서 검색하기 쉬운 단어를 쓰는 것이 좋다.

한 개념에 한 단어를 사용해라

추상적인 개념 하나에 단어 하나를 선택해 이를 고수해야 한다.
예를 들어 똑같은 메서드를 클래스마다 fetch, retrieve, get으로 제각각 부르면 혼란스럽다.
일관성 있는 어휘는 코드를 사용할 프로그래머가 반갑게 여길 선물이다.

마치며

2챕터를 읽고 이름 짓는 것이 굉장히 중요한 것임을 크게 깨달았다.
내 코드를 다시 읽어 보니 부끄러울 지경이었다 ㅋㅋㅋ
앞으로는 이름을 생각하고 지어야겠다고 다짐했다.

예전에 교수님이 변수명 짓는 게 제일 힘들다고 했던 것이 떠올랐다.
이제 그 말씀을 조금 이해할 수 있게 되었다.

profile
주로 프로그래밍을 공부하는 대학생입니다.

0개의 댓글