AHA(Avoid Hasty Abstractions)는 성급한 추상화를 피하자는 프로그래밍 원칙이다. 켄트 C. 도즈(Kent C. Dodds)는 DRY와 WET를 경직된 규칙으로 쓰는 대신, 실제 사용 사례를 충분히 살핀 뒤 공통 구조를 정하자고 설명한다. 코드를 얼마나 줄였는지보다 다음 변경을 감당할 수 있는지가 판단 기준이다. (AHA Programming)
합치기 전에 기다리기
- 예를 들어 서로 다른 작가의 웹사이트를 하나의 틀로 만들기 전에 작품 목록, 글, 이미지가 어떻게 달라지는지 비교해보자. 비슷한 첫 화면만 보고 모든 페이지를 같은 구조로 묶으면 예외 설정이 늘어날 수 있다.
- 이미 합친 코드가 맞지 않는다면 다시 나눌 수도 있다. 샌디 메츠(Sandi Metz)는 잘못된 추상화에서 벗어나는 방법으로 코드를 각 사용처에 돌려놓고 필요 없는 부분을 덜어내는 절차를 설명한다. (잘못된 추상화)
- 가역성을 생각하며 추상화를 미룬 기록을 남겨보자. 현재의 차이, 나중에 다시 볼 조건, 이미 공유해야 하는 규칙을 구별해 적으면 기다리는 이유가 분명해진다.