Dieses Blog durchsuchen

Mittwoch, 26. Januar 2011

Unsägliche Strings

In einem Projekt Ende der 90er Jahre sagt mir mal ein geschätzter Kollege, der im Wesentlichen in der IBM Hostwelt zu Hause war: "Manfred, 90% der Programmierung ist doch eh' Zeichenkettenverarbeitung."

Tatsächlich ist man schnell dabei einen Datentyp als String zu identifizieren: Ein Name, ein Vorname ... aber wie ist das mit einer Rechnungsnummer, eine Lieferscheinnummer etc.

Tatsächlich ist ein String nicht wirklich ein "Datenentyp", denn ein Datentyp sollte z.B. einen Wertebereich haben und sollte auch Constraints beinhalten. Wie ist der Wertebereich eines Strings?

Und, meistens meint man ja auch gar nicht eine "beliebige Zeichenkette". Habe ich ein Attribut mit dem Typ String, dann sollte die Eingabe von "Hallo Welt" als Wert dieses Strings valide sein. Ist das Attribut ein Kommentar, wird das auch immer der Fall sein. Wie ist das aber jetzt bei der oben genannten Rechnungsnummer.

Der §14 UStG sieht vor, dass jede Rechnung eine "fortlaufende Nummer mit einer oder mehreren Zahlenreihen [enthalten muss], die zur Identifizierung der Rechnung vom Rechnungsaussteller einmalig vergeben wird (Rechnungsnummer)".

Das hört sich nicht nach "Hallo Welt" an, sondern nach einem Datentyp Rechnungsnummer, der bestimmte Constraints hat, unter anderem eine fortlaufende Nummer.

Auch sah ich jüngst eine API, in der GUI Eigenschaft etwas wie folgt notiert wurden:

Window win = new Window("enabled=true, visible=true");

Die API erwartet einen String.

Fazit: Strings sollten in der Objektmodellierung als Attribute verboten werden. Es sollte einen Datentyp AnyCharacter geben, der dann auch genau beschreibt, was er beinhalten darf: Eine beliebige Zeichenkette. Sobald die Zeichenkette Semantik enthält, taugt sie nicht mehr zum String.

Keine Kommentare:

Kommentar veröffentlichen