AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

DLL/Lib: Parameter Validierung

Offene Frage von "Zacherl"
Ein Thema von Zacherl · begonnen am 28. Mär 2018 · letzter Beitrag vom 28. Mär 2018
Antwort Antwort
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.378 Beiträge
 
Delphi 12 Athens
 
#1

AW: DLL/Lib: Parameter Validierung

  Alt 28. Mär 2018, 17:33
Zitat:
1. Parameter durch Assertions validieren
2. Parameter validieren und ggfls. mit Error-Code returnen
3. Parameter zuerst mit Assertion validieren und als Fallback mit Error-Code returnen
Ich baue grundsätzlich immer nur eine Art der Fehlerprüfung ein und mische nicht. (also fast wie 2)

Maximal wird intern zusätzlich nochmal ein Fehlerflag (ErrorCode/-Text) gespeichert, welchen man nachträglich nochmal prüfen kann, so ala GetLastError.
Dafür sind grade Assertions da, dass man sie deakivieren kann, damit es schneller geht. Aber wenn man sie deaktiviert, dann hat man auch mit Fehlerverhalten zu rechnen, wenn die Eingaben doch ma nicht stimmen.
Also ist es IMHO sinnlos und kontraproduktiv, wenn zusätzlich noch eine zweite Eingangsprüfung vorhanden wäre. (3)

Und meistens nehme ich inzwischen Exceptions, zur Fehlerbehandlung, anstatt einem Fehlercode-Result.
Dazu definiere ich mir meistens mindestens eine eigene Exceptionklasse, je Library.
Diese Klassen können dann auch Zusatzinfos enthalten, siehe ErrorCode in EOSError oder EInOutError.

Zitat:
Contra:
* Assertions lassen sich abschalten
Das ist doch eher ein Pro, für den Entwickler.


Gerade bei Komponenten sollte man nie Fehler dierekt anzeigen, also bleiben da nur
* Exceptions
* Boolean-Result und interner Statusspeicher ala GetLastError
* oder Fehlercodes

Und Fehlercodes, also quasi MagicNumbers findet ich etwas blöd, darum habe ich mich für Exceptions entschieden.
Sind die Exceptions aber lokalisierbar (ResourceStrings oder sonstwie), dann sollte die Exceptionklasse auch statische Fehlerinfos beinhalten (z.B. immer englischer Text oder Fehlercode).
Ein Therapeut entspricht 1024 Gigapeut.

Geändert von himitsu (28. Mär 2018 um 17:38 Uhr)
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 19:54 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz