AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein Fehler vorbeugen vs Code aufblähen
Thema durchsuchen
Ansicht
Themen-Optionen

Fehler vorbeugen vs Code aufblähen

Ein Thema von .chicken · begonnen am 24. Mär 2008 · letzter Beitrag vom 25. Mär 2008
Antwort Antwort
Seite 1 von 2  1 2      
.chicken

Registriert seit: 5. Dez 2006
459 Beiträge
 
#1

Fehler vorbeugen vs Code aufblähen

  Alt 24. Mär 2008, 16:59
Hi, also ich hab im Moment aufgrund einer Verletzung wieder Zeit für Delphi, die ich sonst leider nur sehr sporadisch finde.

Und nun ist mir eine Frage gekommen. Ich hab ein kleines Spiel programmiert, in dem zufällig ein 2D Level generiert wird.
Mit Decke, Boden und fliegenden Boxen als Hindernisse.
Man kann diverse Einstellungen vornehmen, wie Dicke der Boxen und sowas.
Bei bestimmten Einstellungen, kann es also vorkommen, dass zB die Decke höher ist als das Level ansich, somit das gesamte Level aus der Decke besteht.
Inwiefern meint ihr sollte man sowas vorbeugen? Ich könnte natürlich für jede dieser Property eine Setter-Prozedur schreiben, in der der neue Wert erst auf gültigkeit getestet wird, aber meint ihr das macht Sinn? Dadurch würde ich unzählig mehr Zeilen an Code erhalten. Wie macht ihr sowas?

Möchte die LevelUnit so unabhängig wie möglich und somit auch so komfortabel wie möglich halten, deswegen die Frage

Grüße .ch!cken
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#2

Re: Fehler vorbeugen vs Code aufblähen

  Alt 24. Mär 2008, 17:02
Ja und bei dem knapp bemessenen Speicher heutzutage bekommt man dann schnell Probleme.
Nein, es macht schon Sinn Eingaben usw. auf Gültigkeit zu überprüfen.
Markus Kinzler
  Mit Zitat antworten Zitat
.chicken

Registriert seit: 5. Dez 2006
459 Beiträge
 
#3

Re: Fehler vorbeugen vs Code aufblähen

  Alt 24. Mär 2008, 17:05
Hehe, ok. Ich halte Code nur gerne kurz, weil er für mich dann wesentlich übersichtlicher bleibt. Aber gut, ich sollte wohl nicht am falschen Ende sparen... :-\
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#4

Re: Fehler vorbeugen vs Code aufblähen

  Alt 24. Mär 2008, 17:08
Sparst du dir die Überprüfung, dann können woanders Nebeneffekte entstehen, welche dann schwer auf die wirkliche Ursache schließen lassen. Und soviele Properties werden es ja auch nicht sein.
Markus Kinzler
  Mit Zitat antworten Zitat
Benutzerbild von sx2008
sx2008

Registriert seit: 15. Feb 2008
Ort: Baden-Württemberg
2.332 Beiträge
 
Delphi 2007 Professional
 
#5

Re: Fehler vorbeugen vs Code aufblähen

  Alt 25. Mär 2008, 02:19
Dafür gibt es doch die Assert-Anweisung !!
Damit stellt man sicher, dass Ein- und Ausgabeparameter innerhalb gültiger Limits liegen.
Und wenn das Programm gereift ist und ohne Fehler läuft, kann man den Ballast ganz einfach in den Projektoptionen abschalten.
Ich sehe immer wieder grössere Projekte ohne eine einzige Assert-Anweisung.
Dementsprechend schlecht ist dann meist auch die Software Qualität.

Beispiel für Assert-Verwendung:
Delphi-Quellcode:
procedure ResizeForm(form:TCustomForm; x,y : integer);
begin
  Assert(Assigned(form)); // Objektzeiger sollte man immer prüfen
  Assert(x > 0, 'ResizeForm: x out of range'); // man kann zusätzlichen Text angeben
  Assert(y > 0);
  // und hier geht der normale Code los
  ..
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#6

Re: Fehler vorbeugen vs Code aufblähen

  Alt 25. Mär 2008, 05:34
U.U. ist es aber trotzdem besser, falsche Werte schon gar nicht speichern.
Markus Kinzler
  Mit Zitat antworten Zitat
Benutzerbild von RavenIV
RavenIV

Registriert seit: 12. Jan 2005
Ort: Waldshut-Tiengen
2.875 Beiträge
 
Delphi 2007 Enterprise
 
#7

Re: Fehler vorbeugen vs Code aufblähen

  Alt 25. Mär 2008, 08:22
Also ich finde es auch besser, Fehler erst garnicht auftreten zu lassen.
z.B. sollte ein Eingabe-Feld für Zahlen erst gar keine Buchstaben akzeptieren.
Bzw. beim Verlassen der Form (mit OK) sollte dann zumindest eine Fehlermeldung kommen.

Natürlich kann man an jedem Ecken eine Exception provozieren, das finde ich aber nicht professionell.
Exceptions sind für nicht vorhersehbare Fehler da.
z.B. Netzwerk bricht zusammen, ein Laufwerk ist nicht mehr verfügbar, DB kackt ab.
Klaus E.
Linux - das längste Text-Adventure aller Zeiten...
Wer nie Linux mit dem vi konfiguriert hat, der hat am Leben vorbei geklickt.
  Mit Zitat antworten Zitat
Benutzerbild von 3_of_8
3_of_8

Registriert seit: 22. Mär 2005
Ort: Dingolfing
4.129 Beiträge
 
Turbo Delphi für Win32
 
#8

Re: Fehler vorbeugen vs Code aufblähen

  Alt 25. Mär 2008, 08:31
Naja, stell dir folgendes vor:

Du hast eine Klasse TWuppdiLoader, die eine Datei vom Typ Wuppdi Laden soll. In der Dateitypspezifikation steht eine CRC32-Prüfsumme. Die stimmt aber nicht mit der Datei überein. Was machst du da? Du könntest jetzt die Funktion beenden und einen Statuscode zurückgeben (z.B. ein Set mit den aufgetretenen Fehlern) oder ein Feld in der Klasse setzen. Aber was ist, wenn der Fehler in irgendeiner Funktion weit verschachtelt auftritt? Dann brauchst du nach jedem Funktionsaufruf sowas wie if FError then exit;

Da ist eine Exception mehr als angemessen, ich würde sogar sagen, für gute Programmierung unausweichlich.
Manuel Eberl
„The trouble with having an open mind, of course, is that people will insist on coming along and trying to put things in it.“
- Terry Pratchett
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#9

Re: Fehler vorbeugen vs Code aufblähen

  Alt 25. Mär 2008, 08:37
In diesem Fall würde er falsche Werte in der Klasse speichern, und bei jeder Auswertung der Werte ein exception werfen. Hier wäre eine Überprüfung der werte vor dem speichern sicherlich sinnvoll.
Markus Kinzler
  Mit Zitat antworten Zitat
Benutzerbild von phXql
phXql

Registriert seit: 11. Mär 2004
Ort: Mühldorf
824 Beiträge
 
#10

Re: Fehler vorbeugen vs Code aufblähen

  Alt 25. Mär 2008, 09:37
Zitat von sx2008:
Dafür gibt es doch die Assert-Anweisung !!
Damit stellt man sicher, dass Ein- und Ausgabeparameter innerhalb gültiger Limits liegen.
Und wenn das Programm gereift ist und ohne Fehler läuft, kann man den Ballast ganz einfach in den Projektoptionen abschalten.
Ich sehe immer wieder grössere Projekte ohne eine einzige Assert-Anweisung.
Dementsprechend schlecht ist dann meist auch die Software Qualität.

Beispiel für Assert-Verwendung:
Delphi-Quellcode:
procedure ResizeForm(form:TCustomForm; x,y : integer);
begin
  Assert(Assigned(form)); // Objektzeiger sollte man immer prüfen
  Assert(x > 0, 'ResizeForm: x out of range'); // man kann zusätzlichen Text angeben
  Assert(y > 0);
  // und hier geht der normale Code los
  ..
Asserts sind meines Wissens nur für Eigenschaften, die man garantieren kann, dass sie zutreffen.

Für falsche Usereingaben sind Exceptions angebracht.
"Dunkel die andere Seite ist"
"Yoda! Halts Maul und iss deinen Toast!"
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 08:24 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz