![]() |
Re: Codedesign
Zitat:
ich empfehle Einsteigern meißt eher das Gegenteil, weil vielen die Prioritätsregeln nicht "im Blut stecken". Es gibt zwei Prioritätsregeln:
Delphi-Quellcode:
Und "Tricks mit binären Operatoren" in der Form
var
a, b: Integer; begin a:= -1; b:= 2; if not a < b then Zitat:
Ich hatte mal den folgenden Code gesehen:
Delphi-Quellcode:
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")?
//its not a sony, its a trick
a:= a xor b; b:= a xor b; a:= a xor b; |
Re: Codedesign
Schon verbessert. :thumb:
|
Re: Codedesign
Delphi-Quellcode:
Gruß hagen
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; |
Re: Codedesign
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:
Zitat:
Zitat:
|
Re: Codedesign
Zitat:
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:
Diese Abfrage muß logisch begriffen werden, man muß also Klamern setzen wenn man den Boolschen Vergleich if not (A < B) then erreichen will.
var
a, b: Integer; begin a:= -1; b:= 2; if not a < b then Wichtig ist es hier aber das man merkt das diese Abfrage absolut schlechter Stil ist und der Programmierer NICHT nachgedacht hat. Denn:
Delphi-Quellcode:
wäre die RICHTIGE Antwort !
if a >= b then ;
Delphi-Quellcode:
Das sollte absolut vermieden werden, korrekt !
a:= a xor b;
b:= a xor b; a:= a xor b; Eine zusätzliche Variable macht den Code lesbarer und ist unter umständen schneller. Gruß Hagen |
Re: Codedesign
So, das werde ich nachher mal alles zusammentragen und mit einfließen lassen.
|
Re: Codedesign
Cool. Postest Du hier noch einmal, wenn Du den Artikel fertig und auf Deiner Seite veröffentlicht hast?
Danke. |
Re: Codedesign
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. :cry:
|
Re: Codedesign
Zitat:
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:
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.
// Sortiere Feld
// Gehe Alle Städte -> Rekursion for I := 0 to Count - 1 do // Schranke prüfen ; Diese Vorgehensweise macht es mir leicht möglich das komplexen Problem in viele Teilprobleme zu zerlegen. Nennt man glaube ich Top-Down-Prinzip. |
Re: Codedesign
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 |
Alle Zeitangaben in WEZ +1. Es ist jetzt 13:36 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