19장. 리듬
이 작품은 AI를 사용하여 번역되었습니다. 여러분의 피드백과 의견을 환영합니다: translation-feedback@oreilly.com
처음으로 돌아가 보겠습니다. 향후 시스템 동작을 더 쉽게 변경하기 위해 정리하고 있습니다. 여러분은 그만한 가치가 있기 때문에 미래의 행동 변경을 더 쉽게 만들고 있습니다(반대하는 사람이 있다면 나중에 경제학적으로 설명하겠습니다). 여기서 무슨 얘기를 하고 있는 걸까요? 잠깐 얘기했다가 다시 본론으로 돌아가시죠? 몇 시간 동안 행복하게정리하는 시간?
정리 정돈( )의 기술 중 하나는 정리 정돈의 리듬을 관리하는 것입니다. 이전 장에서 우리는 이 이미지(그림 19-1)를 통해 작은 단위의 정리 정돈을 권장했습니다.
그림 19-1. 함께 또는 개별적으로 일괄 처리된 구조 변경
이러한 일련의 구조 변화와 그에 따른 행동 변화 중 하나에 얼마나 많은 시간이 소요될까요?
소프트웨어 디자인은 프랙탈이므로 모든 시간 척도가 될 수 있습니다. 하지만 이 책에서는 소프트웨어 설계의 한 가지 규모, 즉 개인에게 영향을 미치는 소프트웨어 설계에 대해 이야기하고자 합니다. 이를 위해 몇 분에서 최대 한 시간까지 이야기하고 있습니다. 행동 변화를 일으키기 전에 한 번에 한 시간 이상 정리하는 것은 원하는 행동 변화를 일으키는 데 필요한 최소한의 구조 변경을 놓쳤다는 의미일 수 있습니다.
하지만 또 다른 가능성은 코드가 너무 엉망이어서 행동을 변경하기 전에 몇 시간 동안 수익성 있게 정리할 수 있다는 것입니다. 이것이 사실이라면 오래 가지 못할 것입니다. 소프트웨어 설계는 "길을 닦는" 경향이 강합니다.
이야기를 들어본 적이 없는 분들을 위해 간단히 설명하자면, 한 대학에서 건물을 여러 개 지었는데, 기획자들은 건물 사이에 산책로를 어디에 둘지 고민하고 있었습니다. 그러나 그들은 신중하게 추측하는 대신 건물 사이의 모든 공간에 잔디를 심었습니다.
몇 달 후, 학생들의 발은 풀밭에 닳아 없어진 길이 되었습니다. 기획자들은 마모된 부분을 매끄럽게 포장했습니다.
동작 변경은 코드에서 클러스터링되는 경향이 있습니다. 파레토 법칙에 따르면 80%의 변경 사항은 20%의 파일에서 발생합니다. 먼저 정리하는 것의 장점 중 하나는 정리도 클러스터링된다는 점입니다. 그리고 행동 변화에 가장 매력적인 지점에 정확히 클러스터링됩니다.
처음에는 많이 정리하더라도 곧 이미 정돈된 코드의 동작을 변경하고 싶다는 생각이 들 것입니다. 조금만 더 계속하면 대부분의 변경 사항은 이미 정돈된 코드 영역에서 발생합니다. 결국에는 시스템의 대부분의 코드가 손대지 않았음에도 불구하고 정돈되지 않은 코드를 만나는 것은 예외가 될 것입니다.
그렇기 때문에 저는 정리 정돈이 몇 분에서 한 시간 정도 걸리는 활동이라고 자신 있게 말할 수 있습니다. 예, 때로는 더 오래 갈 때도 ...