![]() |
Re: Mein Delphi-Style
Um bei Hansas Beispiel zu bleiben:
Zitat:
Dann wird er ein paar Sortierungen (Jahr - Ort - ka, sammle keine Briefmarken) ausprobieren und dann die wählen die ihm am Besten gefällt und diese dann mit der Zeit verfeinern. Der gute Stil muss sich also entwickeln und da ist es zwar hilfreich, dass mangelnde Formatierung angemahnt wird, aber ständig darauf herumzureiten stört imho die Entwicklung eines Stilbewusstseins. MfG, Bug |
Re: Mein Delphi-Style
Um vielleicht von der muss alles/muss nichts Diskussion weg zu kommen...
Man könnte ja eine Rangliste erstellen, welche Styleguides den Code deutlich lesbarer machen und welche dann nur noch marginal Verbesserungen bringen und evtl. weniger wichtig sind. Zumindest die wichtigen Punkte könnte man sich dann aneignen... Einrückung sehe ich mit am wichtigsten (wobei wohl wieder die Sache mit begin ungeklärt bleiben wird) ;) |
Re: Mein Delphi-Style
..da auch mal meinen Senf dazu geben moechte...
also ich finde, dass ja gewisse Tools..Castalia etc. auch in einer gewissen Form "markieren"..die sieht , nicht nur weil es meiner entspricht, auch sehr uebersichtlich aus und ich denke mal, dass die Firma sicher auch gewisse Standards genutzt hat um sie in dieser Art zu visualisieren. ;-) |
Re: Mein Delphi-Style
Zitat:
Delphi-Quellcode:
Grüße,
procedure TFtpBrowser.DeleteFile(AFile: String; IsDir: Boolean);
const strRemoveFileError = 'Could not remove %s %s'; var strErrorMessage: string; begin try if (IsDir) then if ((AFile <> '.') and (AFile <> '..')) then Deletefile(..); else Deletefile(..); except if (IsDir) then strErrorMessage := Format(strRemoveFileError, ['directory', AFile]) else strErrorMessage := Format(strRemoveFileError, ['file', AFile]); TriggerLogEvent(strErrorMessage, etError); end; end; Win32 |
Re: Mein Delphi-Style
Das wird Delphi aber nicht kompilieren ("; nicht erlaubt vor einem else") ;)
|
Re: Mein Delphi-Style
War ja auch nur schnell zusammen getippt, hier gehts ja schließlich ums Prinzip :cheer:
|
Re: Mein Delphi-Style
Also bei mir würde der Beispiel-Code so aussehen:
Delphi-Quellcode:
und eine Procedure/Function muss nicht unbedingt auf eine Bildschirmseite passen.
if k=kMax then
A[k] := A[k-1] / A[k] if a=0 then Result := 0 else if a>0 then Result := 1 else Result := -1; if Sender=mnPrintGraphOben then h:= ro // 'Drucken|Graph oben' else h:= rm; // 'Drucken|Graph unten' for k:= 0 to kMax do A[k]:= 0; for i := 1 to iMax do begin temp := A[i]; A[i] := B[i]; B[i]:= temp; end; for i:= 2 to m do begin for k:= 1 to i-1 do B[i]:= B[i] - A[r(i,k)] * B[k]; B[i]:= B[i] / Abs(A[r(i,i)]) end; with Image1.Canvas do begin MoveTo(DL, D0 - Round(sy * (F(xMin)-yMin))); for i:= 0 to 320 do begin x:= xMin + i * dx; LineTo(DL + 2 * i, D0 - Round(sy * (F(x)-yMin))) end; end; Das wichtigste ist, dass man es lesen und verstehen kann. Sprich, wenn man scrollen muss, dann darf es nicht sein, dass man alle paar Zeilen zurück zu den Deklarationen der Variablen springen muss um sich zu errinnern, was DL, D0, ro oder rm nochmal bedeutet. Wenn ich Code sehe (meiner oder auch anderer Herkunft), dann möchte ich schon direkt (vor allem nach längerer Nichtbetrachtung) sofort sehen was dort "fabriziert" wurde und was es bedeutet. Beispiel (Nodes mit Farbverlauf im VST zeichnen):
Delphi-Quellcode:
Ich habe die Kommentare mal entfernt, aber ich denke, dass der Code relativ einfach zu vertstehen ist.
if (Node = vstMainList.HotNode) then
begin TargetCanvas.Pen.Color := $00FAF0D8; //$0049CFF5; cl1 := $00FDFAF4; cl2 := $00FDF5E8; end; if (Node = vstMainList.FocusedNode) then begin TargetCanvas.Pen.Color := $00FDDE99; //$000C66D3; cl1 := $00FDF8F1; cl2 := $00FCEFD5; end; if ((vstMainList.HotNode = vstMainList.FocusedNode) and (Node = vstMainList.HotNode)) then begin TargetCanvas.Pen.Color := $00FDDE99; //$0049CFF5; cl1 := $00FEF7E9; cl2 := $00F6E4C0; end; .... .... .... if (Column = 0) or (Column = vstMainList.Header.Columns.Count - 1) then begin rcTemp := CellRect; dec(rcTemp.Bottom, 1); if (Column = 0) then rcTemp.Left := rcTemp.Right - 4; if (Column = vstMainList.Header.Columns.Count - 1) then rcTemp.Right := rcTemp.Left + 4; if (vstMainList.Selected[Node]) or (Node = vstMainList.HotNode) then eqComps.DrawGradient(TargetCanvas, rcTemp, False, [cl1, cl2]); end; Auch wenn es nur ein Auszug ist. Meine Variablennamen wähle ich eigentlich immer so, dass man aus ihnen Typ und Verwendungszweck erkennen kann. rcTemp im Beispiel wird mehrmals an unterschiedlicher Stelle benutzt und immer wieder mal neu belegt. pNodeDataUser und pNodeDataWorkplace im Folgenden lassen schon erkennen, dass es Node-Daten sind für Benutzer oder Arbeitsplätze auch ohne das dafür eine weitere Erläuterung notwendig wäre, abgesehen vom "wozu?".
Delphi-Quellcode:
Variablen sollten abgesehen davon nur am Deklarationsort einmal etwas genauer beschrieben werden.
if Node.Dummy = 98 then
begin pNodeDataUser := vstMainList.GetNodeData(Node); sTemp := GetWorkplaceNumberFromID(pNodeDataUser.lRefWorkplaceID); .... .... .... end; if Node.Dummy = 99 then begin pNodeDataWorkplace := vstMainList.GetNodeData(Node); .... .... .... end; Mitten im Code macht es wenig Sinn, es sei denn die Namen der Variablen sind Nichtssagend. Fazit für mich: Bis jetzt sind auch andere, die mit meinem Code etwas machen mussten gut und schnell (ohne große Erklärungen) damit zurechtgekommen. Und das ist die Hauptsache. |
Re: Mein Delphi-Style
Zitat:
|
Re: Mein Delphi-Style
Zitat:
Ich hätte da noch eine Idee, wie man einrücken kann: 1. Man nehme die aktuelle Uhrzeit mit Sekundenanzeige 2. Rechne Sekunden modulo 8 3. Das Erbegbnis ist die Anzahl der Leerzeichen die man zum einrücken der aktuellen Zeile benutzt. Solchen Code gibt es wirklich. |
Re: Mein Delphi-Style
Zitat:
Im anderen Fall wäre es 3 leerzeichen weiter eingerückt + "begin" in der Zeile nach dem "then". |
Re: Mein Delphi-Style
na ja ich würde es direkt unter IF schreiben.
Bei tieferen abfragen würde ich nicht mehr erkennen wozu der Block gehört. Auch (gewohnheit aus VB) setze ich hinter dem "End"
Delphi-Quellcode:
So sehe ich direkt zu welcher abfrage dieser Block gehört.
begin
.. end; // Column gruss Emil |
Re: Mein Delphi-Style
Zitat:
|
Re: Mein Delphi-Style
|
Re: Mein Delphi-Style
Zitat:
das hab ich früher auch mal gemacht, ist aber mit dem CNPack total überflüssig geworden, CNPack macht ja jedes "begin" und "end" schön bunt und in jeder Ebene mit einer anderen Farbe. CNPack verbindet das "begin" und "end" von einem Block auch schön mit einem senkrechten Strich. Seitdem hat sich das irgendwie ergeben, dass ich überall dahinterschreibe, von welchem begin das end stammt .. :-) |
Re: Mein Delphi-Style
Zitat:
|
Re: Mein Delphi-Style
Eine Variable Do kann es geben und dank dem ganzen Insight-Zeug reicht meist schon ein Überfahren der Variable mit dem Cursor.
|
Re: Mein Delphi-Style
Zitat:
|
Re: Mein Delphi-Style
D0 und DO kann es geben.
|
Re: Mein Delphi-Style
Zitat:
Gar nix erst Maus. Einfach auf das Wort gehen ALT+Pfeil hoch drücken. Wenn man wieder zurück will ALT-PFEIL LINKS :-) |
Re: Mein Delphi-Style
Zitat:
|
Re: Mein Delphi-Style
Hallo,
Der TE Dipl Pysiker Karl August Ernst von Provokation mag ja in der Mathematik durchaus bewandert sein, aber sollte doch lieber auf das Programmieren (jedenfalls in diesem Stil) verzichten.. Das Beispiel in Thread #1 zeugt von übelstem Programmierstil und ist Spaghetticode par excellence. Die Intention könnte natürlich sein, ich programmiere Spaghetti und kein anderer versteht es ohne großen Aufwand. Damit kann man sich unentbehrlich machen :gruebel: Als Kunde würde ich sowas nicht abnehmen. Ich denke aber , dieser Beitrag war eher provokativ gemeint. Und wenn der TE das hier ernst gemeint hat, sollte er etwas anderes rauchen :corky: Gruß Question_mark |
Re: Mein Delphi-Style
Zitat:
wie meinst Du das? ALT + CURSOR HOCH ist "Deklaration suchen" ALT + CURSOR LINKS ist "zurück Navigieren im Quelltext" also wieder zurück an die Stellen, wo man schonmal war ALT + CURSOR RECHTS + "Navigation wieder nach vorn" hmm .. hab ich was falsches gesagt? |
Re: Mein Delphi-Style
Nehme alles zurück und behaupte... gar nichts.
|
Re: Mein Delphi-Style
Bei dir geht das ? :shock:
Delphi-Quellcode:
Ergibt bei mir lediglich folgende Fehlermeldung :
var do : Integer;
Zitat:
Zitat:
|
Re: Mein Delphi-Style
Dann setz mal ein & vor den Bezeichner...
|
Re: Mein Delphi-Style
Ich kann auch ein x davorsetzen. 8) & wird nicht akzeptiert, aber es ist auch irrelevant.
Zitat:
|
Re: Mein Delphi-Style
Zitat:
|
Re: Mein Delphi-Style
Eine Variable &DO zu deklarieren, das habe ich auf deine Veranlassung hin getestet mit D7. Selber würde ich nie auf eine solche Idee kommen. :mrgreen: Als D8 geschädigter versuche ich das gar nicht erst mit der Nachfolge Beta davon, genannt BDS2005. Allerdings : mit D2009 dürften solche Konstrukte schon gehen. ABER : Du hast mit dieser Idee ein völlig neues Spielfeld eröffnet. 8) Was ist mit dem Styleguide anzufangen im Zeichen von Unicode ?? Wird mir hier allerdings langsam wirklich zu OT-lastig.
|
Re: Mein Delphi-Style
Das wurde wegen der .Net-Unterstützung eingeführt, um Uberschneidungen von Delphibezeichnern mit dem Framework zu umgehen
|
Re: Mein Delphi-Style
Hallo,
das Zeichen & gibt’s schon seit Delphi 5, zu mindestens in ASM-Code, in normalen Pascal – Code habe ich es nie verwendet. Bis bald Chemiker |
Re: Mein Delphi-Style
Dieses "Quoten" müsste mit D7 eingeführt worden sein
|
Re: Mein Delphi-Style
Zitat:
Von DO war auch nicht die Rede, aber von D0 (0=Null). |
Re: Mein Delphi-Style
Der Beste Code-Style ist der, den ICH persönlich am Besten lesen kann.
Zu 95% werde ich meinen selbst geschriebenen Code lesen und niemand anderes. Es ist also vorrangig wichtig, daß ich mit diesem Style gut zurecht komme. In einem Team sollte man sich trotzdem auf einen Style einigen und diesen konsequent durchziehen. |
Re: Mein Delphi-Style
Zitat:
|
Re: Mein Delphi-Style
|
Re: Mein Delphi-Style
Moin, moin,
Wenn man sich auf einen Stil einigt, den ein automatischer Formatierer auch hinbekommt, kann man einges Konfliktpotenzial entschärfen.. Grüße // Martin |
Alle Zeitangaben in WEZ +1. Es ist jetzt 09:21 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