관리
코드 정리 구분
코드 정리는 별도의 PR로 구분하고, PR당 몇 개의 코드 정리만 포함하도록 합니다.
작은 PR은 검토 시간을 단축시켜 환영받으며, 작은 PR을 더 많이 만드는 것이 좋습니다.
PR의 초점이 분명할수록 더 빠른 검토를 장려합니다.
만약 코드 양이 많아지면 PR 검토가 느려지기 때문에 작은 단위로 작업하는 것이 중요합니다.
작은 단위로 작업하고 절대적으로 안전하게 작업하는 데 익숙해지면, 코드 정리 PR을 따로 검토하지 않는 시도를 할 수 있습니다.
연쇄적인 정리
보호 구문을 도입하면 조건을 설명하는 도우미나 설명하는 변수를 추출하는 데 도움이 됩니다.
안 쓰는 코드를 제거하고 나면, 코드를 읽는 순서에 맞춰 정렬하고 응집도를 높일 수 있습니다.
대칭으로 맞추기를 통해 비슷한 코드를 묶어 읽기 쉽게 만듭니다.
읽는 순서를 정리하여 코드 간의 연관성을 명확히 합니다.
응집도를 높이는 배치로 관련 코드들을 함께 배치해 유지보수를 용이하게 합니다.
설명하는 변수는 불필요한 주석을 제거하는 데 도움을 줍니다.
설명하는 상수를 도입하면 코드의 명확성을 높이고, 나중에 수정하기 쉽게 만듭니다.
명시적인 매개변수를 사용하여 코드 가독성을 향상시킵니다.
비슷한 코드끼리 묶어 코드를 쉽게 읽을 수 있도록 합니다.
도우미 추출을 통해 중복된 코드를 모듈화하여 관리합니다.
코드 정리의 일괄 처리량
코드 정리의 범위를 줄이고 PR의 개수를 늘려 검토 비용을 줄이세요.
팀에 신뢰와 강력한 문화가 있다면 코드 정리 후 굳이 검토할 필요는 없습니다.
코드 정리가 소프트웨어 안정성을 해치지 않으면 상호작용의 위험이 줄어듭니다.
리듬
코드 정리는 1시간을 넘지 않도록 합니다.
짧은 시간 내에 코드 정리를 끝내야 동작 변경에 필요한 최소한의 구조 변경을 놓치지 않을 수 있습니다.
대부분의 코드 정리 작업은 이미 정리된 코드 안에서 이루어지게 됩니다.
얽힘 풀기
동작 변경 중 코드가 얽혀 있는 경우 세 가지 선택이 있습니다:
그대로 배포를 진행한다.
코드 정리와 변경 사항을 별도의 PR로 분리한다.
작업을 버리고, 코드 정리를 먼저 한다.
얽힘을 푸는 것은 코드 정리의 핵심이며, 풀어야 할 필요성을 일찍 인지할수록 작업량이 적어집니다.
코드 정리 시점
코드 정리를 먼저 할지, 동작 변경을 먼저 할지는 상황에 따라 결정합니다.
나중에 정리하기
코드를 정리한다고 해서 일이 더 쉬워지지 않는다면 정리하지 마세요.
코드를 정리하면 더 빨리 이해할 수 있겠다고 판단되면, 먼저 정리하세요.
요약
다음 상황에서 코드 정리하지 마세요
앞으로 다시는 코드를 변경하지 않을 때.
설계를 개선해도 배울 것이 없을 때.
다음 상황에서는 나중으로 정리를 미루세요
정리할 코드가 많고 즉각적인 보상이 보이지 않을 때.
코드 정리에 대한 보상이 잠재적일 때.
작은 묶음으로 여러 번 나눠서 정리할 수 있을 때.
다음 상황에서는 동작 변경 후에 정리하세요
다음 코드 정리까지 기다릴수록 비용이 커질 때.
코드를 정리하지 않으면 일을 끝냈다는 느낌이 들지 않을 때.
다음 상황에서는 코드 정리 후에 동작 변경을 하세요
코드 정리가 끝나면 코드 이해가 쉬워지고, 동작 변경이 쉬워질 때.
어떻게 정리해야 할지 알고 있을 때.