AGB  ·  Datenschutz  ·  Impressum  







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

Mein Programmierstyl

Ein Thema von Martin W · begonnen am 17. Apr 2006 · letzter Beitrag vom 19. Apr 2006
 
Robert Marquardt
(Gast)

n/a Beiträge
 
#10

Re: Mein Programmierstyl

  Alt 19. Apr 2006, 04:46
Delphi-Quellcode:
  RsEDateOutOfRange = '%0:s - Enter a date between "%1:s" and "%2:s"';
  RsEDateOutOfRange = 'Das Datum sollte zwischen "%1:s" und "%2:s liegen, aber enthält den Fehler %0:s"';
Format(RsEDateOutOfRange, ['Bla0', 'Bla1', 'Bla2']);
Das obige funktioniert mit beiden Formatstrings ohne das man sonst etwas an der Source aendern muss.

Prepare_classes ist gefaehrlich, denn es kann mehrfach aufgerufen werden. Dabei werden aber die Objekte jeweils neu angelegt, ohne das die bisherigen geloescht werden.
Ein neues Delphi-Projekt ist einfach eine Beispielableitung einer Komponente (TForm). In Prepare_classes werden Hilfsobjekte erstellt, die eigentlich doch ueber die gesamte Lebensdauer der Form vorhanden sein sollten. Deshalb sollte man den Konstruktor und Destruktor der Komponente/Form ueberschreiben und dort die Objekte erstellen bzw. loeschen.

Import hat zwei unterschiedliche Aufgaben. Einmal die Profiles und einmal die Preferences. Diese Aufgaben sollten von einander unabhaengig sein und deshalb auch in separaten Methoden implementiert sein.

Delphi-Quellcode:
procedure Tserver_mainform_form.ExecuteDialog(AOnCanClose: TCloseQueryEvent; AType: TDialogType);
var
  Dialog: TCommonDialog;
  Title: string;
begin
  case AType of
    dtOpen:
      begin
        Dialog := TOpenDialog.Create(server_mainform_form);
        Title := 'Datei öffnen...';
      end;
    dtSave:
      begin
        Dialog := TSaveDialog.Create(server_mainform_form);
        Title := 'Speichern unter...';
      end;
  end;

  try
    Dialog.DefaultExt := 'xml';
    Dialog.Filter := 'XML File / xml|*.xml';
    Dialog.Title := Title;
    Dialog.OnCanClose := AOnCanClose;
    Dialog.Options := [ofHideReadOnly,ofFileMustExist,ofEnableSizing];
    Dialog.Execute;
  finally
    Dialog.Free;
  end;
end;
---> Wie soll man es sonst machen??? Also ohne Exit?? mit Endlos verschachtelten If Schleifen?
Weniger Exit und mehr positive IFs ("if then DoSomething"). Man kann die Tests auch in eine lokale Funktion zusammenfassen.
Nach dem dritten "if not then Exit" beginnt es unlesbar zu werden.


Autor: Martin W
#9|BeitragVerfasst am: 19.04.2006, 01:40 Titel: Re: Mein Programmierstyl
Antworten mit Zitat
@ Robert Marquardt ::

Zitat:
Delphi-Quellcode: markieren
Sender.Lines.Add(timetostr(now) + ' : ' + TextMessage);

Solche Strings sollten immer mit Format zusammengebaut werden und der Formatstring sollte die Positionsangaben %1 ... enthalten.
Der Grund ist die Internationalisierung des Programms. Andere Sprachen koennen die Satzbestandteile unterschiedlich zusammenbauen.


Zitat:
Prepare_classes ist gefaehrlich. Besser den Konstruktor der Form ueberschreiben und dort die Klassen anlegen. Entsprechend gehoert Free_Classes in den Destruktor.


Zitat:
"function Tserver_mainform_form.Import(AType: integer; AFilename: string): boolean;" ist falsch segmentiert. Das sind zwei unterschiedliche Aufgaben die in separate Methoden gehoeren.


Zitat:
...oder ausnutzen das TSaveDialog und TOpenDialog von TCommonDialog abstammen und alles nur einmal machen. Das hier ist klassisches Copy & Paste-Programmieren.


---> Was meinst du damit genau?

Zitat:
"if FileExists(AFilename) = False then" besser "if not FileExists(AFileName) then".
"if RightStr(AFilename, 4) <> '.xml' then" besser "if ExtractFileExt(AFileName) <> '.xml' then", das zeigt besser an das es hier um Filenamen geht.
Ich hasse diese Vortests mit Exit.


---> Wie soll man es sonst machen??? Also ohne Exit?? mit Endlos verschachtelten If Schleifen?

---> Sondern?
Das was ich empfohlen habe.

Stell doch mal eine ueberarbeitete Version bereit.
  Mit Zitat antworten Zitat
 


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 01:13 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