2016-03-21 4 views
1

Ich arbeite an einem Karteneditor/Generator für ein Spiel, und ich habe eine Tile-Klasse erstellt und mit einer mapTile-Klasse erweitert, die den wirklich spielbaren Kartenbereich darstellt, damit ich diese speichern kann in der Kartenklasse und beziehen sich auf spielbare Kacheln mit einem Vector2. Das Problem ist, dass ich eine Klasse mit dem Namen BorderTile erstellt habe, ohne nachzudenken, dann habe ich realisiert, dass ich nicht wirklich etwas hinzufügen kann, das nicht von Tile abgedeckt wird.Klassen, die rein zur Verbesserung der Lesbarkeit existieren

Diese Klasse erhöht die Lesbarkeit, aber auf der anderen Seite ist sie redundant und erhöht die Komplexität des Projekts. Gibt es einen Verdienst für eine Klasse, die die Lesbarkeit und somit die intellektuelle Handhabbarkeit verbessert? Oder ist es pure Bösheit, da es überflüssig ist und ich es nicht brauchen werde.

+0

Können Sie nicht einfach einen Alias ​​oder etwas ähnliches machen, wenn nur der Name anders ist? Es wird keinen Overhead wie diesen hinzufügen. –

Antwort

0

Ich habe ähnliche Situationen beim Schreiben von Spielen erlebt. In meiner eigenen Erfahrung kann ich fast immer, wenn ich einen spezifischeren Klassennamen habe, die Funktionalität fast immer in eine anwendbare Klasse schreiben. So ist alles zusammen gruppiert und es gibt keine Frage.

0

Programme müssen geschrieben werden, damit die Benutzer sie lesen können, und nur gelegentlich, damit sie ausgeführt werden können.

- Abelson & Sussman, "Structure and Interpretation of Computer Programs", preface to the first edition

Daumenregel: Wenn es die Lesbarkeit verbessert, tun Sie es.

Aber stellen Sie sicher, dass es tatsächlich die Lesbarkeit verbessert. Die Entscheidung, was lesbar ist und was nicht, liegt letztendlich bei Ihnen. Wenn Sie das am besten finden, tun Sie es.

Mein erster Instinkt wäre eigentlich der gleiche wie deiner. Ich würde erwarten, dass Sie Wege finden, um eine Kachel am Rand der Karte zu unterscheiden. Es würde Ihnen ermöglichen, einen Verweis auf das Array/Vektor/Arraylist, das Ihre Tile-Objekte enthält, freizugeben, um zu bestimmen, wie sich ein Objekt bewegen kann (vermutlich können sie sich nicht über den Rand hinaus bewegen).

Eine andere zu berücksichtigende Idee ist die Verwendung von Instanzvariablen, um eine Grenzkachel von einer anderen Kachel zu unterscheiden.

Verwandte Themen