AGB  ·  Datenschutz  ·  Impressum  







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

Wie ist der Programmierstil "professionell"

Ein Thema von coderi · begonnen am 16. Nov 2012 · letzter Beitrag vom 18. Jan 2013
Antwort Antwort
Seite 2 von 2     12   
Bentissimo

Registriert seit: 25. Apr 2006
Ort: Friedenfels
82 Beiträge
 
Delphi 11 Alexandria
 
#11

AW: Wie ist der Programmierstil "professionell"

  Alt 19. Nov 2012, 08:49
Hallo zusammen,

imho kann die Funktionalität am besten wie folgt umgesetzt werden:

1. Wie bereits mehrfach erwähnt, würde ich auf alle Fälle eine Methode eines DataModule dafür verwenden.
2. Eine mögliche Funktion sollte weder eine MessageBox ausgeben noch eine Exception auslösen, sondern als Rückgabewert einen Fehlercode liefern. Wie dieser dann ausgewertet und gegebenenfalls angezeigt wird, entscheidet der aufrufende Programmteil.
3. Statt das Dataset zu öffnen würde ich dynamisch eine Query erzeugen, ausführen, Ergebnis merken, schliessen und freigeben. Zur Ermittlung des Ergebnisses darf dann gerne ein try... except eingesetzt werden.

Ein Beispiel dafür könnte wie folgt aussehen:

Delphi-Quellcode:
const
  sqlCheckDeletable =
    'SELECT ...' + #13#10 +
    ' FROM ...' + #13#10 +
    ' WHERE ... = :AID';

  ecNotDeletable = 1;

function TMyDataModule.CheckDeletable(AID: Integer): Integer;
var
  Q: TQuery;
begin
  Result := 0;
  Q := TQuery.Create(nil);
  try
    Q.DataBaseName := '...';
    Q.SQL.Text := sqlCheckDeletable;
    Q.ParamByName('...').AsInteger := AID;
    try
      Q.Open;
      if Q.Fields[0].AsInteger > 0 then
        Result := ecNotDeletable;
      Q.Close;
    except
      on E: EDatabaseError do
        Result := E.ErrorCode;
    end;
  finally
    Q.Free;
  end;
end;
Viele Grüsse
Stephan
Stephan Schmahl
  Mit Zitat antworten Zitat
coderi

Registriert seit: 13. Jun 2008
Ort: Unterfranken
13 Beiträge
 
Delphi 10.3 Rio
 
#12

AW: Wie ist der Programmierstil "professionell"

  Alt 18. Jan 2013, 11:15
Ist zwar schon etwas her, aber das Forum vergisst nichts !

Vielen Dank für eure Ausführungen, ist stimme mit euch überein, das die Logik wohl eher in ein Datenmodul, oder
besser noch in eine zentrale Funktion gehört. Ich persönlich würde mich mittlerweile für den letzten tip von Stephan entscheiden,
da ich hier die "zentralste" und einfachste Möglichkeit sehe das ganze ohne viel primbamorium zu lösen, und auch zu verwalten.

Aber einen Fehlercode würde ich nicht zurückgeben, kann ich doch eine exeption "werfen", und die an beliebiger stelle "Fangen",
um ihn so, in einer mehr schichten welt, an der passenden stelle zu plazieren.
Ein weiterer Vorteil von exceptions:
Fehlercodes muss ich in einer liste vorhalten, einer Expetion gebe ich den, auch für den Benutzer aussagekräftigen Fehler,
gleich mit. Für den Fehlercode brauche ich eine extra variable.

grüße
Coderi
  Mit Zitat antworten Zitat
Bentissimo

Registriert seit: 25. Apr 2006
Ort: Friedenfels
82 Beiträge
 
Delphi 11 Alexandria
 
#13

AW: Wie ist der Programmierstil "professionell"

  Alt 18. Jan 2013, 12:34
Eine Exception auszulösen ist sicher in Ordnung. Für mich sind Exceptions und das Werfen solcher aber eigentlich genau das, was sie sind: Ausnahmen.

Die Erkenntnis, dass ein Datensatz nicht gelöscht werden darf ist aber für mich kein solcher Fall, sondern schlichtweg die Bestätigung einer Geschäftsregel.

Insofern sehe ich hier keine Notwendigkeit für eine Exception.

Nun mag mein Programmierstil altersbedingt schon etwas angestaubt sein.

Gibt es dazu weitere Meinungen? Würde mich interessieren.

Viele Grüsse.
Stephan Schmahl
  Mit Zitat antworten Zitat
Lemmy
Online

Registriert seit: 8. Jun 2002
Ort: Berglen
2.366 Beiträge
 
Delphi 10.3 Rio
 
#14

AW: Wie ist der Programmierstil "professionell"

  Alt 18. Jan 2013, 12:58
Eine Exception auszulösen ist sicher in Ordnung. Für mich sind Exceptions und das Werfen solcher aber eigentlich genau das, was sie sind: Ausnahmen.

Die Erkenntnis, dass ein Datensatz nicht gelöscht werden darf ist aber für mich kein solcher Fall, sondern schlichtweg die Bestätigung einer Geschäftsregel.
sehe ich genauso.
  Mit Zitat antworten Zitat
Benutzerbild von stahli
stahli

Registriert seit: 26. Nov 2003
Ort: Halle/Saale
4.336 Beiträge
 
Delphi 11 Alexandria
 
#15

AW: Wie ist der Programmierstil "professionell"

  Alt 18. Jan 2013, 13:08
@Bentissimo

Ich sehe das ganz genau so (obwohl ich noch deutlich jünger bin ).

Übrigens auch in Bezug auf try-finally-Blöcke (habe ich schon öfters erklärt). Es bringt m.E. nichts, ein Objekt aufzuräumen wenn das Projekt ohnehin in einem unkontrollierten Status ist.
Ich erzeuge ein Objekt und führe komplexe Handlungen aus. Irgendwo mittendrin knallt es. Macht nix, ich räume das Objekt weg und gut ist???
Der Fehler muss bereinigt bzw. umgangen werden. Sensible Daten müssen ggf. gesichert und das laufende Projekt muss ggf. neu gesatartet werden um einen kontrolierten Zustand zu erhalten.

Try-Except macht Sinn, wenn ich immer mit einem unkontrollierten Zustand rechnen muss (z.B. mei IO-Funktionen) und der Programmzustand auch nach der Fehlerbehandlung/Unterdrückung noch in Ordnung ist.

Objektfreigaben "zwanghaft" in einen Finally-Block aufzunehmen, halte ich für unnötig.


[Werbeblock]
Hast Du Dir mal meine Turniersoftware in Bezug auf Schach angesehen?
[/Werbeblock]
Stahli
http://www.StahliSoft.de
---
"Jetzt muss ich seh´n, dass ich kein Denkfehler mach...!?" Dittsche (2004)
  Mit Zitat antworten Zitat
Bentissimo

Registriert seit: 25. Apr 2006
Ort: Friedenfels
82 Beiträge
 
Delphi 11 Alexandria
 
#16

AW: Wie ist der Programmierstil "professionell"

  Alt 18. Jan 2013, 13:29
@Stahli

Habe mir am vergangenen Wochenende die Testversion Deiner Turniersoftware runter geladen, daher vermutlich Deine Frage.

Allerdings nicht in Sachen Schach, sondern mehr für ein kleines Backgammon-Turnier.

Bin derzeit in einem Projekt in der Schweiz und mein Scrum-Master kam irgendwie auf Backgammon. Ich war früher mal ganz gut und so haben wir in der Mittagspause ein bischen gespielt. Mittlerweile soll ich ein Turnier für sechs Leute organisieren und hab deshalb an Deine Software gedacht.

Bitte nicht böse sein, aber ich kam irgendwie nicht damit zurecht.

Die Idee war, schnell mal ein Round-Robbin anzulegen, sechs Namen einzutragen und dann per Knopfdruck die Runden und die Tabelle angezeigt zu bekommen.

So lief es leider nicht, aber auch diesmal kann es natürlich an mir liegen. Wie formuliert das Bummi immer so schön?

Das Problem liegt meist zwischen den Ohren!
Stephan Schmahl
  Mit Zitat antworten Zitat
Benutzerbild von stahli
stahli

Registriert seit: 26. Nov 2003
Ort: Halle/Saale
4.336 Beiträge
 
Delphi 11 Alexandria
 
#17

AW: Wie ist der Programmierstil "professionell"

  Alt 18. Jan 2013, 13:44
[OT]
@Bentissimo
Backgammon kenne ich nicht, aber wenn es um Punkte erspielen geht, dann sollte das funktionieren. Die Personen musst Du in einem (temporären) Verein definieren.
Den Rest erklären Dir meine Anwälte heute Abend per pm.
[/OT]
Stahli
http://www.StahliSoft.de
---
"Jetzt muss ich seh´n, dass ich kein Denkfehler mach...!?" Dittsche (2004)
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 2     12   


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 10:10 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