프로그래밍은 일에 관한 것입니다
이에 대한 가장 쉬운 방법은 OOP가 수년에 걸쳐 진행 한 진전을 이해하는 것입니다. OOP (및 대부분의 프로그래밍 패러다임)에서 수행되는 모든 작업은 수행 해야 할 작업을 중심으로 모델링 됩니다 .
메소드가 호출 될 때마다 호출자는 "이 작업을 수행하는 방법을 모르지만 어떻게해야하는지 알기 때문에 나를 위해합니다"라고 말합니다.
이것은 어려움을 낳았습니다 : 호출 된 메소드가 일반적으로 작업을 수행하는 방법을 알고 있지만 항상 그렇지는 않은 경우 어떻게됩니까? 우리는 "나는 당신을 돕고 싶었지만 실제로는 그렇게 할 수 없었습니다."
이를 알리는 초기 방법론은 단순히 "쓰레기"값을 반환하는 것이 었습니다. 아마도 양의 정수를 기대할 수 있으므로 호출 된 메소드는 음수를 반환합니다. 이를 수행하는 또 다른 방법은 오류 값을 어딘가에 설정하는 것입니다. 불행하게도, 두 가지 방법으로 보일러 플레이트 let-me-check-over-here-to-make-sure-to-ever-sure-sure-sure-sure-sure-sure-kosher code가 발생했습니다. 상황이 더욱 복잡해지면서이 시스템은 무너집니다.
탁월한 비유
목수, 배관공 및 전기 기사가 있다고 가정 해 봅시다. 싱크대를 수리하기 위해 배관공을 원하기 때문에 그는 싱크대를 살펴 봅니다. 그는 만, 알 수 있다면 그것은 매우 유용 아니다 "죄송합니다, 나는 그것을 고칠 수 없습니다. 그것은 깨진입니다." 만약 그가보고 고쳐서 고칠 수 없다는 편지를 보내면 훨씬 더 나빠집니다. 이제 그가 원하는 것을하지 않았다는 것을 알기 전에 메일을 확인해야합니다.
당신이 선호하는 것은 "펌프가 작동하지 않는 것처럼 보이기 때문에 고칠 수 없었습니다."
이 정보를 통해 전기 기사가 문제를 살펴 보겠다고 결론을 내릴 수 있습니다. 아마도 전기 기사는 목수와 관련된 것을 발견 할 것이므로 목수에게 문제를 해결해야합니다.
도대체, 전기 기술자가 필요하다는 것을 알지 못할 수도 있고, 필요한 사람 을 모를 수도 있습니다 . 당신은 집 수리 사업의 중간 관리인이고 당신의 초점은 배관입니다. 그래서 당신은 당신이 문제에 대해 상사 라고 말한 다음 전기 기사에게 문제를 해결하도록 지시합니다.
이것은 예외적 인 모델링입니다 : 분리 된 방식으로 복잡한 고장 모드. 배관공은 전기 기술자에 대해 알 필요가 없습니다. 체인을 가진 사람이 문제를 해결할 수 있다는 것을 알 필요조차 없습니다. 그는 자신이 직면 한 문제에 대해서만보고합니다.
반 패턴?
좋습니다. 따라서 예외 지점 을 이해하는 것이 첫 번째 단계입니다. 다음은 반 패턴이 무엇인지 이해하는 것입니다.
안티 패턴으로 자격을 갖추려면
- 문제를 풀다
- 결정적으로 부정적인 결과를 초래하다
첫 번째 요점은 시스템이 제대로 작동하는 것입니다. 맞습니까?
두 번째 요점은 더 끈적 거립니다. 예외를 일반적인 제어 흐름으로 사용하는 주된 이유는 목적이 아니기 때문입니다. 프로그램의 특정 기능은 비교적 명확한 목적을 가져야하며, 그 목적을 선택하면 불필요한 혼란이 발생합니다.
그러나 그것은 결정적인 피해 가 아닙니다 . 일을하는 나쁜 방법이지만 이상하지만 반 패턴입니까? 아뇨. 그냥 ... 이상 해요.