Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Algorithmen, Datenstrukturen und Klassendesign (https://www.delphipraxis.net/78-algorithmen-datenstrukturen-und-klassendesign/)
-   -   guter code ? Infos an den user ausgeben (https://www.delphipraxis.net/195342-guter-code-infos-den-user-ausgeben.html)

bernhard_LA 20. Feb 2018 22:09

guter code ? Infos an den user ausgeben
 
wir sind am überlegen in jede größere Routine unserer GUI folgenden Code einzubauen um dem Benutzer ein Feed Back über den Stand der Dinge zu liefern
Ist dies guter Programmierstil, gibt es eine bessere Lösung


Delphi-Quellcode:
procedure TMyForm.OpenWindowClick(Sender: TObject);
var ....

begin
  StatusBar.simpletext := ' jetzt gehts los ....'
  MyClass := TClass.Create;
  try
    try
        { *******    }
        {   hier steht dann code ... irgend einen Klassenaufruf }
        MyClass.DoSomething( ...);
        StatusBar.simpletext := 'alles ging gut ';

        AddtoLogdata('routine erfolgreich', 'Name der Routine');
        { *******  }   
    exception

    on e : Exception
           begin
            AddtoLogdata('routine leider nicht erfolgreich', 'Name der Routine');
           end;
  finally
  MyClass.Free;
  StatusBar.simpletext := 'jetzt fertig ';
  end;
end;

end;

p80286 20. Feb 2018 22:35

AW: guter code ? Infos an den user ausgeben
 
Ich finde es akzeptabel, wenn Du diese Information in einem Logfile ausgibst. Ottilie Normalbenutzerin will eine Aufgabe erledigt haben, da reichen zwei Nachrichten "Fertig" oder "Fehler aufgetreten weil .....".
Im übrigen hat das mit gutem Code wenig zu tun sondern gehört eher zur Gestaltung der Benutzeroberfläche.

Gruß
K-H

Delphi-Laie 20. Feb 2018 22:53

AW: guter code ? Infos an den user ausgeben
 
Zitat:

Zitat von bernhard_LA (Beitrag 1394303)
wir sind am überlegen in jede größere Routine unserer GUI folgenden Code einzubauen um dem Benutzer ein Feed Back über den Stand der Dinge zu liefern
Ist dies guter Programmierstil, gibt es eine bessere Lösung

Das ist "graphisches Debugging", an dem, wenn das so ausgeliefert werden sollte, auch die Anwender ihren herzlichen Anteil haben werden. Wenn es nicht zu oft "anschlägt", wohl akzeptabel, ansonsten riecht der Kunde womöglich Lunte, daß er eingespannt wird.

Auf der anderen Seite: Investiert lieber in die Fehlerdetektion und -beseitigung! Dazu kann der geplante zusätzliche Code natürlich sehr helfen.

Daniel 21. Feb 2018 05:33

AW: guter code ? Infos an den user ausgeben
 
Das ist in der Tat des UI-Konzepts. Mit Blick auf die Software-Ergonomie sind Rückmeldungen an den Benutzer absolut wichtig. Nur so nimmt man ihn mit und gibt ihm die Gewissheit, dass er die Software und die ausgelösten Vorgänge steuert - und nicht umgekehrt. Eine spätere Ausbaustufe wäre aus Usability-Sicht die Option, Vorgänge abbrechen und rückstandsfrei zurücksetzen zu können (geht nicht immer, gibt dem Anwender aber eine große Sicherheit, keine unkorrigierbaren Fehler zu machen).

In der Entscheidung, dem Anwender (sinnvolle sind hilfreiche) Rückmeldungen zu geben, kann man Euch nur bestärken. Mit „graphischem Debugging“ hat das nichts zu tun.

bernhard_LA 21. Feb 2018 06:25

AW: guter code ? Infos an den user ausgeben
 
kann man dieses Problem mit Anonymen Methoden besser lösen , in der Art wie ....

Delphi-Quellcode:
procedure ShowHourGlass(Proc: TProc);
 var
 OldCursor: TCursor;
 begin
  OldCursor := Screen.Cursor;
  Screen.Cursor := crHourGlass;
  try
    Proc;
  finally
   Screen.Cursor := OldCursor
  end;
 end;


man müsste dann eine Unmenege An Functionsprototypen deklarien und hätte lange ÜbergabeListen ..... ist dies nicht sehr unschön
anderseits immer den selben code in eine UI Funktion eintippen ... auch nicht schön

Bernhard Geyer 21. Feb 2018 07:14

AW: guter code ? Infos an den user ausgeben
 
Zitat:

Zitat von bernhard_LA (Beitrag 1394314)
kann man dieses Problem mit Anonymen Methoden besser lösen , in der Art wie ....

Wir benutzen dafür ein Interface.
Wird dieses Freigegen (oder auf nil gesetzt) wird der alte Curser wieder hergestellt.

Nathan 21. Feb 2018 07:54

AW: guter code ? Infos an den user ausgeben
 
Hatte dazu mal mit dem Ansatz AOP (Aspect-oriented programming) experimentiert. Delphi bietet dazu den System.Rtti.TVirtualMethodInterceptor http://docwiki.embarcadero.com/RADSt...-Interzeptoren
Gerade zum Loggen Ideal.

Gibt ein paar schöne Videos dazu z.B. von Jeroen W. Pluimers https://wiert.me/2015/06/24/aspect-o...ing-in-delphi/

Gruss
Nathan

Jumpy 21. Feb 2018 08:12

AW: guter code ? Infos an den user ausgeben
 
Hallo,

kennt jemand das Programm Calibre zur Ebook-Verwaltung? Da finde ich ist sowas ganz schön gelöst. Da kann man verschiedene Aufgaben anstarten und unten in der Statusleiste dreht sich ein kleines Zahnrad, dabeben eine Zahl mit der Anzahl der Aufgaben, die gerade im Hintergrund abgearbeitet werden.
Klingt man dann auf das Zahnrad, geht ein Fenster mit Detail-Infos auf.

Vieleicht kann man sowas ähnlich umsetzen, hier geht es ja nicht um Aufgaben o.ä., sondern um normale Funktionen/Prozeduren über deren Status informiert werden soll?

Blup 21. Feb 2018 09:17

AW: guter code ? Infos an den user ausgeben
 
Vorhersehbare Fehler sollten eigentlich durch den Anwendungsfall verarbeitet werden.
Für sonstige Fehler gibts Tools wie madExcept oder Eurekalog.

Der Anwender erwartet aber nicht nur eine Rückmeldung zu Beginn oder Ende einer Funktion, sondern insbesondere wenn eine Funktion über längere Zeit läuft.


Alle Zeitangaben in WEZ +1. Es ist jetzt 08:46 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