CodeSOD: Contracting Space Notiz

CodeSOD: Contracting Space

Ein dringendes Ticket meldete fehlerhafte Leerzeichen in Produktionsdaten. Mike P. verfolgte das Problem zu einer benutzerdefinierten trim-Funktion in Strings.java. Diese selbst entwickelte Funktion war ineffizient und fehlerhaft und ersetzte unnötigerweise Leerzeichenfolgen durch einzelne Leerzeichen. Bemerkenswert ist, dass sie für Zeichenketten, die ausschließlich aus Leerzeichen bestanden, null zurückgab, was nicht dem beabsichtigten Benutzerverhalten entsprach. Das Kernproblem ergab sich aus Entwicklern, die Anforderungen erfanden, die Benutzer nie wünschten, was zu unerwarteter Datenmanipulation führte. Die benutzerdefinierte trim-Funktion versagte auch bei der Handhabung verschiedener Leerzeichen über Unicode 20 hinaus. Benutzer, die an das frühere Verhalten der Anwendung gewöhnt waren, gerieten in Panik, als die Leerzeichen zu verschwinden begannen. Die ursprüngliche Absicht war wahrscheinlich, führende/nachfolgende Leerzeichen zu kürzen, nicht die internen Abstände zu entfernen. Dieser Fehler blieb aufgrund der Historie der Anwendung und des Mangels an Tests für solche Randfälle unbemerkt. Die Situation verdeutlicht die Gefahren, bestehende Funktionalitäten mit fehlerhaften benutzerdefinierten Implementierungen neu zu erfinden.