![]() |
Die häufigsten Programmierirrtümer
Liebe DPler,
ich würde gerne hier einmal die häufigsten Irrtümer sammeln und ein Tut bauen. Ich hoffe auf rege Beteiligung. Mein Brainstorming vorerst: - IF-Schleife (2260 Hits im Forum) - if a/b = 0 (Hinweis auf Link zu Luckie) - if a= 7 or 13 - if ergebnis = true ... ... Gruß Wolfgang |
Re: Die häüfigsten Programmierirrtümer
Hallo,
wie wärs mit so etwas: If a = b and c <> d then Also mehrere Vergleiche ohne Klammern |
Re: Die häüfigsten Programmierirrtümer
gut, mehr :)
|
Re: Die häüfigsten Programmierirrtümer
Das hier hab ich schon öfter bei blutigen Anfängern gesehn:
Delphi-Quellcode:
if Button1.Click then
... |
Re: Die häüfigsten Programmierirrtümer
danke, "alter Hase" :)
|
Re: Die häüfigsten Programmierirrtümer
Ich hätt noch was:
Delphi-Quellcode:
var
r: Real; begin { ... } If r = 0 then //Float-Wert-Abfrage genau auf Null end; |
Re: Die häüfigsten Programmierirrtümer
Sh. Post #1
|
Re: Die häüfigsten Programmierirrtümer
Auch wenn es kein Programmierfehler ist,
aber ein häufiger Fehler ist auch ein falsch geschriebener Thread-Titel: Re: Die häüfigsten Programmierirrtümer :mrgreen: |
Re: Die häüfigsten Programmierirrtümer
Schlecht gewählte und nichtssagende Variablenbezeichner.
Schlecht lesbarer Code. Der größte Programmiererirrtum: Zu meinen,von anderen keine Ratschläge annehmen zu müssen. |
Re: Die häufigsten Programmierirrtümer
@ Helmi :) Mit 60 ohne Brille ist auch schlecht
|
Re: Die häufigsten Programmierirrtümer
Zitat:
Hier hätt ich noch einen:
Delphi-Quellcode:
for i := 1 to StringList.Count do
S := StringList.Strings[i]; |
Re: Die häüfigsten Programmierirrtümer
Zitat:
|
Re: Die häufigsten Programmierirrtümer
naja, kein Programmierfehler, eher ein Fehler im Umgang mit dem BB-Code:
"hab schon das alles geschafft: [ganz viel Quelltext, nicht in Delphi-Tags eingefasst, nicht eingerückt] Wer kann mir helfen?" ---------- Auch kein Programmierfehler, aber ein Mangel an Kenntnis im Umgang mit dem Debugger: "[ganz viel Quelltext, vielleicht in Delphi-Tags eingefasst, eventuell eingerückt] Da kommt dann ein Fehler. Wieso?" |
Re: Die häufigsten Programmierirrtümer
Das sind keine "Programmierirrtümer", sondern Programmierfehler!
Da es in "Programmieren allgemein" steht, hier noch ein Fehler, der einen richtig frustrieren kann, da man ihn teils nur schwer findet:
Code:
// Der Code ist für C, C++, C#, ... (nicht für Delphi)
if (a = b) { // ... } |
Re: Die häufigsten Programmierirrtümer
Etwas, was ich öfters sehe:
Fehler werden nicht gefunden, da Einrückung nicht korrekt ist. - begin oder end zuviel/zuwenig - if-Anweisung ohne begin/end und man wundert sich, dass zuviel ausgeführt wird - ... Abbruchbedingungen, die niemals zutreffen können. GOTO (siehe ![]() Was ich persönlich einfach nicht leiden kann (ist ansich ja nicht falsch, aber ich finde es einfach unschön):
Delphi-Quellcode:
anstatt
if cancelled then
exit else begin ... end; //Ende der Methode
Delphi-Quellcode:
if not cancelled then
begin ... end; //Ende der Methode |
Re: Die häufigsten Programmierirrtümer
Zitat:
if (a == b) { Darauf bin ich auch schon öfter 'reingefallen :( |
Re: Die häufigsten Programmierirrtümer
Delphi-Quellcode:
var
sl: TStringList; begin sl.Create; sl....; |
Re: Die häufigsten Programmierirrtümer
Hätte auch noch was:
Delphi-Quellcode:
statt
if y = 2010 Then
xyz := true else xyz := false;
Delphi-Quellcode:
xyz := (y = 2010);
|
Re: Die häufigsten Programmierirrtümer
Zitat:
|
Re: Die häufigsten Programmierirrtümer
Das ist weder ein Irrtum noch ein Fehler. Der Programmierer fand eventuell seine Schreibweise lesbarer.
|
Re: Die häufigsten Programmierirrtümer
... und noch was
Delphi-Quellcode:
P.S.: Wie zum Teufe rücke ich denn hier in den Tags ein?!? :evil: Im Antwort-Editor ist es eingerückt :(
sl : TStringList;
[...] begin sl := TStringList.Create(nil); [...] sl.Free; // wird oft vergessen :) end; |
Re: Die häufigsten Programmierirrtümer
@ Michael:
Sehe ich auch so |
Re: Die häufigsten Programmierirrtümer
Zitat:
Ich möchte nur darauf hinweisen, das Anfänger in solch formatiertem Code Fehler schlechter finden. Dabei handelt es sich allerdings nicht um eine pauschale Aussage, sondern ein Hinweis rein aus Erfahrung mit Anfängern. |
Re: Die häufigsten Programmierirrtümer
was auch ein Irrtum sein kann, wäre das hinzufügen eines Eintrages in eine StringList z. B. mittels "Insert" statt "Add"
|
Re: Die häufigsten Programmierirrtümer
Zitat:
GOTO habe ich in "Anfängercodes" hier in der DP noch nie gesehen. Wenn man nicht ständig davor warnen würde, würden es die meisten (Anfänger) nicht mal kennen :mrgreen: (Mein erstes GOTO hab ich in einer Warnung gesehen.) |
Re: Die häufigsten Programmierirrtümer
Ich hätte da zu bieten:
Delphi-Quellcode:
Auch das Gegenteil hab ich schon oft genug gesehen:
// Damit es auf jeden Fall ausgeführt wird!!!
if 1 = 1 then begin // Code end;
Delphi-Quellcode:
Toll fand ich auch:
// Darf nicht mehr ausgeführt werden!!!
if 1 = 2 then begin // Code end;
Delphi-Quellcode:
if (Bedingung) then
begin Var1 := 'bla'; Var2 := 'bla'; end else begin Var1 := 'blubb'; Var2 := 'blubb'; end; Var1 := 'bla'; Var2 := 'bla'; |
Re: Die häufigsten Programmierirrtümer
Zitat:
|
Re: Die häufigsten Programmierirrtümer
Zitat:
Zitat:
Zitat:
Delphi-Quellcode:
var
sl : TStringList; begin sl := TStringList.Create(nil); try finally sl.Free; // oder auch FreeAndNil(sl); welches ich all zu gerne nutze end; end; |
Re: Die häufigsten Programmierirrtümer
Ein Klassiker: Zugriff auf leeres, dynamisches Array (auch Strings sind dynamische Arrays):
Delphi-Quellcode:
var
s : string; i, anz_comment : integer; begin // Sinn & Zweck: Zähle alle Zeilen, die mit * beginnen anz_comment : = 0; for i:=0 to Memo1.Lines.Count-1 do begin s := Memo1.Lines[i]; // sollte die Zeile leer sein, also s ='' dann knallts hier richtig // es gibt eine Zugriffsverletzung, denn s zeigt auf nil // auch die Bereichsprüfung kann hier keinen Schutz bieten if s[1] = '*' then Inc(anz_comment); end; |
Re: Die häufigsten Programmierirrtümer
Oder:
if a=1 or 2 (anstatt: if (a=1) or (a=2)), also so vereinfacht bzw. verkürzt, wie man in unserer natürlichen Sprache abgekürzt, aber dennoch verständlich sich auszudrücken pflegt. |
Re: Die häufigsten Programmierirrtümer
@sx2008: Ist ein s := '' gleichzusetzen, wie s := nil? :gruebel: Wäre mir definitiv neu, wobei ich nicht weiß, wie das intern gehandelt wird.
Zitat:
|
Re: Die häufigsten Programmierirrtümer
Hi,
aus meinen C Erfahrungen: if (a = 0) ist nicht das gleiche wie if (a == 0) Das ist ein Fehler der im nachhinein kaum noch zu finden ist. Compiler meckert nicht. Im ersten Fall wird kein Vergleich durchgeführt sondern a die Null zugewiesen. Ist zwar kein Fehler aber was ich überhaupt nicht leiden kann ist die C Schreibweise in Pascal:
Delphi-Quellcode:
Was mich auch nervt ist mein eigener unkommentierter Kode,
extrem unschön:
If blabla then begin ... end sehr viel übersichtlicher: If blabla then begin ... end den ich dann nach 4 Wochen selbst nicht mehr versteh! Grüsse Rainer |
Re: Die häufigsten Programmierirrtümer
Zitat:
Zitat:
Was Du aber vielleicht eigentlich meinst, ist: Ein großer Programmiererirrtum ist es, zu meinen, das Maß aller Dinge sei funktionierender Code. Das Maß aller Dinge muss lesbarer Code sein (der kann im Nachhinein viel einfacher entwanzt werden). Das schließt deine oben zitierte Meinung mit ein, hoffe ich. |
Re: Die häufigsten Programmierirrtümer
Hi alzaimar,
Zitat:
Ich will niemand davon überzeugen und ich will auch keine Diskussion darüber anfangen. Zitat:
Grüsse Rainer Ps: konnte das einfach so nicht stehen lassen. Bitte keine Diskussion darüber anfangen! |
Re: Die häufigsten Programmierirrtümer
Zitat:
Delphi-Quellcode:
stattdessen:
if ... then
...; // eine Zeile
Delphi-Quellcode:
Ich fasse auch Rümpfe in begin und end ein, auch wenn sie nur eine Zeile umfassen. Einfach aus dem Grund, weil der Rumpf eventuell später erweitert wird und man dann vergisst das begin und end zu ergänzen. Bei dem daraus resultierenden Fehlverhalten kann man sich manchmal dumm und dämlich suchen. So was vermeide ich somit von vorne herein.
if ... then
begin ...; // eine Zeile end; Das mache ich übrigens in allen Programmiersprachen so, sei es in Delphi oder PHP. Ich habe sogar schon Code vom Kollegen dahingehend angepasst. Was Kommentare angeht: Sie generell als böse zu bezeichnen ist auch nicht ganz richtig, wie eigentlich fast jede Pauschlisierung. Aber wenn man etwas kommentiert, dann höchstens das Warum. Das Wie sehe ich am Code. Denn jemand der den Code liest wird sich meist fragen: Warum macht der das? Wenn dann da steht "Workaround wegen Bug XYZ", dann weiß derjenige Bescheid und ändert die Stelle nicht, weil er denkt es wäre überflüssig oder so und baut somit wieder einen schon beseitigten Fehler ein. Auch habe ich mir angewöhnt, wenn ich fremden Code ändere meine Änderungen zu markieren mit:
Delphi-Quellcode:
(mp ist mein Kürzel in der Firma.) Dann sehe ich sofort welcher Code von mir ist und ich kann ihn im Fall der Fälle über die Such-Funktion auch schneller wiederfinden. Leider habe ich meinen Kollegen noch nicht dazu bringen können dies auch zu tun. Wenn ich jetzt einen Fehler beheben muss, weiß ich teilweise nicht, ob der Fehler vom Framework stammt oder in vom Kollegen nachträglich hinzugefügten Code. Ich habe schon Stunden mit der Fehlersuche verbracht, wo es dann nachher hieß: "Äh, Moment, der Code ist von mir. Ich weiß, was da nicht stimmt." :wall:
// [mp:start]
...; ...; ...; // [mp:end] |
Re: Die häufigsten Programmierirrtümer
hmm
ich glaub ich hab auch noch was, ein bekannter von mir macht ständig sachen onFormActivate besser wär aber onFormshow, weil activate wird aufgerufen wenn man mal auf den desktop klickt und dann wieder auf das fenster....hat schon einige probleme gegeben hier... Gruß tom |
Re: Die häufigsten Programmierirrtümer
Nun ja, das ist aber weniger ein Irrtum, als ein Fehler würde ich sagen.
|
Re: Die häufigsten Programmierirrtümer
Ein häufiger Irrtum ist :
Delphi-Quellcode:
Das ist eben das Versehen, zu vergessen, dass das bei 0 anfängt und dementsprechend bei count-1 Schluss ist. "Listenindex überschreitet das Maximum XY". :shock:
for i := 1 to StringList.Count ...
Aber was ist hieran auszusetzen, bzw. unschön, mal davon abgesehen, dass es sich keineswegs um einen Irrtum handelt : Zitat:
Wer nur nach Zeilen bezahlt wird, der richte sich allerdings wirklich besser 100% nach dem Styleguide. :mrgreen: |
Re: Die häufigsten Programmierirrtümer
Zitat:
Zitat:
|
Re: Die häufigsten Programmierirrtümer
Zitat:
Zitat:
![]() |
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:32 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