4.8 KiB
Refactoring-Optionen
1. prepareValue reparieren + tote parseNumber-Funktion entfernen
Dateien: hugo/static/js/converter.js
prepareValue() macht input.replace(/,/g, '.'). Bei deutscher Eingabe 1.000,50 wird
daraus der ungültige String 1.000.50 – new Decimal() wirft einen Fehler und die
Reaktivität bricht. Die Funktion parseNumber() (wird nirgends verwendet) würde das
korrekt parsen.
Vorschlag: Logik von parseNumber in prepareValue übernehmen, parseNumber
löschen.
Effekt: Bugfix + Tote-Code-Eliminierung.
2. Überzähliges schließendes </div> in Conversion-Seite entfernen
Datei: hugo/layouts/conversion/single.html
Vor dem abschließenden {{ end }} steht ein </div> ohne zugehöriges öffnendes
Element in dieser Template-Datei. Das erzeugt invalides HTML.
Effekt: HTML-Korrektheit, weniger Fragilität.
3. Toten intermediate-Engine-Zweig aus Formel-Template entfernen
Datei: hugo/layouts/partials/conversion-formula.html
Keine JSON-Datendatei verwendet "conversion_engine": "intermediate". Der komplette
else if eq .Params.engine "intermediate"-Block wird niemals ausgeführt.
Effekt: Reduziert Template-Logik um ~20 Zeilen toten Code.
4. Engine-Partial dynamisch statt per if/else laden
Datei: hugo/layouts/conversion/single.html
Statt dreier verschachtelter if/else zur Auswahl des Data-Partials:
{{ if eq $engine "currencies" }} ... {{ else if eq $engine "temperatures" }} ... {{ else }} ... {{ end }}
reicht ein dynamischer Partial-Aufruf:
{{ partial (printf "conversion/%s-data" $engine) . }}
Effekt: Entfaltet 3 Ebenen verschachtelte Template-Logik.
5. SVG-Ladepattern in eigenes Partial extrahieren
Dateien: hugo/layouts/index.html, hugo/layouts/404.html,
hugo/layouts/partials/unit-dropdown.html
Diese drei Dateien wiederholen identisch:
{{ $svgPath := printf "img/%s.svg" $data.slug }}
{{ $svgFile := readFile (printf "static/%s" $svgPath) }}
{{ if $svgFile }}{{ $svgFile | safeHTML }}{{ else }}<span></span>{{ end }}
Vorschlag: hugo/layouts/partials/icon.html mit (dict "slug" $data.slug).
Effekt: DRY, Änderungen am Icon-Loading zentral.
6. Wiederholte Select-Optionen-Logik in Partial auslagern
Datei: hugo/layouts/conversion/single.html
Die Dropdowns für „von“ und „in“ enthalten nahezu identische range-Schleifen mit
nur leicht unterschiedlichen Variablen.
Vorschlag: hugo/layouts/partials/unit-options.html via Parameter
(dict "mode" "from" ...) steuern.
Effekt: Weniger Redundanz, geringere Fehleranfälligkeit bei Änderungen.
7. category-url.html entminifizieren
Datei: hugo/layouts/partials/category-url.html
Aktuell 1 Zeile, 260+ Zeichen ohne Umbrüche. Das ist die komplexeste Logik der Seite (Finden des ersten und zweiten verfügbaren Units), aber völlig unlesbar.
Effekt: Deutlich bessere mentale Parsbarkeit.
8. URL-Wert-Normalisierung deduplizieren + 0-Inkonsistenz fixen
Datei: hugo/static/js/converter.js
updateUrl und navigate wiederholen die Komma-zu-Punkt-Ersetzung. Zudem verhält
sich updateUrl("0") anders als navigate(url, "0") (ersteres setzt ?v=1,
letzteres ?v=0).
Vorschlag: Eine gemeinsame Funktion normalizeUrlValue(value) extrahieren.
Effekt: DRY + Konsistenzfix.
9. Redundantes new Decimal(v) in linear-data entfernen
Datei: hugo/layouts/partials/conversion/linear-data.html
convert: v => new Decimal(v).times(...) – v kommt bereits als Decimal aus
prepareValue. Temperaturen und Währungen nutzen v direkt.
Effekt: Konsistentes Verhalten über alle Engines.
10. _content.gotmpl in Teil-Partials splitten
Datei: hugo/content/_content.gotmpl
Die Datei ist 140+ Zeilen lang und mischt drei Konzerne: Währungs-Page-Generierung, Linear-Page-Generierung und Temperaturen-Page-Generierung.
Vorschlag:
hugo/layouts/partials/content-generators/currencies.html,
linear.html, temperatures.html.
Effekt: Besseres Verständnis des Bauprozesses, leichteres Testen einzelner Generatoren.
11. Stille Fehler bei Währungs-Fetch im Build loggen
Datei: hugo/layouts/partials/available-currencies.html
Der Fehlerfall von resources.GetRemote wird abgefangen, aber nicht geloggt
({{ with .Err }}{{ end }}). _content.gotmpl macht das besser mit warnf.
Effekt: Einfacheres Debuggen bei Build-Zeit-Fehlern.
Nicht empfohlen
- SEO-Text-Partials vereinheitlichen: 155 Dateien unter
partials/texts/. Die sind inhaltsgetrieben, keine Code-Redundanz. - Alle
conversion_engineDefaults aus JSON entfernen: Theoretisch defaultbar, aber die explizite Deklaration in jeder Datei ist defensiver und selbsterklärend.