본문 바로가기

Book

[추천 도서] 클린 코드 읽는 중 _01

 

오래전에 회사에 신청해두고 읽다 말다 하던 클린 코드를 다시 읽고 있다.

오랫동안 운영되어오는 사이트들에 페이지나 메뉴를 추가하는 작업을 하다 보면 특히 클린 코드의 중요성을 느끼게 된다.

 

신규 제작되는 사이트 작업의 경우도 팀 내에 가이드가 명확히 없어 각자가 기존에 하던 방식대로 이름을 붙이고 구조를 만들어서 간단한 기능임에도 의미를 쉽게 짐작하기 어렵게 작업되어 뒤에 개선하지 못하는 경우들도 있었다.

 

어떻게 하면 너무 경직되지 않으면서도 클린 한 코드를 작성하고 유지할 수 있을까 하는 고민에서 읽기 시작했는데 읽으면서 인상적이거나 기억해야 할 내용을 정리해 둔다. (아직 읽는 중임.)

 

 

1장 깨끗한 코드

깨끗한 코드란 뭘까?

레전더리 개발자들의 각자가 생각하는 깨끗한 코드의 정의랄까 그런 내용으로 시작이 되는데

나에게 특히 인상적인 내용은 비야네 스트롭스트룹 (이름 어려움.. C++의 창시자라고 함.) 님의 문장.

 

“나는 우아하고 효율적인 코드를 좋아한다. 논리가 간단해야 버그가 숨어들지 못한다. 의존성을 최대한 줄여야 유지보수가 쉬워진다. 오류는 명백한 전략에 의거해 철저히 처리한다. 성능을 최적으로 유지해야 사람들이 원칙 업는 최적화로 코드를 망치려는 유혹에 빠지지 않는다. 깨끗한 코드는 한 가지를 제대로 한다.”

 

논리가 간단해야 버그가 숨어들지 못한다... 라니 멋있어!

 

 

2장 의미 있는 이름

그릇된 정보를 피하라

이름으로 그릇된 정보를 제공하는 진짜 끔찍한 예가 소문자 L이나 대문자 O변수다. 두 변수를 한꺼번에 사용하면 더욱 끔찍해진다. 다음 코드에서 보듯 소문자 L은 숫자 1처럼 보이고 대문자 O는 숫자 0처럼 보인다.

 

나는 네이티브 영어권 사람들은 구분할 수 있는 게 아닐까 했지만 역시 그들도 피하고 있었다.

 

 

의미 있게 구분하라

예를 들어 프로젝트에 참여한 프로그래머는 아래 중 어느 함수를 호출해야 할지 어떻게 알겠나 라는 것.

읽는 사람이 차이를 알도록 이름을 지을 것.

getActiveAccount();

getActiveAccounts();

getActiveAccountInfo();

 

 

검색하기 쉬운 이름을 사용하라

이름 길이는 범위 크기에 비례해야 한다.

 

생각해 본 적 없는 접근인데 대체로 그렇게 작성하게 됐던 것 같다.

 

 

마치면서

좋은 이름을 선택하려면 설명 능력이 뛰어나야 하고 문화적인 배경이 같아야 한다. 이것이 제일 어렵다. 좋은 이름을 선택하는 능력은 기술, 비즈니스, 관리 문제가 아니라 교육 문제다. 우리 분야 사람들이 이름 짓는 방법을 제대로 익히지 못하는 이유가 바로 여기에 있다.

 

공감. 분명 영어에 서툰 나 같은 사람들이 명확한 단어를 선택하는 데에는 한계가 있다.

이런 책을 통해 조금씩 더 나은 이름에 익숙해지는 길 밖에 없는 것 같다.

 


개발 언어를 '언어'라고 부르는 것을 점차 더 이해하게 된다.

특정 언어를 떠나 한국어로 어떤 내용에 대해 설명을 분명히 하지 못하는 사람들은 대체로 단어의 선택이 불분명하고, 같은 설명을 다른 단어들로 여러 차례 하게 된다. 따라서 명료한 글쓰기를 하지 못하고, 더욱 명료해야 하는 코드는 이름을 짓는 단계에서부터 불분명한 이름을 선택하기 쉽다. 시간이 없어서 급하게 지었다 라는 것은 사실이 아닌 경우가 대부분이다. 

 

늘 염두에 두고 작업하기!