ActiveRecord 콜백 사용이 만연하고 비좁은 대형 Rails 앱에서 작업했습니다. 레코드를 저장하면 종종 예기치 않은 부작용이 발생하여 시스템에 대해 추론하기가 어려웠습니다.
동시에, 후크가 상속의 일부로 잘 사용되는 후크를 보았습니다 (예 : 템플릿 메소드를 사용하는 서브 클래스가 서브 클래스가 부모의 내부에 대해 알 필요없이 특수 행동을 추가 할 수 있도록 허용 함). (예 : 활성화 될 때 후크를 실행하는 emacs 모드, 사용자가 해당 모드 주위에 사용자 정의 동작을 추가 할 수 있도록 허용)
Rails 앱과 Lisp 인터프리터는 매우 다른 시스템이라는 것을 알고 있지만, 훅이 직면 한 문제에 적합한 디자인 선택인지 결정할 때 사람들이 잘 알고있는 기준이 있는지 궁금합니다.
나에게 돋보이는 주제는 예측 가능성입니다. 후크를 잘못 사용 하면 먼 거리 에서 놀라운 동작이 발생하고 놀라운 동작이 발생하는 반면, 잘 사용하면 긴밀한 연결없이 예측 가능한 프레임 워크가 생성 될 수 있습니다.
나는 아직도 프로그래밍 경력을 쌓은 지 몇 년이 지났기 때문에 많은 측면에서 나 자신을 멍청한 것으로 생각하며 사람들 이이 주제에 대해 상당한 양의 생각을했다고 의심합니다. 이 결정을 안내 할 수있는 몇 가지 지침은 무엇입니까?