Einzelnen Beitrag anzeigen
  #29 (permalink)  
Alt 10.05.2012, 20:10
mermshaus mermshaus ist offline
Erfahrener Benutzer
XHTMLforum-Mitglied
 
Registriert seit: 13.07.2006
Beiträge: 745
mermshaus ist ein wunderbarer Anblickmermshaus ist ein wunderbarer Anblickmermshaus ist ein wunderbarer Anblickmermshaus ist ein wunderbarer Anblickmermshaus ist ein wunderbarer Anblickmermshaus ist ein wunderbarer Anblick
Standard

Zitat:
Zitat von Tarbo
Ich würde mir wünschen, dass nicht einfach der Quellcode angegriffen wird, sondern man mal das System selbst installiert und anschaut.
Entwickler stellen eben andere Ansprüche als Nutzer, und die meisten Leute hier sind wohl primär Entwickler.

Entwickler sind in dem, was sie einsetzen, konservativ und skeptisch. Das liegt daran, dass sie diejenigen sind, die etwaige Probleme lösen und Fehler beheben müssen.

Da wird auf andere Dinge Wert gelegt, als es ein reiner Nutzer tun würde.

Was die Debatte um OOP angeht: Wenn du Linus Torvalds bist und den Linux Kernel programmierst oder wenn du Drupal-Kern-Entwickler bist und dir sehr viele Gedanken zu Designkonzepten und Architekturfragen gemacht hast, brauchst du nicht zwingend syntaktisch durchgesetzte OOP-Konzepte. Damit steht und fällt „guter“ Code nicht. Ein Konzept wie MVC setzt etwa nicht OOP voraus. Es ist aber tendenziell definitiv so, dass ein Verzicht auf OOP-Syntax ein Indikator ist, der erfahrene Leser skeptisch werden lässt. (Den zugehörigen Exkurs spare ich mir an dieser Stelle.)

Ich habe mir den Code noch mal vorgenommen und schildere einfach mal einige Eindrücke.

In der index.php schreien die großen Kontrollstruktur-Konstrukte danach, in Funktionen gekapselt zu werden. Wenn ein Geltungsbereich 300 Zeilen (plus Includes) umfasst, muss ich als Leser davon ausgehen, dass Variablen, die zu Beginn gesetzt werden, am Ende noch relevant sind. Wenn du den Code in Funktionen kapselst, brauche ich als Leser nur einen viel kleineren Teil zu überblicken, weil die jeweiligen Schnittstellen und Geltungsbereiche abgegrenzt sind.

Außerdem kann ich entscheiden, welche Variablen nur lokale Relevanz haben, um Werte kurzfristig zu speichern, und welche Variablen „globaler“ genutzt werden. Das geht im Prinzip gleich mit der allerersten Zeile los. Ich muss das gesamte Projekt nach $cms_dir durchsuchen, um festzustellen, dass die Variable nur in index.php und admin/include/ini.php genutzt wird.

Das ist ein generelles Problem mit Code im globalen Gültigkeitsbereich.

Eine Funktion wäre zudem losgelöst testbar, was mit diesem Gesamtkonstrukt schlicht und ergreifend unmöglich ist. Tests existieren dann konsequenterweise auch nicht, was ein ganz dickes Minus ist.

Ich habe jetzt admin/include/ini.php mal aufgemacht (Include ist zweite Codezeile in index.php) und die Zahl der Zeilen dieses Geltungsbereichs hat sich auf ca. 500 (plus weitere Includes) erhöht.

Da habe ich aufgegeben zu lesen, weil mir der Überblick fehlte.

In dem Kontext: „The McCabe complexity of 'article_delete' is 59.“ Ohne groß zu suchen, habe ich noch zwei um 30 rum gefunden.

So ab 10 sieht man Code als kritisch an.

- McCabe's cyclomatic complexity
- Cyclomatic complexity - Wikipedia, the free encyclopedia

Beides ist eine Folge fehlender Kapselung. Die Kapselung fehlt vermutlich deshalb, weil du kein OOP nutzt.

Auch Ansätze eines Models kann ich nicht wirklich erkennen. DB-Abfragen stehen ausformuliert immer dort, wo sie gerade benötigt werden. Das macht die Beiträge von beispielsweise David sehr richtig und deine Erwiderungen hinsichtlich der „Geschmacksfrage“ ehrlich gesagt sehr falsch.

Du missachtest etliche Programmiergrundsätze, was die Verstehbarkeit, die Testbarkeit und die Wartbarkeit deines Codes ganz extrem reduziert.

Das ist natürlich auch alles konstruktiv gemeint und meine subjektive Meinung.

Geändert von mermshaus (10.05.2012 um 20:52 Uhr) Grund: Formulierungen etwas entschärft
Mit Zitat antworten
Sponsored Links