나는 기사를 읽었을 때 실제로 정통이나 새로운 아이디어가 아니기 때문에 기사가 약간 오래되었다고 생각합니다. 이 아이디어는 실제로 단순한 Observer 구현 일 때 별도의 패턴으로 표시됩니다. 당시에 내가 한 일을 되돌아 보면 상호 의존적 인 데이터가있는 여러 다른 패널이있는 다소 복잡한 인터페이스 뒤에 앉아 논리를 작업하는 것을 기억합니다. 사용자는 값을 변경 및 / 또는 최적화 루틴을 실행할 수 있으며 이러한 조치를 기반으로 UI가 수신 및 업데이트하는 이벤트가 생성되었습니다. 개발 중에 특정 패널이 업데이트 될 때 업데이트되지 않는 많은 문제가있었습니다. 수정 (디자인 내에 머물러 있음)은 다른 이벤트에서 이벤트를 생성하는 것이 었습니다. 궁극적으로 모든 것이 제대로 작동 할 때까지 거의 모든 변경으로 인해 모든 패널이 새로 고쳐졌습니다. 주어진 패널을 새로 고쳐야 할 때 분리하려고하는 모든 복잡성은 사라졌습니다. 그리고 그것은 어쨌든 중요하지 않았습니다. 효과적으로 조기 최적화되었습니다. 모든 것을 새로 고치는 단일 이벤트로 모든 것을 축소하여 시간과 노력을 크게 절약했을 것입니다.
"모든 것을 고치거나"모든 것을 새로 고치도록 설계된 수많은 시스템이 있습니다. 행을 추가 / 업데이트 한 다음 DB를 다시 쿼리하는 모든 CRUD 인터페이스를 생각하십시오. 이것은 이국적인 접근 방식이 아니며 명백한 비 영리한 솔루션 일뿐입니다. 2003 년에는 '열병'의 높이라는 것을 알아야합니다. 내가 알 수 있듯이 사람들은 새로운 패턴을 명명하는 것이 명성과 부를 향한 길이라고 생각했습니다. 잘못 이해하지 마십시오. 패턴의 개념은 초록의 솔루션을 설명하는 데 매우 유용합니다. 그냥 일종의 난간을 벗어났습니다. 일반적으로 패턴 개념에 대해 많은 냉소를 만들었 기 때문에 불행합니다. 이 맥락에서 '정통'솔루션으로 이것을 말하는 것이 합리적입니다. 그것' ORM 또는 DI 컨테이너 주변의 정통과 유사합니다. 사람들이 이러한 도구가 존재하기 오래 전에 소프트웨어를 구축해 왔지만 많은 경우에 이러한 도구가 과도하게 사용 되더라도이를 사용하지 않는 것은 정통적인 것으로 여겨집니다.
다시 '모든 것을 고치십시오'. 간단한 예는 평균 계산입니다. 간단한 해결책은 숫자를 합산하고 값의 카디널리티로 나누는 것입니다. 숫자를 추가하거나 수정하면 처음부터 다시 수행하면됩니다. 합계와 숫자의 수를 추적 할 수 있으며 누군가 숫자를 추가하면 수를 늘려 합계에 추가합니다. 이제 모든 숫자를 다시 추가하지 않습니다. 범위를 참조하는 수식으로 Excel을 사용하여 해당 범위의 단일 값을 수정 한 적이 있다면 '모든 항목 수정'패턴의 예가 있습니다. 즉, 해당 범위에 대한 참조가있는 수식은 그 값은 관련이 있습니다 (예 : sumif ()와 같은 것을 사용).
이것은 이것이 주어진 맥락에서 현명한 선택이 아니라고 말하는 것은 아닙니다. 평균 예에서 이제 업데이트를 지원해야한다고 가정하겠습니다. 이제 어떻게 든 이전 값을 알아야하고 델타로 합계를 변경해야합니다. 분산 환경이나 동시 환경에서이 작업을 시도 할 때까지이 중 어느 것도 어려운 일이 아닙니다. 이제 모든 종류의 까다로운 타이밍 문제를 처리해야하므로 결국 재 계산보다 훨씬 속도가 느려지는 주요 병목 현상이 발생할 수 있습니다.
여기서 결론은 '모든 것을 고치십시오'또는 '모든 것을 새로 고치십시오'접근 방식이 훨씬 쉽게 얻을 수 있다는 것입니다. 보다 정교한 접근 방식을 만들 수는 있지만 훨씬 더 복잡하므로 결함이있을 가능성이 높습니다. 또한 많은 맥락에서 '모두 새로 고침'접근 방식이 더 효율적일 수 있습니다. 예를 들어, copy-write 방식은 일반적으로 단일 스레드 방식의 경우 속도가 느리지 만 동시성이 높은 경우 잠금을 피하여 성능을 향상시킬 수 있습니다. 다른 경우에는 효율적인 방식으로 변경 사항을 일괄 처리 할 수 있습니다. 따라서 대부분의 문제의 경우,이를 수행 할 수없는 특정한 이유가없고 필요한 경우 더 복잡한 작업을 수행하는 것에 대해 걱정하지 않는 한 모두 새로 고침 방법으로 시작하려고합니다.