Recientemente leí la publicación del blog Three Big Lies y me está costando mucho justificar la segunda mentira, que se cita aquí:
(MENTIRA # 2) EL CÓDIGO DEBE DISEÑARSE EN UN MODELO DEL MUNDO
No hay ningún valor en que el código sea algún tipo de modelo o mapa de un mundo imaginario. No sé por qué este es tan atractivo para algunos programadores, pero es extremadamente popular. Si hay un cohete en el juego, ten la seguridad de que hay una clase "Rocket" (suponiendo que el código es C ++) que contiene datos para exactamente un cohete y hace cosas de cohetes. Sin tener en cuenta en absoluto qué transformación de datos realmente se está haciendo, o para el diseño de los datos. O para el caso, sin la comprensión básica de que donde hay una cosa, probablemente hay más de una.
Aunque hay muchas penalizaciones de rendimiento para este tipo de diseño, la más importante es que no escala. En absoluto. Cien cohetes cuesta cien veces más que un cohete. ¡Y es extremadamente probable que cueste incluso más que eso! Incluso para un no programador, eso no debería tener ningún sentido. Economía de escala. Si tiene más de algo, debería ser más barato, no más caro. Y la forma de hacerlo es diseñar los datos correctamente y agrupar las cosas por transformaciones similares.
Aquí están mis problemas con esta mentira en particular.
Es valioso que el código sea un modelo / mapa de un mundo imaginario ya que modelar el mundo imaginario ayuda (al menos a mí, personalmente) a visualizar y organizar el código.
Tener una clase "Rocket" es, para mí, una opción perfectamente válida para una clase. Tal vez los "Cohetes" podrían desglosarse en tipos de Cohetes como AGM-114 Hellfire, etc., que contendrían la fuerza de la carga útil, la velocidad máxima, el radio de giro máximo, el tipo de objetivo, etc., pero aún así cada cohete disparado necesitaría una posición y una velocidad
Por supuesto, tener 100 cohetes cuesta más de 1 cohete. Si hay 100 cohetes en la pantalla, debe haber 100 cálculos diferentes para actualizar su posición. El segundo párrafo parece que afirma que si hay 100 cohetes, ¿debería costar menos de 100 cálculos actualizar el estado?
Mi problema aquí es que el autor presenta un modelo de programación "defectuoso" pero no presenta una forma de "corregirlo". Quizás estoy tropezando con la analogía de la clase Rocket, pero realmente me gustaría entender el razonamiento detrás de esta mentira. Cual es la alternativa?