유지보수하기 좋은 코드, 앞으로의 수련 🧘🏻♂️
빠르게 변하는 세상 그리고 유지보수
세상은 빠르게 변한다. 소프트웨어도 그에 맞춰 변해야 한다.
어제 개발한 기능은 오늘 더 이상 쓰지 않을 수 있다. 매일 수많은 기능이 삭제되고 추가된다.
그렇기 때문에 좋은 소프트웨어, 개발자는 빠르게 변화에 대처해야 한다.
빠르게 대처하기 위해선 변화가 오래 걸리면 안 된다. 적은 비용을 들여 코드를 수정, 추가, 삭제해야 한다.
아쉽게도 나는 그런 사람이 아니었다. 적은 비용을 들인 다는 것은 생각하지 못했다. 그동안 했던 프로젝트들은 실제 제품이 아니었고 요구사항이 적확하여 개발이 쉽거나, 큰 규모의 서비스가 아니라 변화가 쉬웠고, 시간 부족으로 기능 개발하는 데 바빴으며, 팀이 작아 의사소통이 편했다. 무엇보다 외부에 보이는 기능은 멀쩡했기 때문에 좋은 코드 작성법은 생각지 않았던 것 같다.
좋은 소프트웨어는 변하기 쉬운 것이고, 좋은 개발자는 쉽게 변경할 수 있는 코드를 작성할 수 있어야 한다.
교육과 실무의 차이도 여기에 있는 것 같다. 교육 프로젝트의 대부분은 죽어있는 소프트웨어를 개발하기 때문에 변화에 빠르게 대응할 필요가 없다. 실제 서비스 운영 경험은 자연스레 유지보수로 직결되기 때문에 올바른 실무경험은 높이 평가된다. 이 차이는 너무나도 큰 차이이다.
한 줄 요약 : '기능 개발'만이 개발이 아니다. '유지 보수'도 중요하다. 유지보수하기 좋은 코드를 짜야한다.
clean code that works - Ron Jeffries
작동하는 깔끔한 코드 - 존 제프리즈
책 "테스트 주도 개발" p21 - 캔트 벡
우리가 짜는 프로그램은 두 가지 요구사항을 만족시켜야 한다.
우리는 오늘 완성해야 하는 기능을 구현하는 코드를 짜야하는 동시에
내일 쉽게 변경할 수 있는 코드를 짜야한다. - 샌디 메츠
PPT "애플리케이션과 아키텍처 객체지향" p90 - 조영호
컴퓨터가 이해하는 코드는 바보도 작성할 수 있다. 사람이 이해하도록 작성하는 프로그래머가 진정한 실력자다. - 마틴 파울러
리팩터링 2판 p35 - 마틴 파울러
앞으로의 수련
유지보수하기 좋은 코드 작성을 위해 수련하려 한다.
참고할 자료들은 아래와 같다. (작성일 22.01.08, 수정)
이름 | 분류 | 주제 |
소프트웨어의 품격 - 마르코 파엘라, 최강민 역 | 책 / 430쪽 | 소프트웨어 품질 |
객체 지향 프로그래밍 입문 - 최범균 |
강의 / 인프런 / 2시간 32분 | OOP |
객체지향의 사실과 오해 - 조영호 | 책 / 260쪽 | OOP |
오브젝트 - 조영호 | 책 / 656쪽 | OOP |
단위 테스트 - 블라디미르 코리코프, 임준혁 역 | 책 / 400쪽 | Unit Test |
의식적인 연습으로 TDD, 리팩토링 연습하기 - 박재성 | 세미나 / 유튜브 / 1시간 17분 | TDD |
현실 세상의 TDD : 안정감을 주는 코드 작성법 - 이규원 | 강의 / 패스트캠퍼스 | TDD |
테스트 주도 개발 - 캔트백, 김창준,강규영 역 | 책 / 380쪽 | TDD |
백박의 개발자를 꿈꾸며 : 코드리뷰, 레거시와 TDD - 백명석, 최범균 | 강의 / 패스트캠퍼스 | TDD |
애플리케이션을 테스트하는 다양한 방법 - 백기선 | 강의 / 인프런 / 5시간 56분 | Test, Java |
읽기 좋은 코드가 좋은 코드다 - 더스틴 보즈웰, 트레버 파우커, 임백준 역 | 책 / 252쪽 | Refactoring |
클린코드 - 로버트 C. 마틴, 박재호, 이해영 역 | 책 / 584쪽 | Refactoring |
리팩터링 - 마틴파울러, 개앞맵시,남기혁 역 | 책 / 550쪽 | Refactoring |
클린코더스 - 백명석 | 강의 / 유튜브 | Refactoring |