|
<출처 : 다음 책 소개>
★★★★☆
소프트웨어의 품질은 유지보수성, 기능 안정성, 성능 효율성, 호환성, 사용성, 믿음성, 보안성, 휴대성이라는 여덟가지 특성으로 분류한다고 합니다. (ISO 25010) 이 책은 그 중 유지보수성에 대한 책 입니다. 업무를 하다보면 처음 부터 신규 구현을 하는 경우도 있겠지만 대개 유지보수에 많은 시간을 드리곤 합니다. 비단 업무의 비율로 치지 않더라도 유지 보수성이란 것이 비지니스나 품질에 지대한 영향을 끼친다는 사실은 자명 합니다.
이 책에서는 유지보수성 10대 가이드 라인을 각 장별로 제시하고 있습니다. 각 장별 예시로 제시된 코드나 내용의 난이도가 높지 않고 군더더기가 없어 약간의 실무 경험이 있으시다면 공감하며 책을 읽어 나가실 것이라 생각 됩니다. 10대 가이드 라인은 아래와 같습니다.
1. 코드 단위를 짧게 하라 : 메소드 단위는 15라인을 넘어가지 않게 작성해야 해당 메소드를 이해하고, 테스트하고, 재사용하기 쉬워 유지 보수성이 좋아질 수 있습니다.
2. 코드 단위는 간단하게 짜라 : 복잡한 if-else 구문과 같이 코드 복잡성을 높이는 방식을 제한해야 합니다. 단위 당 분기점은 4개 이하로 제한하고 복잡한 단위는 더 잘게 나누어 서로 뭉쳐 있지 않게 해야 합니다. 그래야 단위 별 수정 및 테스트가 쉬워지고 유지보수 성이 개선 됩니다.
3. 코드는 한번만 작성하라 : 코드를 복사하지 않습니다. 이 책에서 중복 코드는 정말 정말 기피해야 할 대상으로 보고 있습니다. 코드를 복사하면 여러 곳에서 버그를 고쳐야 하기 때문에 비효율적이고 에러가 나기 쉽습니다. 중복 코드의 경우 생성하지 않는 것이 무엇보다 중요 합니다. 참고로 이미 어느 정도 개발이 완료된 패키지에서의 중복 코드는 PMD 에 포함된 CPD 를 통해 검출 할 수 있습니다.
4. 단위 인터페이스를 작게 하라 : 단위당 파라미터 개수는 4개 이하로 제한하는 것이 좋습니다. 만약 파라미터가 너무 길어진다면 이들을 객체로 추출 하는 것도 좋습니다. (예, x1, y1, x2, y2 ---> Rectangle)
5. 관심사를 모듈로 분리하라 : 모듈 간 결합을 느슨하게 하기 위해 큰 모듈을 삼가해야 합니다. 개별 모듈로 나누어 일을 시키고 구현 상세는 인터페이스 안으로 감추는 것이 좋습니다. 그리하여 보다 느슨하게 결합된 코드베이스 상에서 수월하게 내용을 미리 실피고 실행할 수 있습니다.
6. 아키텍처 컴포넌트를 느슨하게 결합하라 : 메소드, 클래스 단의 리팩토링 못지 않게 최상위 수준의 컴포넌트 간의 리팩토링 역시 중요 합니다. 최상위 수준의 컴포넌트 간 결합도를 낮추어야 합니다. 다른 컴포넌트 모듈에 호출을 받는 형태로 공개된 모듈 내부의 상대적인 코드량을 최소화하는 방향으로 결합도 낮춤이 진행되야 합니다. 그리하여 각 컴포넌트의 독립성을 유지하고 유지보수성을 개선할 수 있습니다.
7. 아키텍쳐 컴포넌트의 균형을 잡아라 : 최상위 수준의 컴포넌트 개수와 상대적 크기의 균형을 잡아야 합니다. 컴포넌트의 개수는 9개 정도(6 ~ 12개 사이) 되도록 소스 코드를 조직화 하고 컴포넌트의 크기를 대략 균등하게 맞추는 것이 좋습니다.
8. 코드 베이스를 작게 하라 : 코드베이스를 가능한 작게 하는 것이 좋습니다. 코드베이스가 커지는 걸 막고 시스템 크기를 적극적으로 줄여야 합니다. 이를 위한 다양한 가이드 라인이 있겠지만 이 책에서는 적극적으로 오픈소스 라이브러리 / 프레임워크 사용을 권장하고 있습니다. 단, 이때 해당 라이브러리의 코드는 고치지 않는 것이 중요합니다. 코드를 고치는 순간, 해당 라이브러리가 결국 코드 베이스에 포함되는 것이나 마찮가지기 때문에 라이브러리 업데이트를 매번 따라가고 분석해야하는 어려움이 있을 수 있습니다.
9. 테스트를 자동화 하라 : 당연합니다. 개발자가 일일히 손으로 한땀 한땀 테스트 하고 있을 수 없습니다. 자동화 할 수 있는 것들은 모두 자동화로 돌리는 것이 좋습니다.
10. 클린 코드를 작성하라 : "스스로 프로라고 자부한다면 클린 코드는 필수다. - 로버트 C. 마틴" 클린 코드를 작성하는 7대 규칙이 있습니다.
단위 수준의 코드 악취를 남기지 말라.
나쁜 주석을 남기지 말라.
주석 안에 코드를 남기지 말라.
죽은 코드를 남기지 말라.
긴 식별자 이름을 남기지 말라.
매직 상수를 남기지 말라.
제대로 처리 안 한 예외를 남기지 말라.
'Diary' 카테고리의 다른 글
Book Review : 소프트 스킬, 존 소메즈 (0) | 2017.02.03 |
---|