티스토리 뷰
막상 개발자가 되면 새 코드를 쓰는 시간보다 코드를 유지 보수하는 시간이 훨씬 길다. 그러므로 다음 두 가지를 익혀두면 좋다. 첫째, 코드를 적절히 유지 보수하는 방법을 알아야 한다. 둘째, 유지 보수하기 쉽게 코드를 작성하는 방법도 알아야 한다.
| 당신은 코드를 유지 보수하는 데 대부분의 시간을 보내게 될 것이다 |
어떤 형태로든 코드 유지 보수 업무를 하게 될 것이다. 이 말인즉, 세상에는 새로운 소프트웨어 수보다 오래된 소프트웨어의 수가 항상 더 많을 것이라는 뜻이다. 소프트웨어 제푸믄 살아 숨 쉬는 유기체와 같다. 끊임없이 성장하고 바뀌며 천천히 죽어간다.
| 훌륭한 개발자는 유지 보수하기 좋은 코드를 만든다 |
훌륭한 개발자는 유지 보수하기 아주 좋은 코드를 만든다. 그 이유는 다음과 같다.
- 자신이 작성한 코드가 유지 보수 단계에 가장 오랜 시간을 머무를 것을 안다.
- 버려지거나 재작성되지 않고 오래 살아남은 코드가 가치 있는 코드라는 걸 안다.
- 이해가 잘 되고 수정하거나 유지 보수하기 쉬운 명확하고 좋은 코드를 작성한다.
- 느슨하게 결합된 유연한 설계를 선호한다. 그래야 수정 사항이 생겨도 시스템의 다른 컴포넌트에 영향을 주지 않기 때문이다.
- 따로 설명이 없어도 이해하기 쉬운 코드를 만든다. 문서화 작업도 특별히 신경쓴다.
- 오랜 세월 다른 사람의 코드, 자신의 코드를 관찰하고 유지 보수해왔다. 그래서 유지 보수하기 좋은 코드가 가장 좋은 코드라는 걸 알고 있다.
| 보이 스카우트 규칙 |
캠핑한 장소를 자신이 처음 왔을 때보다 더 깨끗하게 만들고 떠나라. 삶의 많은 영역에 적용할 수 있는 훌륭한 규칙이다. ㅅ호프트웨어 개발에서도 활용할 수 있다. 받은 코드보다 더 나은 코드로 만들어두고 떠나라. 그렇게 간단하다.
버그 수정, 새 기능 추가 등의 작업을 할 때 자신이 받은 것보다 약간 더 나은 코드가 되게 만들어라.
단위 테스트를 추가하여 내 뒤에 코드를 받아서 뭔가를 바꾸어야 할 개발자에게 좀 더 튼튼한 코드를 만들어줘라.
몇몇 기능을 메서드나 프로시저로 그룹화하여 불필요한 부분을 빼고 이해도를 높여라.
많은 코드를 리팩토링하여 더 깔끔하고 단순하게 설계하라.
| 가독성이 가장 중요하다 |
코드를 유지 보수하기 쉽게 만드는 데 가장 큰 영향을 미치는 요소는 가독성이다. 간결하고 기발한 코드를 작성하기 위해 노력하는 개발자가 많다. 간결한 것도 좋지만 너무 짧고 기발한 코드는 재앙으로 이어지기 십상이다. 왜냐하면 코드를 작성한 시간보다 읽는 시간이 훨씬 더 길기 때문이다.
코드를 다른 프로그래머가 이해하기 쉽게 작성해두면 시스템 수정이 쉬워질 뿐 아니라 시간도 적게 들 것이다. 알아보기 쉬운 코드가 유지 보수하기 쉽다는게 정설이다.
| 코드 리팩토링 |
리팩토링은 기존 코드 설계를 개선하는 과정이다. 저자는 리팩토링이 기존 코드의 기능은 그대로 두고 조금 더 가독성을 높이는 것이라고 생각한다. 리팩토링의 핵심은 기존 코드를 더 낫게 만드는 것이다. 단위 테스트도 마찬가지로 유지 보수를 신경써야 한다.
| 자동화는 필수다 |
수정한 내용을 빠르게 테스트할 수 있다는 건 튼튼한 안전망을 보유하는 것이나 다름없다. 그러면 기존 코드 베이스에 새로운 버그나 에러가 발생하는 것을 막는 데에도 도움이 된다.
| 주석을 쓸 거라면 잘 써라 |
저자는 주석이 없어도 이해할 수 있는 명확하고 표현력 좋은 코드를 쓰는 게 주석을 읽어야만 이해할 수 있는 모호한 코드를 쓰는 것보다 좋다고 생각한다. 하지만 주석을 쓸 거라면 꼭 제대로 쓰기를 바란다. 수수께끼 같은 코드만큼 나쁘다. 아니다 어떨 때는 그보다 더 나쁘다. 커밋 메시지도 최대한 알아보기 쉽고 도움이 되게 써라. 커밋 메시지가 명확하면 코드 베이스 유지 보수가 쉬워진다. 커밋 메시지는 시간의 흐름에 따라 코드에 어떤 변화가 있었는지만 알려주는 게 아니라 왜 그런 변화가 있었는지도 알려주기 때문이다.
| 유지 보수하기 쉬운 코드 쓰는 법을 배울 수 있는 자료 |
코드 유지 보수는 여러 기술을 동원해야 할 수 있는 까다로운 작업이다. 코드를 작성하고 리팩토링하고 설계하는 기술뿐 아니라 데브옵스나 자동화 같은 인프라스트럭처 관련 사항까지 알아야 한다. 그래서 유지 보수하기 쉬운 코드를 작성하고 자신이 작성하지 않은 기존 코드를 유지 보수하는 데 도움을 주는 좋은 자료를 몇 가지 소개하겠다.
- 로버트 마틴의 「Clean Code」
- 스티브 맥코넬의 「Code Complete」
- 마이클 페더스의 「레거시 코드 활용 전략(Working Effectively With Legacy Code)」
- 마틴 파울러의 「리팩토링(Refactoring)」
'도서 리뷰' 카테고리의 다른 글
Career Skills_P3 - Ch32. 디버깅 (0) | 2021.07.31 |
---|---|
Career Skills_P3 - Ch31. 지속적 통합(Continuous Integration) (0) | 2021.07.30 |
Career Skills_P3 - Ch30. 소스 제어 (0) | 2021.07.29 |
Career Skills_P3 - Ch28. 테스트와 QA 기초 (0) | 2021.07.27 |
Career Skills_P3 - Ch24. 백엔드 개발 (0) | 2021.07.22 |