AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Delphi-PRAXiS - Lounge Klatsch und Tratsch Ich habe schlimme Dinge [im Quellcode] gesehen :D

Ich habe schlimme Dinge [im Quellcode] gesehen :D

Ein Thema von Getox · begonnen am 29. Jul 2022 · letzter Beitrag vom 27. Aug 2022
Antwort Antwort
Getox

Registriert seit: 28. Dez 2012
155 Beiträge
 
Delphi XE3 Professional
 
#1

Ich habe schlimme Dinge [im Quellcode] gesehen :D

  Alt 29. Jul 2022, 14:13
Ich wollte einfach mal zur Unterhaltung eine Gruselgeschichte aus meinem Arbeitsleben erzählen.

Ich habe eine Änderung in einem Programmbereich vorgenommen, den ich eigentlich nie angefasst habe. Als ich beim Testen der Änderung das Programm schloss, bekam ich die Meldung über mehrere Speicherleaks.

Jetzt zum gruseligen Teil, was ein Vorgänger gemacht hat

Er hat ein Kontextmenü im Code aufgebaut, wo er jedem Menüeintrag 3 Integerwerte mitgeben wollte. Natürlich sind diese 3 Werte Magic Numbers - also Nummern, die auf magische Weise irgendwas machen und wo man ohne größere Recherche nicht herausfinden kann, was das für Nummern sind und was sie tun sollen. Das liegt auch daran, dass die einzelnen Nummern beim späteren auseinandernehmen des Strings in Variablen gepackt werden, die je mit einem Buchstaben benannt sind. Diese 3 Nummern hat er dann kommasepariert in einen String gepackt. Dann hat er Pointer auf diese Strings in die Tags der Menüeinträge gepackt. Damit die Strings aber nach dem Verlassen der Gültigkeitsbereiche nicht freigegeben werden, hat er den Speicher manuell reserviert. Diesen Speicher hat er aber nie wieder freigegeben...

Wie kann man nur so viele schreckliche Dinge gleichzeitig in eine einzige Mechanik einbauen?
Ist ein Nilpferd ein Pferd, das nicht vorhanden ist?

Geändert von Daniel (29. Jul 2022 um 14:41 Uhr) Grund: Titel angepasst
  Mit Zitat antworten Zitat
29. Jul 2022, 14:40
Dieses Thema wurde am "29. Jul 2022, 14:40 Uhr" von "Daniel" aus dem Forum "Programmieren allgemein" in das Forum "Klatsch und Tratsch" verschoben.
TiGü

Registriert seit: 6. Apr 2011
Ort: Berlin
2.989 Beiträge
 
Delphi 10.4 Sydney
 
#3

AW: Ich habe schlimme Dinge gesehen :D

  Alt 29. Jul 2022, 14:40
Plot Twist: Man war selber diese Kollege und geht sich am Wochenende selbst geißeln, weil man vor viereinhalb Jahren das für eine gute Idee gehalten hat.
  Mit Zitat antworten Zitat
Getox

Registriert seit: 28. Dez 2012
155 Beiträge
 
Delphi XE3 Professional
 
#4

AW: Ich habe schlimme Dinge gesehen :D

  Alt 29. Jul 2022, 14:46
Plot Twist: Man war selber diese Kollege und geht sich am Wochenende selbst geißeln, weil man vor viereinhalb Jahren das für eine gute Idee gehalten hat.


In der Tat gibt es so einige alte Codestellen von mir, wo ich rückblickend am Verstand meines damaligen Ichs zweifele. Aber das Beschriebene stammt tatsächlich nicht von mir.
Ist ein Nilpferd ein Pferd, das nicht vorhanden ist?
  Mit Zitat antworten Zitat
Benutzerbild von dummzeuch
dummzeuch
Online

Registriert seit: 11. Aug 2012
Ort: Essen
1.176 Beiträge
 
Delphi 2007 Professional
 
#5

AW: Ich habe schlimme Dinge [im Quellcode] gesehen :D

  Alt 29. Jul 2022, 15:16
Wie ich vor kurzem auf Twitter schrieb:

If, as a software developer, you want to lose any self confidence, look at some of your code that you haven't touched for a year. And weep.

Ich hatte in den letzten Tagen viele dieser Momente, weil ein Kollege in Urlaub ist und ich im Moment den Kleinkram, den ich sonst immer ihm auf's Auge drücke , selbst machen musste. Es ist erschreckend, wovon man mal dachte, es sei eine gute Idee. Natürlich habe ich auch immer erst gedacht "Welcher Idiot hat sich das denn ausgedacht?", aber da ich nicht glauben konnte, dass der jeweils verdächtigte Kollege den Mist gebaut haben könnte, habe ich dann per svn ge-blame-t. Häufig stellte sich dann heraus, dass ich selbst der Idiot war, vor ein bis 15 Jahren. Und anhand der jeweiligen Commit-Messages konnte ich dann manchmal sogar nachvollziehen, dass es damals einen triftigen Grund gab, es so zu machen.

Heute allerdings war es tatsächlich Code eines anonymen Kollegen:

Delphi-Quellcode:
    Fn := TFileSystem.ChangeFileExtFull(MeasFn, Ext);
    CheckListBox.ItemEnabled[i] := TFileSystem.fileexists(Fn);
    CheckListBox.Checked[i] := TFileSystem.fileexists(Fn);
Und ich wunderte mich, weshalb das so lange dauert.

Da bin ich mir sicher, dass es Tippfaulheit bzw. Copy&Paste war, wobei es mich sogar noch wundert, dass es nicht gleich so aussah:

Delphi-Quellcode:
    CheckListBox.ItemEnabled[i] := TFileSystem.fileexists(TFileSystem.ChangeFileExtFull(MeasFn, Ext));
    CheckListBox.Checked[i] := TFileSystem.fileexists(TFileSystem.ChangeFileExtFull(MeasFn, Ext));
Thomas Mueller
  Mit Zitat antworten Zitat
Benutzerbild von haentschman
haentschman
Online

Registriert seit: 24. Okt 2006
Ort: Seifhennersdorf / Sachsen
5.108 Beiträge
 
Delphi 11 Alexandria
 
#6

AW: Ich habe schlimme Dinge [im Quellcode] gesehen :D

  Alt 30. Jul 2022, 09:12
...oh, da habe ich auch einen Eigenen.
Delphi-Quellcode:
...
Result := False;

for I := 0 to Blubb.Count - 1 do
begin
  ...
  Result := True;
  if Result then
  begin
    // irgendwas
    Break;
  end;
end;
...
...das Pferd auf dem ich damals geritten bin, ist bei den Engeln...aber erklären könnte ich es nicht.

Herzlich über mich selbst gelacht. Wenn man sich nicht selbst weiterentwickeln würde wäre das auch schlimm.

Geändert von haentschman (30. Jul 2022 um 09:16 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
9.939 Beiträge
 
Delphi 11 Alexandria
 
#7

AW: Ich habe schlimme Dinge [im Quellcode] gesehen :D

  Alt 30. Jul 2022, 11:10
Wenn man sich nicht selbst weiterentwickeln würde wäre das auch schlimm.
Das sollte dann aber eigentlich auch für bestehenden Code gelten. Ich nehme mir immer mal wieder Projekte für ein Refactoring einzelner Units vor. Meistens wenn ich sie sowieso an eine neue Delphi-Version anpasse. Je geringer dieser Anpassungsaufwand desto mehr Zeit kann ich in das Refactoring stecken. Macht man das regelmäßig in kleinen Schritten (also nicht Delphi 5 auf Delphi 11) bleibt der Anpassungsaufwand in der Regel klein (Ausnahmen sind Unicode, Styles, High DPI, Unit-Tests) und die Qualität der Software steigt stetig. Dann entwickelt man nicht nur sich selbst weiter sondern auch seine Projekte. Abgesehen davon ist das auch ein gutes Training.
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
Monday

Registriert seit: 24. Aug 2012
95 Beiträge
 
FreePascal / Lazarus
 
#8

AW: Ich habe schlimme Dinge [im Quellcode] gesehen :D

  Alt 30. Jul 2022, 13:21
Ich glaube den Code was haentschman geschrieben hat, kommt dadurch, dass er damals bestimmt nur die Schleifen/Funktion testen wollte. Und hat das dann vergessen, wieder rauszunehmen.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
40.727 Beiträge
 
Delphi 11 Alexandria
 
#9

AW: Ich habe schlimme Dinge [im Quellcode] gesehen :D

  Alt 30. Jul 2022, 13:33
Ja, die #5 ist extrem beliebt.



Delphi-Quellcode:
try
  i := StrToInt(S);
except
  i := 0;
end;
ist immernoch das Schlimmste, was ich je erlebt hab, auch wenn es schon recht harmlos ausschaut.

Aber das war es noch nicht, denn im OnPaint jeder Zelle eines Grids, macht es beim Debuggen enorm viel Spaß.



Jetzt muß ich nur noch rausbekommen, wo auch sowas Ähnliches (Variant zu irgendwas) im FastReport sich versteckt.

Zum Glück ist es dort keine Endlosschleife, so wie im OnPaint.

Peng > Debugger > F5 > Programmfenster wieder hoch > Repaint > Peng > Debugger > F5 > Programmfenster wieder hoch > Repaint > Peng > Debugger > ....
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list

Geändert von himitsu (30. Jul 2022 um 13:38 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
40.727 Beiträge
 
Delphi 11 Alexandria
 
#10

AW: Ich habe schlimme Dinge [im Quellcode] gesehen :D

  Alt 27. Aug 2022, 18:06
ich hab grad was Schlimmes gemacht ... nennt sich public class threadvar
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 12:12 Uhr.
Powered by vBulletin® Copyright ©2000 - 2023, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2021 by Daniel R. Wolf