본 문서에서는 대규모 시스템의 정상적인 작동과 효율적인 개선을 위해, 작성한 코드를 평가하는 기준이 되는 7가지 요소에 대해 다룬다. 이 요소들은 그 구분히 매우 명확하고 객관적이지 않으며 프로그래머의 경험 수준에 따라가는 경향이 있다.
최종수정일 : 2023.09.18
유지보수성이란 기존의 코드를 수정하거나 삭제하였을 때 또는 새로운 코드를 추가하였을 때 기존의 코드나 기능이 손상받지 않고, 버그를 발생시키지 않는 성질을 의미한다.
가독성이란 본인이 아닌 다른 사람이 내용을 봤을 때 맥락과 기능을 쉽게 이해할 수 있는 성질을 의미한다. 혼자 작업하든, 여러명이서 작업하든 간에 코드를 읽는 시간의 비율은 매우 높으므로 가독성은 중요하다. 가독성은 주석, 함수길이, 높은 코드 응집도, 낮은 결합도 등의 다양한 요소로 이뤄진다.
확장성이란 설계 초기부터 기능의 확장에 대해 폐쇄적이지 않고 인터페이스 등이 구현되어 있어, 간단한 로직으로도 새로운 기능을 바로 추가할 수 있는 성질을 의미한다.
유연성이란 기존에 구현된 기능이나 객체가 상속이나 인터페이스등을 활용해 새롭고 다양한 시나리오에 쉽게 대응할 수 있게 구현되어 있음을 의미한다.
간결성이란 더 짧은 코드와 더 간단한 기능으로 동일 기능을 수행할 수 있는 성질을 의미한다. KISS(Keep It Simple, Stupid)라고도 한다.
재사용성이란 정리된 기존 코드를 사용함으로서 불필요한 코드 작성을 반복하는 것을 최소화 하는 것을 의미한다. 단일책임원칙(Single Responsibility Principle), 디커플링, 높은 응집도, 모듈화 등등이 높은 재사용성과 관련이 있다.
단위 테스트를 작성하고 수행하기 쉬운 성질이 테스트 용이성이다. 이것이 어려울 경우 위의 여섯가지가 잘 지켜지지 않은 경우가 많기 때문에 종종 언급된다.