AGB  ·  Datenschutz  ·  Impressum  







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

Codedesign

Ein Thema von Luckie · begonnen am 10. Nov 2003 · letzter Beitrag vom 6. Jan 2004
Antwort Antwort
Seite 4 von 6   « Erste     234 56      
choose

Registriert seit: 2. Nov 2003
Ort: Bei Kiel, SH
729 Beiträge
 
Delphi 2006 Architect
 
#31

Re: Codedesign

  Alt 11. Nov 2003, 11:58
Zitat von Negah:
Es sollten niemals zu viele Klammern sein, sondern nur so viele wie nötig
Hallo Negah,

ich empfehle Einsteigern meißt eher das Gegenteil, weil vielen die Prioritätsregeln nicht "im Blut stecken".
Es gibt zwei Prioritätsregeln:
  1. Punkt- vor Strichrechnung
  2. Klammer vor allem
Lieber eine Klammer mehr, als ein Bug, den man nicht findet, weil man glaubt, der Compier übersetzt es so, wie man meint:
Delphi-Quellcode:
var
  a, b: Integer;
begin
  a:= -1;
  b:= 2;
  if not a < b then
Und "Tricks mit binären Operatoren" in der Form
Zitat von Negah:
  if A or B or C = 0 then Good;
würde ich als Einsteiger lesen als "Wenn eine der Variablen null ist, dann".

Ich hatte mal den folgenden Code gesehen:
Delphi-Quellcode:
  //its not a sony, its a trick
  a:= a xor b;
  b:= a xor b;
  a:= a xor b;
Sicher, er funktioniert, ist performat, braucht eine Variable weniger, aber: Wer, der nicht vorher ASM geschrieben hat, versteht ihn (und dann noch der Kommentar! Ich beziehe mich hier auf Negah: "Der Programmierer codiert NICHT aus Selbstzweck")?
gruß, choose
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#32

Re: Codedesign

  Alt 11. Nov 2003, 12:03
Schon verbessert.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Benutzerbild von negaH
negaH

Registriert seit: 25. Jun 2003
Ort: Thüringen
2.950 Beiträge
 
#33

Re: Codedesign

  Alt 11. Nov 2003, 12:05
Delphi-Quellcode:
function IsValidDay(const Value: String): Boolean;
begin
  Result := StrToIntDef(Value, 0) in [1..31];
end;

function CalcJulianYear(Year: Word; Month: Word = 1; Day: Word = 1): Word;
begin
// falls CalcJulianYear eine "lowlevel" private Funktion ist
  Assert(Month in [1..12]);
  Assert(Day in [1..31]);
// falls CalcJulianYear eine "highlevel" globale Funktion ist
  if not (Month in [1..12]) then
    raise EConvertError.Create();
  if not (Day in [1..31]) then
    raise EConvertError.Create();
  
// hier die Berechnung aus der PDF, ich verstehe aber nicht was dort berechnet wird,
// da die wichtigen Remarks fehlen !!?? :-)
  
end;
Gruß hagen
  Mit Zitat antworten Zitat
choose

Registriert seit: 2. Nov 2003
Ort: Bei Kiel, SH
729 Beiträge
 
Delphi 2006 Architect
 
#34

Re: Codedesign

  Alt 11. Nov 2003, 12:13
Hallo negaH,

Luckie hat bewusst darauf hingewiesen, dass der Article nicht in der finalen Version vorliegt.
Tippfehler, wie ein fehlender Buchstabe, sollten deshalb verziehen werden...


Zitat von negaH:
die ShowMessage() sollte durch eine Excpetion ersetzt werden. Der Code als "Highlevel" Funktion sollte auch eine Fehlerüberprüfung haben. "Highlevel" Funktionen können demzufolge auch Exceptions auslösen. Paralell dazu könnte man die Funktion so umbasteln wie es in StrToIntDef() der Fall ist. Dies würde die Exceptions beseitigen und einen Default Wert zuweisen.
Assertion- und Exceptionhandling ist mehr als nur irgendeine Exception zu werfen. Weil die VCL es nur bedingt vorlebt und Delphi nicht das Konzept der Checked Exceptions unterstützt, sind sie dem Delphi-Einsteiger (Zielgruppe des Artikels) nicht vertraut. Richtig angewandt sind Exceptions sehr sinnvoll, aber auch aufwendig zu designen!

Zitat von negaH:
4.) ALLE Varibalen beginnen mit Großbuchstaben !
5.) ValidatDay(d: string): Boolean; ist inkonsitent -> IsValidDay(const Value: String): Boolean;
6.) edtDay.Text -> EditDay.Text oder EDay.Text
Wenn Luckie sich auf den StyleGuide von Charles Calvert beruft, simmt das. Allerdings habe zu genau diesen Punkten schon häufiger Kritik vernommen...

Zitat von negaH:
7.) Extended für die Berechnungen ist überdimensioniert, Default Floatingpoint sollte Double sein.
Auch hier würde ich lieber einen zu großen Datentyp (für einen Einsteiger) empfehlen als einen zu kleinen mit deaktivierte Bereichsüberprüfung (sonst sind 200d+100d plötzlich einmal 45d).
gruß, choose
  Mit Zitat antworten Zitat
Benutzerbild von negaH
negaH

Registriert seit: 25. Jun 2003
Ort: Thüringen
2.950 Beiträge
 
#35

Re: Codedesign

  Alt 11. Nov 2003, 12:17
Zitat:
ich empfehle Einsteigern meißt eher das Gegenteil, weil vielen die Prioritätsregeln nicht "im Blut stecken".
Absolut falsch. Bei meinen Lehrlingen habe ich alle diese Regeln wieder und wieder in den Schädel gehämmert, denn wie soll man es richtig lernen wenn man es nicht richtig lernt ??
Jede Ausnahmeregel und Ausnahmevereinfachung führt dazu das man es so und nicht anders in Zukunft macht.

Einfach mal sagen das der Himmel Grün und die Wiese Blau ist, damit es ein Idiot versteht halte ich für falsch (überspitzt ausgedrückt ) Dem Lernenden ist nicht geholfen dabei.

Delphi-Quellcode:
var
  a, b: Integer;
begin
  a:= -1;
  b:= 2;
  if not a < b then
Diese Abfrage muß logisch begriffen werden, man muß also Klamern setzen wenn man den Boolschen Vergleich if not (A < B) then erreichen will.
Wichtig ist es hier aber das man merkt das diese Abfrage absolut schlechter Stil ist und der Programmierer NICHT nachgedacht hat. Denn:

  if a >= b then ; wäre die RICHTIGE Antwort !


Delphi-Quellcode:
  a:= a xor b;
  b:= a xor b;
  a:= a xor b;
Das sollte absolut vermieden werden, korrekt !
Eine zusätzliche Variable macht den Code lesbarer und ist unter umständen schneller.

Gruß Hagen
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#36

Re: Codedesign

  Alt 11. Nov 2003, 12:29
So, das werde ich nachher mal alles zusammentragen und mit einfließen lassen.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
choose

Registriert seit: 2. Nov 2003
Ort: Bei Kiel, SH
729 Beiträge
 
Delphi 2006 Architect
 
#37

Re: Codedesign

  Alt 11. Nov 2003, 12:42
Cool. Postest Du hier noch einmal, wenn Du den Artikel fertig und auf Deiner Seite veröffentlicht hast?

Danke.
gruß, choose
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#38

Re: Codedesign

  Alt 11. Nov 2003, 12:52
Logisch, sonst macht es ja wenig Sinn. Ich muss mich nur irgendwie mit dem Autor für den schlechten Code einigen. Bis jetzt sperrt er sich noch.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
neolithos

Registriert seit: 31. Jul 2003
Ort: Dresden
1.386 Beiträge
 
Delphi 7 Architect
 
#39

Re: Codedesign

  Alt 11. Nov 2003, 13:20
Zitat von Hagen:
8.) if then erwartet eine Boolsche Abfrage, einen Boolean nochmals mit einer Boolschen Abfrage zu versehen deutet darauf hin das der Programmierer nicht rechnen kann und die Boolsche Algebra in der Schule verpennt hat.
Für komplizierte Ausdrücke verwende ich da meist ein Stück Papier und male ein KV-Tafel auf.
Damit kann man komplizierte abfragen vereinfachen!

Man sollte aber einen Kommentar mit der Problembeschreibung dazusetzen.


Was bei mir noch immer aufgefallen ist,

Ich schreibe eine Procedure zuerst logisch auf.
Was soll grob getan werden. ==> Kommentare

Bsp: TSR

Delphi-Quellcode:
// Sortiere Feld
// Gehe Alle Städte -> Rekursion
for I := 0 to Count - 1 do
    // Schranke prüfen
    ;
Das Symikolon hatte ich vor sehr langer Zeit hinter das do gesetzt und manchmal vergessen es wieder wegzulöschen oder man setzt einen leeren Block.

Diese Vorgehensweise macht es mir leicht möglich das komplexen Problem in viele Teilprobleme zu zerlegen.

Nennt man glaube ich Top-Down-Prinzip.
- ciao neo -
Es gibt niemals dumme Fragen, sondern nur dumme Antworten!
  Mit Zitat antworten Zitat
Benutzerbild von S - tefano
S - tefano

Registriert seit: 16. Dez 2002
Ort: Dülmen
477 Beiträge
 
Delphi 2009 Professional
 
#40

Re: Codedesign

  Alt 11. Nov 2003, 13:26
Gibt es nicht von Borland selbst einen seitenlangen Artikel mit Richtlinien, wie man Pascal Code schreiben sollte?
Ich bin mir sicher ich hab sowas schonmal gelesen, vielleicht weiß von euch ja einer wo es den gibt. Ich werd ihn mal suchen, den könnte man wenigstens noch als Vergleichsquelle benutzen, wenn man sich nicht komplett an ihn hält. Denn neben den Regeln die es schon gibt noch eigene Regeln aufzustellen die denen ähnlich sind die es schon gibt...
Da kann ich mir auch ne eigene StVO entwerfen, die sich von der normalen nur dadurch unterscheidet dass ich immer Vorfahrt habe
Nichts für ungut

Ich finde eure Ansätze bislang richtig gut, die machen Sinn und umfassen schon viele "Bereiche". Wenn sich daran hier im Forum jeder hält, haben wir alle mehr Spaß.

Bis dann,

S - tefano
"Sir, we are surrounded!" - "Excellent, we can attack in every direction!"
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 4 von 6   « Erste     234 56      


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 17:31 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