# 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 `` in Conversion-Seite entfernen **Datei:** `hugo/layouts/conversion/single.html` Vor dem abschließenden `{{ end }}` steht ein `` 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: ```html {{ if eq $engine "currencies" }} ... {{ else if eq $engine "temperatures" }} ... {{ else }} ... {{ end }} ``` reicht ein dynamischer Partial-Aufruf: ```html {{ 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: ```html {{ $svgPath := printf "img/%s.svg" $data.slug }} {{ $svgFile := readFile (printf "static/%s" $svgPath) }} {{ if $svgFile }}{{ $svgFile | safeHTML }}{{ else }}{{ 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_engine` Defaults aus JSON entfernen:** Theoretisch defaultbar, aber die explizite Deklaration in jeder Datei ist defensiver und selbsterklärend.