최근에 다시 읽어본 책. 책 제목이 명확합니다,
“읽기 좋은 코드가 좋은 코드다”
크게 공감합니다. 프로그래머라면 대부분 공감할 것입니다.
좋은 코드가 왜 좋고, 나쁜 코드가 왜 나쁜지 정리한 책. 좋은 코드를 짜고싶은 분들께 추천합니다.
저자와 역자의 이력이 상당합니다. 프로그래밍의 베테랑들. 책의 신뢰를 더해줍니다,
나쁜 코드의 예를 분석하고, 그러한 코드가 왜 나쁜지, 그리고 어떻게 개선할 수 있을지 연구한 결과가 바로 이 책이라고 합니다. 이름짓기와 주석, 포맷팅, 논리, 루프 제어, 복잡성 관리, 코드 블록 정리 등등. 결과적으론 재밌고 유익하게 읽었습니다.
보통은 형상관리 툴을 쓸 테지만, 누가 이렇게 짰지? 나구나? 싶은 상황은 생각보자 자주 직면하게 됩니다.
코드는 이해하기 쉬워야 한다, 다시말해 코드를 읽는데 드는 비용은 줄여야 한다는 말. 코드는 읽는데 드는 비용이 작다는 말은 여러가지 의미를 내포합니다. 설계가 명확하고 간결하다는 것도 포함되겠죠.
4개 챕터로 구성돼있는 책입니다, 개인적으론 1부 부터 순서대로 난이도나 다루는 주제가 커지는 것처럼 느껴졌습니다. 그래서 이 책은 순서대로 앞에서부터 읽기를 권장합니다.
이미 알고있고 실천하려 노력하는 내용들도 있었지만, “왜?”에 대한 부분이 조금 모호한 부분들이 있었는데 그런 모호함을 채워주는 내용이 많았습니다.
특히 흐름제어 내용은 제가 좋아하는 내용들이 많았습니다.조건문을 깔끔하고 쉽게 사용하는 방법. goto 문을 왜 지양해야 하는지? 드모르간의 법칙, 쇼트 서킷 논리 오용 등.
3부, 4부는 많은 부분 리팩토링 내용과 일맥상통하는 부분이 많았습니다. 캐주얼하게 잘 풀어낸 구성이에요.
이름을 잘 지어야 하는 이유에 대한 4컷 만화.
중간중간 이런 만화나 삽화들로 이해를 돕습니다,
자칫 그 이유를 모르고, 남들이 쓰기 때문에 따라서 쓰는 경우가 많은데, 그런 내용들을 잘 짚어줍니다.
소제목 마지막엔 이렇게 요약정리도 해줘서 되새기기 좋습니다.
코드를 미학적으로 개선하는 것이 단순히 보기 이쁘게 만드는 걸 넘어, 구조 자체를 개선 시킨다는 걸 계속해서 실제 코드로 보여줍니다,
코드를 문단으로 나누어 정리한 예시. 이렇듯 프로그래밍 “언어”를 좀 더 고품질로 작성하는 방법에 대해 다루는 책입니다.
구구절절 공감되고 맞는 이야기들.
나름 재밌게 읽은 제어구문과 요다 표기법에 대한 이야기도 있습니다.
자연스러운 것은 영어 어순에 맞게 "값이 유동적인 질문을 받는 표현"을 왼쪽에, "고정적인 값, 혹은 비교대상으로 사용되는 표현"을 오른쪽에 두는 것이겠죠.
드모르간의 법칙. “not을 분배하고 and/or를 바꿔라.” 복잡한 조건문을 간결하게 바꾸는 것도 아주 좋아라 하는 코드 정리 기준 중 하나입니다,
왜 전역변수를 피해야 하는지 그 이유를 명확하게 알려주기도 합니다.
goto 문 역시 왜 지양해야하는지 그 이유를 명확하게 알려줍니다.
변수의 값은 최대한 적은 횟수로 변하게 해야한다는 조언. 변수의 변경은 곧 프로그램 상태의 변화이기 때문에 상태를 변경하는 곳, 코드는 한 개가 제일 좋고, 그게 어렵다면 가능한 줄여야 합니다.
여기까지만 2부까지의 내용입니다. 책이 재밌어서 정리하면서도 계속 빠져들다보니 시간이 오래 걸렸네요. 나머지 3, 4 부는 다름 포스트로 다루겠습니다.
책 구입 링크
https://coupa.ng/bU4A0r
(파트너스 활동을 통해 일정액의 수수료를 제공받을 수 있음)
.
'프로그래밍 이야기' 카테고리의 다른 글
파이썬(Python) - 폴더 내의 특정 단어(접두어)일괄 변경, 제거하는 코드 (0) | 2023.05.06 |
---|---|
Unity 게임 개발을 위한 Visual Studio 2022 Community 설치 (0) | 2022.01.23 |
깃헙 코파일럿 Copilot 을 써보려고 했다 (0) | 2021.12.12 |
부동소수점 표현과 부동소수점 연산 (0) | 2020.03.21 |
A Tour of C++ : 11장 컨테이너 (0) | 2019.11.28 |
[VS] Visual Studio 2017 언어 변경, 로그 영어로 출력하기 (0) | 2019.11.24 |
A Tour of C++ : 10장 입력과 출력 (0) | 2019.11.23 |