Ich habe kürzlich den Blogbeitrag von Three Big Lies gelesen und es fällt mir schwer, die zweite Lüge zu rechtfertigen, die hier zitiert wird:
(LIE # 2) CODE SOLLTE UM EIN MODELL DER WELT GESTALTET WERDEN
Es gibt keinen Wert im Code, ein Modell oder eine Karte einer imaginären Welt zu sein. Ich weiß nicht, warum dies für einige Programmierer so überzeugend ist, aber es ist äußerst beliebt. Wenn es eine Rakete im Spiel gibt, können Sie sicher sein, dass es eine "Rocket" -Klasse gibt (vorausgesetzt, der Code ist C ++), die Daten für genau eine Rakete enthält und rockiges Zeug ausführt. Ganz ohne Rücksicht darauf, welche Datenumwandlung tatsächlich durchgeführt wird, oder auf das Layout der Daten. Oder ohne das grundlegende Verständnis, dass es dort, wo es eine Sache gibt, wahrscheinlich mehr als eine gibt.
Obwohl es für diese Art von Design viele Leistungsnachteile gibt, ist das wichtigste, dass es nicht skaliert. Überhaupt. Einhundert Raketen kosten hundertmal so viel wie eine Rakete. Und es ist sehr wahrscheinlich, dass es noch mehr kostet! Selbst für einen Nicht-Programmierer sollte das keinen Sinn ergeben. Wirtschaftlichkeit der Skala. Wenn Sie mehr von etwas haben, sollte es billiger werden, nicht teurer. Und der Weg, dies zu tun, besteht darin, die Daten richtig zu entwerfen und Dinge durch ähnliche Transformationen zu gruppieren.
Hier sind insbesondere meine Probleme mit dieser Lüge.
Code hat den Wert, ein Modell / eine Karte einer imaginären Welt zu sein, da das Modellieren der imaginären Welt (zumindest ich persönlich) dabei hilft, den Code zu visualisieren und zu organisieren.
Eine "Rocket" -Klasse zu haben, ist für mich eine absolut gültige Wahl für eine Klasse. Vielleicht könnten "Raketen" in Raketentypen wie AGM-114 Hellfire usw. unterteilt werden, die Nutzlaststärke, maximale Geschwindigkeit, maximalen Wenderadius, Zieltyp usw. enthalten, aber dennoch müsste jede abgefeuerte Rakete eine Position haben und eine Geschwindigkeit.
Natürlich kostet es mehr als eine Rakete, 100 Raketen zu haben. Wenn sich 100 Raketen auf dem Bildschirm befinden, müssen 100 verschiedene Berechnungen durchgeführt werden, um ihre Position zu aktualisieren. Der zweite Absatz scheint die Behauptung aufzustellen, dass bei 100 Raketen weniger als 100 Berechnungen erforderlich sind, um den Status zu aktualisieren.
Mein Problem hierbei ist, dass der Autor ein "fehlerhaftes" Programmiermodell vorlegt, aber keine Möglichkeit zur "Korrektur" vorlegt. Vielleicht stolpere ich über die Analogie der Rocket-Klasse, aber ich würde wirklich gerne die Gründe für diese Lüge verstehen. Was ist die Alternative?