Thema: Delphi Generics und Enums

Einzelnen Beitrag anzeigen

Benutzerbild von bernau
bernau
Online

Registriert seit: 1. Dez 2004
Ort: Köln
1.268 Beiträge
 
Delphi 11 Alexandria
 
#16

AW: Generics und Enums

  Alt 12. Sep 2015, 11:19
Ein Beitrag (meiner) behauptet, das die Verwendung von Enums ein Indiz für unsauberen Code sind. Ein Indiz. Mehr nicht.
Zitat:
Unter einem Indiz (von lat.: indicare „anzeigen“) wird ein Hinweis verstanden, der für sich allein oder in einer Gesamtheit mit anderen Indizien den Rückschluss auf das Vorliegen einer Tatsache zulässt.
Also erst mal mit einer Behauptung schlecht machen, ohne Konkrete Beispiele zu geben.

Genau so könnte man sagen "Die Verwendung von Delphi ist ein Indiz für unsauberen Code".


Als Faustregel kann gelten: Wenn mit einem Enum (oder Konstanten) an mehreren Stellen im Code Logik ausgeführt wird (das können IF- oder CASE-Schleifen Anweisungen sein), sollte eine Zusammenfassung der verstreuten Logik und die Verwendung einer Fabrik in Betracht gezogen werden.
Was ja in meinem oberen Beispiel gemacht wurde. Alle Logiken stehen in der Nähe von der Deklaration der Enums.

Wir haben z.B. eine alte Datenbank, bei der qualitative Merkmale ('Lookup') mit Buchstabencodes, Nummern usw. kodiert werden. Grauenvoll, aber ok. In Delphi (zumindest den alten Dialekten) würde ich dafür Konstanten nehmen, also z.B.
Delphi-Quellcode:
Const
  Gender_Male='M';
  Gender_Female='F';
  Gender_Unknown='N';
  Gender_Bisexual = 'B';
  ...
Wenn du nur Konstanten nimmst, dann hast du keinerlei Möglichkeit zu erfahren, wenn eine neue Konstante zugefügt wurde. Enums kann ich iterieren und eine Exception auslösen.

Übrigens

Delphi-Quellcode:
Const
  Gender_Male='M';
  Gender_Female='F';
  Gender_Unknown='N';
  Gender_Bisexual = 'B';
  HairColor_Blond = 'B';
  HairColor_Black = 'L';
  HairColor_Grey = 'G';
Was hier zusammen gehört, weist du natürlich (als Mensch)

Bei Enums weis der Compiler sofort was zusammen gehört.


Ach ja, hier ein haarsträubendes Beispiel:

Delphi-Quellcode:
Const
  Gender_Male='M';
  Gender_Female='F';
  Gender_Unknown='N';
  Gender_Bisexual = 'I';
  ...
Erkenne den Fehler.
Gerd
Kölner Delphi Usergroup: http://wiki.delphitreff.de
  Mit Zitat antworten Zitat