Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!
Werbeanzeige
Normalerweise verwende ich in Source Code Bezeichnern so wenige Abkürzungen wie möglich. An dieser Stelle halte ich eine Ausnahme jedoch für sinnvoll, da "ICmp" als Prefix für eine bestimmte Gruppe von Interfaces zu verstehen ist. Es gibt beispielsweise ICmpUpdatable, ICmpCollisionListener, ICmpInitializable, ICmpRenderer - und alle davon können unter Umständen von einer einzigen Komponente implementiert werden. Der Fokus einzelner Interfacebezeichner sollte hier nicht auf dem ohnehin redundanten "Component"-Teilwort liegen, sondern auf dem was darauf folgt, daher halte ich eine Abkürzung an dieser Stelle für vertretbar.Weshalb kürzt denn heute noch Bezeichner? Nur wenn es technische Limitierungen gibt. Ansonsten halte ich die für sehr schlechten Stil. Oder das finde ich bei eine so rundum gelungenen Unternehmung sehr schade. Hier finde ich es besonders schlimm, weil ich Compare an statt Component schreibe.Nur eins hat mich sehr gestört: Abkürzungen für Interfaces im Code...
. Danke, bitte formuliere das Interface oder Klassennamen aus!
Wieso stört dich das? Ist doch vollkommen No Go...
C#-Quelltext |
|
1 2 3 4 |
public class MyCustomComponent : Component, IComponentUpdatable, IComponentRenderer, IComponentInitializable, IComponentCollisionListener { /* ... */ } |
C#-Quelltext |
|
1 2 3 4 |
public class MyCustomComponent : Component, ICmpUpdatable, ICmpRenderer, ICmpInitializable, ICmpCollisionListener { /* ... */ } |
Es ist ja keine Schande etwas falsch zu machen, als Programmierer tu ich das täglich, [...].
Vielleicht fehlt mir ein wenig Hintergrundwissen zu Duality, aber ich würde auch trotz deiner bisherigen Ausführungen das "Cmp" oder "Component" aus den Interfaces raus halten, sofern sie nicht alle das Interface "IComponent" erweitern.
am ehesten muss ich bei "Komponente" an das Komponentensystem in Unity denken, wo man allerdings keine eierlegende Wollmilchsau Komponente hat, die mehrere Funktionalitäten gleichzeitig übernimmt. Ich finde es also, sollte es mit den Unity-Komponenten vergleichbar sein, nicht gerade sauber, dass ein solcher Fall sogar vorgesehen ist.
Ich lass mich aber auch gerne eines Besseren belehren.
Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »Fetze« (04.04.2013, 22:16)
Ich empfinde es genau anders herum . Wenn du von so vielen Interfaces erbst, wäre es vielleicht sinnvoller, Interfaces zusammenzufassen oder abstrakte Basisklassen anbieten an statt die Namen zu kürzen. Wenn es wenigstens "Comp" an statt "Cmp" heißen würde, wäre es noch halbwegs verschmerzbar. Ich lese sofort ICompareUpdatable, ICompareRenderer, ... usw. Und wenn dann wäre viellicht IUpdatableComponent usw. auch besser formuliert - davon sprichst du sogar in deiner Bachelorarbeit Seite 24 .Normalerweise verwende ich in Source Code Bezeichnern so wenige Abkürzungen wie möglich. An dieser Stelle halte ich eine Ausnahme jedoch für sinnvoll, da "ICmp" als Prefix für eine bestimmte Gruppe von Interfaces zu verstehen ist. Es gibt beispielsweise ICmpUpdatable, ICmpCollisionListener, ICmpInitializable, ICmpRenderer - und alle davon können unter Umständen von einer einzigen Komponente implementiert werden. Der Fokus einzelner Interfacebezeichner sollte hier nicht auf dem ohnehin redundanten "Component"-Teilwort liegen, sondern auf dem was darauf folgt, daher halte ich eine Abkürzung an dieser Stelle für vertretbar.Weshalb kürzt denn heute noch Bezeichner? Nur wenn es technische Limitierungen gibt. Ansonsten halte ich die für sehr schlechten Stil. Oder das finde ich bei eine so rundum gelungenen Unternehmung sehr schade. Hier finde ich es besonders schlimm, weil ich Compare an statt Component schreibe.Nur eins hat mich sehr gestört: Abkürzungen für Interfaces im Code...
. Danke, bitte formuliere das Interface oder Klassennamen aus!
Wieso stört dich das? Ist doch vollkommen No Go...
Man vergleiche mal das Folgende:
C#-Quelltext
1 2 3 4 public class MyCustomComponent : Component, IComponentUpdatable, IComponentRenderer, IComponentInitializable, IComponentCollisionListener { /* ... */ }
...mit dem hier:
C#-Quelltext
1 2 3 4 public class MyCustomComponent : Component, ICmpUpdatable, ICmpRenderer, ICmpInitializable, ICmpCollisionListener { /* ... */ }
Ich persönlich würde letztere Variante bevorzugen. Ein komplettes Weglassen des "Cmp" Prefixes wäre jedoch zu viel des Guten, denn so sind die entsprechenden Interfaces nicht mehr auf einen Blick als Komponentenschnittstellen erkennbar. Kleiner Bonus: In der jetzigen Lösung muss man nur an der richtigen Stelle "ICmp" schreiben und Intellisense schlägt einem direkt die möglichen Schnittstellen vor.
Interfaces zusammenzufassen oder abstrakte Basisklassen anbieten an statt die Namen zu kürzen
davon sprichst du sogar in deiner Bachelorarbeit Seite 24 .
Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »Fetze« (05.04.2013, 07:57)
Man vergleiche mal das Folgende:
C#-Quelltext
1 2 3 4 public class MyCustomComponent : Component, IComponentUpdatable, IComponentRenderer, IComponentInitializable, IComponentCollisionListener { /* ... */ }
...mit dem hier:
C#-Quelltext
1 2 3 4 public class MyCustomComponent : Component, ICmpUpdatable, ICmpRenderer, ICmpInitializable, ICmpCollisionListener { /* ... */ }
Zitat
Wegen solcher Zeilen gibt es sinnvollerweise in den meisten Style Guidelines eine Beschraenkung der Zeilenlaenge (ueblicherweise 80 Zeichen fuer die command line nerds)
Wenn du mich fragst, ist das gar nicht sinnvoll.
Ich nehme mal an, ich habe hier den wohl einer der kleinsten Bildschirme hier (1280*1024), aber habe trotzdem mehr Platz in die Breite, als 80 Zeichen.
Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »Fetze« (29.06.2013, 01:45)
Werbeanzeige