본문 바로가기

Activity/책 리뷰

[리뷰/책] 좋은 코드, 나쁜 코드

반응형

한 줄 요약 : 이론을 실습을 통해 적용해보며 좋은 코드 작성 방법을 안내하는 가이드북


프로그램을 구현하다보면 버그는 반드시 나타나고, 개발자들간에 트러블도 발생한다. 이런 문제들은 프로그램을 작성하는 컴퓨터의 문제보다는 코드로 구현하는 과정때문에 나타난다. 많은 기능을 포함한 프로그램도 결국 개발자 한 명 한 명이 협업하여 작성한 것이기 때문이다. 이런 문제를 줄이기 위해 '코드 컨벤션' 같은 작성 규칙을 정하고 '리팩터링'이라는 개선작업을 진행한다. 그렇다면 좋은 코드를 작성하기 위한 규칙은 무엇인지, 어떻게 개선해야하는지는 누가 정하는 것일까? 

《좋은 코드, 나쁜 코드》가 이런 고민에 대한 답변을 해줄 수 있는 책이다. 《좋은 코드, 나쁜 코드》는 1부-이론 / 2부-실전 / 3부-단위 테스트 세 부분으로 나눌 수 있다. 목차는 아래와 같다.

 

1부 - 이론

1. 코드 품질

고품질 코드를 통해 달성하고자 하는 목표를 소개한다.

2. 추상화 계층

코드를 구조화하고 각각의 구별된 부분으로 나눌 때 사용할 수 있는 사례를 소개한다.

3. 다른 개발자와 코드 계약

다른 개발자와 협업할 때의 계약에 대해 신중하게 생각하는 것이 어떻게 버그를 예방할 수 있는지 논의한다.

4. 오류

좋은 코드를 작성하기 위해 신호를 보내고 처리하는 방법을 신중하게 생각하는 것이 왜 중요한지 설명한다.

 

2부 - 실전

5. 가독성 높은 코드를 작성하라

다른 개발자가 이해할 수 있도록 가독성 높은 코드를 작성하는 방법을 실습해본다.

6. 예측 가능한 코드를 작성하라

다른 개발자가 코드를 잘못 해석하지 않도록 함으로써 버그 발생 가능성을 최소화하는 코드를 작성해본다.

7. 코드를 오용하기 어렵게 만들라

다른 개발자가 실수로 잘못된 코드나 가정에 위배되는 코드를 작성하기 힘들게 하여 버그 발생 가능성을 최소화하는 방법을 실습해본다.

8. 코드를 모듈화하라

코드를 모듈화해서 추상화 계층을 간결하게 표현하고 변화하는 요구 사항에 적응할 수 있도록 도와주는 기법에 대해 설명한다.

9. 코드를 재사용하고 일반화할 수 있도록 하라

이미 작성된 것을 처음부터 다시 작성하지 않고 새로운 기능을 쉽고 안전하게 추가해본다.

 

3부 - 단위 테스트

10. 단위 테스트의 원리

단위 테스트 코드 작성에 영향을 미치는 여러 원칙과 보다 높은 수준의 고려 사항을 소개한다.

11. 단위 테스트의 실제

10장의 원칙을 바탕으로 단위 테스트 코드 작성에 대한 구체적이고 실용적인 방안을 소개한다.

 

목차를 통해 볼 수 있듯

1부에서는 코드에 대한 사고방식을 형성하는 이론적이고 높은 수준의 개념을 소개한다.

2부는 실제적인 내용을 다룬다. 특정 고려 사항이나 기법을 다루는 일련의 주제를 실습해본다.

3부는 효과적이고 유지 관리 가능한 단위 테스트 코드를 작성하기 위한 원칙과 실제적 지침을 다룬다.

 

참고 : 《좋은 코드, 나쁜 코드》는 정적 타입의 객체 지향 프로그래밍 언어로 코드를 작성하는 엔지니어를 대상으로 한다.

다만 예제 코드는 의사코드(pseudocode)를 사용하고 있다.


이번 리뷰에서는 1부의 내용을 소개해보려한다.

 

1장.

프로그램을 만들다보면 코드를 작성하는 사람의 의도가 실사용자에게 잘못 전달 되는 경우가 있다. 이를 줄이는 것이 좋은 프로그램을 만드는 방향성이다. 

실생활에서는 의도와 다른 상황이 발생하기도 한다. 왜 이런 문제 상황들이 안좋은 것인지, 개선하기 위해선 무엇을 고려해야하는지 설명한다.

 

2장.

하나의 프로그램은 여러개의 함수(메소드)로 구성되고, 각 함수(메소드)는 여러 줄의 코드로 구성된다. 또는 다른 함수의 도움을 받기도 한다. 하나의 함수를 구성할 때 스파게티 코드라 불리는 복잡한 코드를 작성할 수도 있지만 유지보수를 위해 분리하는 것이 일반적이다. 이 때 얼마나 낮은 수준의 하위 함수로 나누는 것이 좋을까? 절대적인 기준은 없다. 아래 그림처럼 기준이 다양하기 때문이다.

 

3장.

코드 규칙, 코딩 스타일(Coding Style)로 불리는 코드 작성시 기준이 되는 규칙들이 있다.

이 규칙들은 버그 발생을 줄이기 위해 개발자들간에 서로 약속한 규칙의 집합이다.

이 규칙이 너무 깐깐하면 개발 효율이 떨어지고, 너무 느슨하면 코드 스타일이 자유분방해져서 버그의 먹잇감이 된다.

이 장에서는 어떻게 하면 버그를 예방하는 코드를 작성할 수 있는지에 대해 소개한다.

 

4장.

프로그램을 작성할 때 오류가 발생한다.

이런 오류는 적절한 처리를 통해 정상 상태로 실행할 수 있다.

흔히 try ~ catch로 불리는 예외처리를 통해 예상되는 문제점에 대응하기도 하지만 실제로 예상하지 못한 부분에서 오류가 발생하기도 한다. 오류들을 파악하고, 해결하는 것이 왜 중요한지, 수월하게 해결하기 위해 어떻게 해야하는지를 소개하고 있다.

이로써 이론 부분에 대한 소개가 끝났다.

 

2부에서는 1부에서 학습한 이론을 샘플 코드에 적용하고, 무엇이 문제고, 어떻게 개선해야하는지, 다시 실수할 수 있는 부분은 무엇인지 알려준다.  3부는 반복되는 실수를 줄이기 위한 단위 테스트를 적용한다.

 

이 책과 비슷한 책으로 《실용주의 프로그래머》, 《이펙티브 자바》가 있다. 공통점은 좋은 코드를 작성하는 방향성을 제시한다는 것이다. 《실용주의 프로그래머》는 이론적인 내용이 많아 실제 코드에 적용 예시가 부족하다는 점이 아쉽다. 《이펙티브 자바》는 자바라는 특정 언어에 너무 치우쳐 있어서 사용하는 언어가 다를 경우 적용이 힘들다.

 

《좋은 코드, 나쁜 코드》는 이 두 영역을 적절히 아우르는 책이다. 1부의 이론에서 좋은 코드와 나쁜 코드 사례를 배우고, 2부에서 코드를 직접 개선해보며 문제점들을 하나씩 해결해보기 때문이다. 마지막 3부에서는 단위테스트를 적용해본다. 개발자로서 실력의 정체기가 온 것 같다면, 성장 속도를 빠르게 하고 싶다면 《좋은 코드, 나쁜 코드》를 읽어보면 좋겠다.  

 

 


"제이펍 기술서적 리뷰 활동을 위해 제이펍에서 책을 제공받아 작성된 서평입니다."
리뷰를 위해 제이펍에서 책을 제공받았지만 주관적인 생각을 그대로 적었습니다.

 

반응형