Nur kurz:
1. Übermäßiges benutzen von goto macht den Code schlechter lesbar. Das ist wie mit Asbest: Am Anfang klingt das nach ner tollen Idee, aber wenn man dann nach ein paar Jahren nochmal ran soll hat man den Salat. Als "dosiertes Verwenden" lasse ich hier vielleicht so ein goto auf 30000 Zeilen gelten. Und man tut sich selbst i.d.R. einen Bärendienst, weil das dann "Einwegcode" wird. Möchte man in nem Jahr nochmal etwas größeres dran ändern ist das
Horror.
2. Im Grunde siehe oben. Macht den Code tendenziell schwerer nachzuvollziehen und geht somit in die Richtung "Heute spare ich 15min, kostet mich morgen 1h. Aber erst morgen!!"
3. Äh ja, sobald du was anderes als Strings hast? Gibt so Zahlen und so
Auch wenn du lange Listen mit Daten hast und eine Art "Filterfunktion" anbringst: Du entfernst einfach alle Daten aus der Anzeige, die nicht mit dem Filter übereinstimmen. Aber ja, das ist auch wieder ne Frage wie komplex das Programm ist. Zudem wird das Testen und umwandeln einfacher: Die eine Funktionalität auch als Konsolenprogramm? Kein Problem: Funktion rüberkopieren und ein bisschen Eingabelogik in die Main-Function.
Oh, ein Bug aufgetaucht? Einmal fixen, copy paste zurück. Ein Level weiter ist dann, dass sich beide Versionen Quelltextdateien teilen. und somit wirklich den gleichen Algorithmus benutzen.
Allgemein hat das also eher mit der Komplexität zu tun: Bei einfachen Programmen kann man sich auch leicht wieder reindenken. Bei großen Programmen geht das nicht so einfach, da spielt dann die Wartbarkeit eine tragende Rolle.
Zitat:
Gerade bei meinen 1-Mann-Projekten und begrenzten Programmierfähigkeiten ist es wichtig, den/die Quellcode(s) möglichst kompakt zu halten.
Sehe ich als Fehlschluss. Leerzeilen und sprechende Typnamen tragen wesentlich zum Verständnis bei. Lieber ein bisschen mehr in Funktionen aufteilen und eigene Klassen erstellen als LOC-Minimierung zu betreiben.
Hehe, ich habe mir gerade mal Codemetriken von VS generieren lassen, für mein aktuelles Projekt:
Zitat:
Projekt: SecretWorldDominiation
Bereich: Namespace
Namespace: SecretWorldDominiation
Wartbarkeitsindex: 82
Zyklomatische Komplexität: 354
Vererbungstiefe: 7
Klassenkopplung: 172
Codezeilen: 1.657
Die Zeilen sind auf 16 Dateien aufgeteilt. (Fast jeder Klasse wurde eine eigene Datei spendiert)
Jetzt bräuchte ich da nur noch Vergleichswerte