![[켄트 벡의 Tidy First?] 개발자의 32가지 행동강령](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcIJb9K%2FbtsHBl3DdKo%2FFMOc9X5nsyKRkY5j4kI54K%2Fimg.png)
한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다.
안녕하세요. 오늘은 켄트 벡의 Tidy First? 책을 리뷰하도록 하겠습니다!
이 책은 어떤 책인가요?
이 책은 굉장히 얇고 가벼운 두 책으로 이루어져있습니다 :)
이 책에 대해 이야기하기 전에 먼저 켄트 벡에 대해 아는 것이 좋습니다
켄트 벡은 누구 인가?
켄트 벡은 소프트웨어 개발자로 소프트웨어 패턴(Pattern), 테스트 주도 개발(Test Driven Development), 익스트림 프로그래밍 (Extreme Programming), 애자일 등 업계에서 주요하게 회자되는 개념들을 제시한 개발자입니다.
실제로 업계에서 굉장히 유명한 분이고, 이 분의 소프트웨어 설계 철학의 핵심만을 담은 책이기 때문에 굉장히 얇은 분량에도 임팩트 있는 정보를 전달하는 책으로 느껴졌답니다.
X의 Kent Beck 🌻님(@KentBeck)
Programmer, coach coach, artist, pokerist, singer/guitarist. Learning to be me. Chief Scientist at Mechanical Orchard. Mastodon: @kentbeck@hachyderm.io
twitter.com
개발자의 32가지 행동 강령
이 책에서는 개발의 32가지 원칙을 제시합니다. 그 원칙은 다음과 같습니다.
- 보호 구문을 사용하라
- 안쓰는 코드를 지워라
- 코드를 대칭으로 작성하라
- 새로운 인터페이스로 기존 구현을 호출하라
- 읽는 순서를 고려하여 코드를 작성하라
- 응집도가 높아지도록 배치하라
- 선언과 초기화를 함께하라
- 의도가 드러나는 변수명을 사용하라
- 리터럴 상수를 사용하라
- 매개변수를 명시적으로 드러내라
- 비슷한 코드끼리 정리하라
- 도우미를 추출하라
- 코드를 하나의 더미로 만들어라
- 주석으로 소통하라
- 불필요한 주석을 삭제하라
- 기능 추가와 리팩토링을 분리하라
- 코드를 점진적으로 개선하라
- 코드 정리 수준을 최적화하라
- 코드 정리의 리듬을 만들어라
- 코드의 얽힘을 빠르게 풀어내라
- 코드 정리가 필요한 상황을 정의하라
- 요소들의 관계를 주목하라
- 구조와 동작을 정의하라
- 시간가치와 선택가능성을 고려하라
- 오늘의 1달러가 내일의 1달러보다 크다
- 옵션의 관점에서 설계하라
- 코드 정리의 경제성을 고려하라
- 되돌릴 수 있는 구조로 변경하라
- 결합도를 줄여라
- 결합도 제거의 트레이드 오프를 고려하라
- 결합도의 절충점을 찾아라
- 응집도 있는 구조로 설계하라
이 32가지 구문 전체가 하나하나 당연한 말이면서도, 와닿는 말이었답니다.
실제 책을 보면 무슨 말인지 아실거에요 ㅎㅎ
이해를 돕는 옮긴이 노트
https://tidyfirst.bettercode.kr/posts
한국 Tidy First 모임
번역서 서문을 쓰면서 좋은 점 한 가지는 원어 서적을 출간하고 나서 관찰했던 내용을 추가할 수 있다는 점입니다. 책을 읽기 전에, 여기 계신 여러분에게 몇 가지 요점을 알려 드리고자 합니다.
tidyfirst.bettercode.kr
실제 이 책을 기반으로한 개발자 모임 또한 존재합니다.
이 모임의 관리자는 이 Tidy First 책을 번역한 안영회님 이신데, 해당 모임 사이트에서 칼럼들을 읽으면 이 책을 얼마나 깊이있게 읽고 또 번역하려 힘썼는지 알 수 있답니다.
옮긴이 노트의 글들을 통해 켄트 벡이라는 사람이 어떠한 생각으로 이러한 주장을 하게 되었는지 더 넓은 인사이트를 가질 수 있었답니다.
만약 책을 읽는다면 본책 -> 옮긴이 노트 -> 본책 의 루틴으로 책을 읽으면 깊이있게 책을 이해할 수 있을 것이라는 생각이 듭니당 :)
Tidy First?
감명깊게 읽은 부분에 대해 간단히 남겨보고자 합니다 :)
대칭으로 맞추기
코드는 일관된 스타일로 통일 되어야 합니다. 다음과 같은 코드가 있다고 생각해봅시다.
public class Example {
private String foo;
public String getFoo() {
if (foo != null) {
return foo;
}
foo = ...;
return foo;
}
}
public class Example {
private String foo;
public String getFoo() {
if (foo == null) {
foo = ...;
}
return foo;
}
}
public class Example {
private String foo;
public String getFoo() {
return (foo != null) ? foo : (foo = ...);
}
}
이런식으로 같은 방식으로 동작하는 코드를 표현에 따라서 다르게 표현한 예제입니다.
결국 모든 클래스의 동작 방식은 동일하지만 이런 코드의 다양성으로 인해 개발자는 유지보수가 어렵게 되겠죠?
그래서 일관된 스타일로 메서드를 정리하는 방법이 필요합니다.
책에서는 이를 대칭으로 맞추기라는 개념으로 제시합니다.
public class Example {
private String bar;
private String baz;
private String qux;
public String getBar() {
if (bar != null) {
return bar;
}
bar = ...;
return bar;
}
public String getBaz() {
if (baz == null) {
baz = ...;
}
return baz;
}
public String getQux() {
return (qux != null) ? qux : (qux = ...);
}
}
이렇게 단지 class의 속성을 가져오는 getter 메서드를 다양한 방식으로 선언되어있다면
public class Example {
private String bar;
private String baz;
private String qux;
public String getBar() {
if (bar == null) {
bar = ...;
}
return bar;
}
public String getBaz() {
if (baz == null) {
baz = ...;
}
return baz;
}
public String getQux() {
if (qux == null) {
qux = ...;
}
return qux;
}
}
이렇게 일관된 스타일로 코드를 정리하면 코드의 가독성과 유지보수성이 크게 향상됩니다. 만약 삼항연산자를 사용해서 표현한 방식이 더 효율적이라고 느껴지더라도 프로젝트 전체의 코드 복잡성 관리를 위해서는 더 비효율적인 코드더라도 일관된 코드를 유지하는 것이 더 좋은 코드일 수 있다는 이야기입니다.
이와 같이 프로그래머로서 생각해볼만한 문제들을 켄트 벡의 사고와 함께 깊이있게 생각해볼 수 있습니다 :)
이 책을 추천하고 싶은 사람
Tidy First는 소프트웨어를 설계하고 구축해나가는 과정에서 개선하는 과정에 대해 깊이있는 고찰이 담긴 책입니다.
이 책은 소프트웨어 설계에 관심이 있는 사람 누구에게나 추천할 수 있는 글입니다.
특히 프로젝트를 진행하면서 좋은 소프트웨어 설계 및 협업을 하고싶은 개발자에게는 이 책을 강력히 권해드립니다!
'회고 > 나는 리뷰어다 📚' 카테고리의 다른 글
[부트캠프 QA편] 더 탄탄한 소프트웨어를 만들기 위한 테스트 방법 (0) | 2024.07.28 |
---|---|
[개발자 기술면접 노트] 개발자의 커리어 바이블 (0) | 2024.04.28 |
[헤드퍼스트 자바3판] 이해가 안되면 넘기질 못하는 당신을 위한 책 (0) | 2024.02.25 |
안녕하세요, 저는 주니어 개발자 박석희 입니다. 언제든 하단 연락처로 연락주세요 😆