Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!
Werbeanzeige
Also mir passiert hier sowas häufig. Leider wurde zwölf Jahre an dem Programm gearbeitet und ich bin erst ein Jahr hier. Viele Stellen im Programmcode sind absolut unverständlich. Das liegt auch daran das das Design teilweise nicht klar ist. Aber wenn ein Programm wächst, lässt sich das schwer vermeiden. Es wäre schön wenn in dem Programm eine klare Linie erkennbar wäre, ist es aber nicht. Und so sieht die Realität in der Regel leider aus. Nun gut, wir sprechen hier auch nicht von einem Hobby Projekt, sondern von einer sehr großen Software die von vielen verschiedenen Leuten geschrieben wurde.Natürlich ist IntelliSense nur ein tolles aber nicht immer verfügbares Feature und es gibt sicherlich Sitationen wo ein Name nicht so eindeutig sein mag. Ich habe aber in all den Jahren in denen ich mich jetzt mit Programmieren beschäftige noch nie eine Situation erlebt in der Ungarische Notation irgendetwas lesbarer gemacht hätte. Eigentlich war imo durchgehend das Gegenteil der Fall. Meiner Erfahrung nach ist, wie gesagt, wenn ein Name nicht eindeutig ist, praktisch immer entweder der Name schlecht oder der Kontext in dem er verwendet wird schlecht gewählt (d.h. das Problem mit dem uneindeutigen Name wäre in einem anderen, besseren Programmdesign nicht vorhanden).
Klingt zwar ganz cool, aber irgendwie hinkt der Vergleich, oder?
Du sagst die Software ist stellenweise schlecht designt und begründest damit den Einsatz von UN. Das ist als ob du versuchst die Morde eines Serienkillerst zu verhindern in dem du die potentiellen Opfer tötest.
Community-Fossil
Beruf: Teamleiter Mobile Applikationen & Senior Software Engineer
Kannst Du mal ein Beispiel machen, bei dem ersichtlich wird, ob es sich um eine lokale Variable, einen Parameter oder um ein Attribut handelt? Das sehe ich nämlich irgendwie nicht, wenn ich z.B. an einen Login-Handler denke, der ein Passwort-Attribut hat, das gleiche aber auch als lokale Variable existieren könnte. Ohne differenzierte Schreibweise sehe ich nicht, wie man da einen Bezeichner so wählen kann, dass der Scope ersichtlich wird. Oder habe ich dich da eventuell falsch verstanden? (über Scope hast Du ja in diesem Quote nicht direkt gesprochen, das war in einem älteren)
Wenn deine Funktionen so lang und unübersichtlich sind dass man den Überblick über die lokalen Objekte verliert dann ist das wiederum ein Indikator für ein Designproblem (die Klasse tut zuviel => schlechter Kontext). Anstatt alles mit ungarischer Notation zu pflastern sollte man dann lieber versuchen den Code so umzustrukturieren dass er übersichtlich wird.
...
Die Module in denen keine Notation benutzt wurde werden von allen gemieden.
Ich rede jetzt nicht von "oVar" oder "fVar" oder "iVar" oder "cVar", sondern von "m_Var" und "m_pVar" oder sonstigem. Oder benennst du Eigenschaften einer Klasse etwa ganz normal?
C-/C++-Quelltext |
|
1 |
QMap<int, QString>* m_p_istrmap_blablubb |
Werbeanzeige