Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Klatsch und Tratsch (https://www.delphipraxis.net/34-klatsch-und-tratsch/)
-   -   Ich habe schlimme Dinge [im Quellcode] gesehen :D (https://www.delphipraxis.net/211110-ich-habe-schlimme-dinge-%5Bim-quellcode%5D-gesehen-d.html)

Getox 29. Jul 2022 13:13

Ich habe schlimme Dinge [im Quellcode] gesehen :D
 
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 :D

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?

DP-Maintenance 29. Jul 2022 13: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ü 29. Jul 2022 13:40

AW: Ich habe schlimme Dinge gesehen :D
 
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.

Getox 29. Jul 2022 13:46

AW: Ich habe schlimme Dinge gesehen :D
 
Zitat:

Zitat von TiGü (Beitrag 1509487)
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.

:-D:-D:-D

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.

dummzeuch 29. Jul 2022 14:16

AW: Ich habe schlimme Dinge [im Quellcode] gesehen :D
 
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));

haentschman 30. Jul 2022 08:12

AW: Ich habe schlimme Dinge [im Quellcode] gesehen :D
 
...oh, da habe ich auch einen Eigenen. :lol:
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. :oops:

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

Uwe Raabe 30. Jul 2022 10:10

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

Zitat von haentschman (Beitrag 1509503)
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.

Monday 30. Jul 2022 12:21

AW: Ich habe schlimme Dinge [im Quellcode] gesehen :D
 
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.

himitsu 30. Jul 2022 12:33

AW: Ich habe schlimme Dinge [im Quellcode] gesehen :D
 
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 > ....

himitsu 27. Aug 2022 17:06

AW: Ich habe schlimme Dinge [im Quellcode] gesehen :D
 
ich hab grad was Schlimmes gemacht ... nennt sich
Delphi-Quellcode:
public class threadvar
:oops:


Alle Zeitangaben in WEZ +1. Es ist jetzt 07:05 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