7월 3일
이전에 사두었던 책인 CleanCode 를 한달간 정비 및 공부시간을 가지기로 한 동안 읽어보려고 꺼내들었다.
자바언어를 중심으로 풀어나가는 책으로 알고 있어 지금 내가 너무 자세히는 보지 못하겠지만, 책이 담고 있는 사상은 훌륭하다고 소문이 나있어 이 기회에 하루에 한 챕터를 목표로 읽어보려고 한다.
챕터를 읽으며 내가 생각하는 바를 주로 기록하는 글들이 될 것 같다.
들어가면서
회사나 팀 내에서 개발을 한다면 나 혼자 개발하는 것이 아니기 때문에, 이 책에서는 장인 정신이 중요하다고 나오는데 나 또한 절실히 공감한다.
코드를 작성하는데는 원칙, 패턴, 기법이라는 것이 필요한데, 대게 회사나 팀 내에 내가 합류하게 되면 이미 정형화되어진 패턴이 존재한다.
보통 수습기간 동안에 그것을 잘 숙지해서 팀에 녹아들 시간을 주기 마련이다.
하지만 원칙과 패턴을 머리로만 이해한다고해서 좋은 코드가 나오지는 않는다.
이전 회사에서 테크리더의 코드를 머리로는 이해하고 있다고 생각했지만, 실상 그 코드의 전체적인 목적과 기능을 파악하지 않고 당장 업무에 필요한 부분의 기능만 찾아 사용하다가 나중에 문제가 생겼을 때 해결에 시간을 꽤 사용한 경우가 있다.
직접 고생을 해야한다.
반성하자면 어느 순간부터 나는 지금 바쁘다는 핑계로 고생을 하지 않았던 것 같다.
그때 당시에는 쫓겼던건지, 한번에 그것을 다 봐야한다고 생각했던 것 같다. 그래서 더욱 피하게 된 것 같다.
매일 매일 조금씩 고생을 했어야 했다고 생각한다.
지금 사용하는 라이브러리나 모듈을 뜯어서 한번 보라는 피드백을 받았던 기억이 난다.
지금 생각해보면 내게 정말 필요했던 것 같다.
조금씩 시간을 내서 내가 사용하는 것들을, 그리고 내가 사용해야할 것들을 제대로 파악하는 것이 중요하다.
1장 깨끗한 코드
최근 코딩을 하면서 chatGPT를 활용하는 경우들이 많은데, 처음엔 나도 좋게 보지않다가 별 것 아니지만 시간은 드는 그러한 코드를 짤 때는 활용하는 수준으로 사용하고 있었다. 이렇게 지금도 그렇겠지만 나중에는 개발자가 아니더라도 요구사항을 입력만하면 프로그램을 알아서 개발해주는 프로그램을 많이 사용할 것 같다. 하지만 결국 서비스 기능의 상세한 요구사항에 대한 표현은 인간이 해야한다. 그렇기 때문에 앞으로의 개발자의 미래는 더욱 본인의 서비스에 필요한 것을 잘 캐치하고 그것을 잘 전달하고 전달받아 적절히 AI의 도움을 받을 줄 알아야 할 것이다.
1. 서비스에 대한 이해와 필요한 것을 캐치하는 능력
2. 그것을 구성원과 잘 소통해서 팀의 업무로 가져오는 능력
3. 빠르게 기존 패턴과 원칙에 맞춰 원하는 요구사항에 맞게 기술을 도입하는 능력
절대 출시에 바빠 코드를 마구 짜서 나중에 돌이킬수 없는 수준에 이르지 않아야 할 것이다.
내가 짠 쓰레기 코드를 쳐다보며 일단 돌아가니까라는 안도감에 스스로를 위로하고 나중에 정리하겠다고 다짐들은 하지만 그 나중은 결코 오지 않는다. (르블랑의 법칙)
태도의 문제
관리자나 마케터를 탓하기 이전에 개발자가 먼저 장인 정신을 가져 전문가가 되어야 한다.
나쁜 코드의 위험을 이해하지 못하는 관리자 말을 그대로 따르는 행동은 전문가답지 못하다.
원초적 난제
결국 빨리가는 방법은 나쁜 코드를 양산하고 그대로 두는 것이 아닌, 언제나 코드를 최대한 깨끗하게 유지하려는 습관이다.
하지만 꺠끗한것을 우리가 알아는 볼 수 있지만 꺠끗함을 유지하려면 그 청결이라는 감각을 공을 들여 얻어 내야하듯, 코딩에도 코드 그러한 코드 감각이 필요하다.
깨끗한 코드를 작성하는 프로그래머는 빈 캔버스를 우아한 작품으로 바꿔가는 화가와 같다.
근데 책에 나오는 유명 개발자들 초상화를 보면 거의 다 모 자람이 없다.
정리
1. 논리가 간단해야 버그가 숨어들지 못한다.
2. 의존성을 최대한 줄여야 유지보수가 쉬워진다.
3. 깨끗한 코드는 한 가지를 제대로 한다.
4. 깨끗한 코드는 세세한 사항까지 꼼꼼하게 처리하는 코드다.
5. 작성자가 아니더라도 읽기 쉽고 고치기 쉬워야 한다.
6. 단위 테스트 케이스와 인수 테스트 케이스가 존재한다.
7. 하지만 읽기 쉬운 코드와 고치기 쉬운 코드는 엄연히 다르다.
8. 중복을 피하고, 한 기능만 수행하고, 제대로 표현하고, 작게 추상화 한다.
9. 조금씩 이전의 코드들을 시간이 지나도 언제나 깨끗할 수 있게 유지할 수 있어야 한다.
변수 이름 하나를 개선하고, 조금 긴 함수 하나를 분할하고, 약간의 중복을 막고, 복잡한 if문 하나만 정리해도 충분하다.
깨끗한 코드는 누가봐도 주의 깊게 짰다는 느낌을 준다. 고치려고 살펴봐도 딱히 손 댈 곳이 없다.
즉, 깨끗한 코드는 주의 깊게 작성한 코드를 말한다.
'독서' 카테고리의 다른 글
| -10장- 클래스 (0) | 2024.07.10 |
|---|---|
| 쉽게 시작하는 타입스크립트 (0) | 2024.07.07 |
| -4, 5장- 주석, 형식 맞추기 (2) | 2024.07.06 |
| -3장- 함수 (1) | 2024.07.05 |
| -2장- 의미있는 이름 (0) | 2024.07.04 |