친구 그룹과 나는 과거에 한동안 프로젝트를 진행해 왔으며, 우리는 우리 제품과 관련된 시나리오를 표현하는 멋진 OOP 방식을 발명하고자했습니다. 기본적으로 우리는 동방 스타일의 총알 지옥 게임을 진행 하고 있으며 , 우리가 상상할 수있는 총알의 가능한 행동을 쉽게 표현할 수있는 시스템을 만들고 싶었습니다.
이것이 바로 우리가 한 일입니다. 우리는 유니티의 컴포넌트 시스템 처럼 글 머리 기호 인스턴스에 자유롭게 부착 할 수있는 다른 컴포넌트로 총알의 동작을 구분할 수있는 매우 우아한 아키텍처를 만들었습니다 . 그것은 잘 작동하고 쉽게 확장 가능했으며 유연하고 우리의 모든 기지를 덮었지만 약간의 문제가있었습니다.
우리의 응용 프로그램은 또한 대량의 절차 생성, 즉 절차 적으로 총알의 동작을 생성합니다. 이것이 왜 문제입니까? 글쎄, 총알 행동을 나타내는 우리의 OOP 솔루션은 우아하면서도 인간 없이는 작업하기가 약간 복잡합니다. 인간은 논리적이고 영리한 문제에 대한 해결책을 생각할만큼 영리합니다. 절차 적 생성 알고리즘은 아직 영리하지 않으며 OOP 아키텍처를 최대한 활용하는 AI를 구현하는 것이 어렵다는 것을 알게되었습니다. 분명히 이것은 아키텍처의 결함으로 모든 상황에서 직관적이지 않다는 것입니다.
따라서이 문제를 해결하기 위해 기본적으로 다른 구성 요소가 제공하는 모든 동작을 글 머리표 클래스에 적용하여 상상할 수있는 모든 것이 다른 관련 구성 요소 인스턴스가 아닌 각 글 머리 인스턴스에서 직접 제공됩니다. 이것은 우리의 절차 생성 알고리즘을 다루기가 조금 더 쉬워 지지만 이제 우리의 글 머리표 클래스는 거대한 신 객체 입니다. 다른 프로그램보다 5 배나 많은 코드로 프로그램에서 가장 큰 클래스입니다. 유지하는 것도 약간의 고통입니다.
우리 클래스 중 하나가 다른 문제를 다루기 쉽도록 신의 대상으로 바뀌어도 괜찮습니까? 일반적으로 다른 문제에 대한 더 쉬운 해결책을 인정한다면 코드에 코드 냄새가 나는 것이 괜찮습니까?