Ich habe eine Open-Source-Bibliothek geschrieben, die strukturierte Daten analysiert, aber die Wagenrücklauferkennung absichtlich ausgelassen hat, weil ich den Punkt nicht verstehe. Es erhöht die Komplexität und den Overhead bei geringem / keinem Nutzen.
Zu meiner Überraschung reichte ein Benutzer einen Fehler ein, bei dem der Parser nicht funktionierte, und ich stellte fest, dass die Daten CR-Zeilenenden im Gegensatz zu LF oder CRLF verwendeten.
Verwendet OSX seit dem Umstieg auf eine Unix-basierte Plattform keine Zeilenenden im LF-Stil?
Ich weiß, dass es Anwendungen wie Notepad ++ gibt, in denen die Zeilenenden so geändert werden können, dass CR explizit verwendet wird, aber ich verstehe nicht, warum jemand dies möchte.
Ist es sicher, die Unterstützung für den statistisch nicht signifikanten Prozentsatz der Benutzer auszuschließen, die sich (aus welchen Gründen auch immer) für die alten Zeilenenden im Mac OS-Stil entscheiden?
Aktualisieren:
Zur Verdeutlichung erfordert die Unterstützung von Windows-Zeilenenden (z. B. CRLF) keine CR-Token-Erkennung. Aus Effizienzgründen wird der Lexer auf Zeichenbasis abgeglichen. Durch das unbeaufsichtigte Ignorieren von CR-Zeichen wird das CRLF-Token zu LF vereinfacht. Das CRLF-Token selbst könnte als ein eigener Anachronismus betrachtet werden, aber darum geht es in dieser Frage nicht.
Das letzte Betriebssystem, das systemweite Unterstützung für Zeilenenden im CR-Stil bot, war Mac OS 9 . Ironischerweise ist Microsoft Excel die einzige Anwendung, die es noch als Standard in OSX verwendet.
quelle
CR
Zeilenumbrüche in Ihre Codebasis zu schaufeln . (... und wenn Sie der festen Überzeugung sind, dass dies nicht der Fall ist, muss das Design Ihres Parsers ziemlich hektisch sein)Antworten:
Es gibt eine gute Praxis, bei der Sie "liberal in dem sind, was Sie akzeptieren, und konservativ in dem, was Sie senden" .
Mit anderen Worten, wenn es eine Chance gibt (wie klein sie auch sein mag), dass Ihnen jemand ein Cr-Zeilenende gibt (und davon ausgeht, dass es korrekt funktioniert), müssen Sie es unterstützen.
TBH, ich kann nicht sehen, wie lange das Hinzufügen von CR-Unterstützung dauern würde.
Wenn Sie
cr
im Lexer einen Blick auf das nächste Zeichennl
werfen, und wenn dies der Fall ist , schlucken Sie die neue Zeile und geben Sie einen neuen Zeilentoken aus, wenn das nächste Zeichen nichtnl
nur ein neuer Zeilentoken ist, und fahren Sie fort.quelle
Nein. CR ist nicht veraltet (definiert als "nicht mehr hergestellt oder verwendet"). Das haben Sie selbst bewiesen. Es ist vielleicht ungewöhnlich , aber nicht veraltet .
Wie für "Ist es sicher , Unterstützung auszuschließen" für CR? Wie Sie sagen, es geht nicht darum, Verkäufe zu verlieren, und Sie können nicht jede seltsame Zeichenkombination und jedes Dateiformat auf der Welt unterstützen, und nur Sie kennen Ihre Software und Ihre Benutzerbasis. Ich würde also sagen, dass es sicher ist, es auszuschließen, wenn Sie überzeugt sind, dass die Supportlast, wenn Sie es nicht hinzufügen (wie mouviciel erklärt), die Zeitlast, die mit dem Hinzufügen verbunden ist, nicht überwiegt. Aber ohne viel mehr über das Produkt und die Anwenderbasis zu wissen, weiß ich nicht, wie ich es genauer beschreiben soll.
quelle
Über Faulheit: Sie müssen ausbalancieren:
Bemühen Sie sich, den Code so zu ändern, dass CR sicher gehandhabt wird (und vergessen Sie es dann).
Erklären Sie den Benutzern, warum die Dateien, mit denen sie jahrzehntelang zufrieden waren, Ihre App plötzlich zum Absturz bringen, finden Sie Problemumgehungen, die sie verwenden können, ohne Ihren Umsatz zu beeinträchtigen, und fragen Sie hier nach Argumenten und Kommentaren.
Es liegt an Ihnen zu entscheiden, welcher Weg der faulste ist.
quelle
Vielleicht werden es nicht zu viele Benutzer bemerken, aber es befindet sich ein Elefant im Raum: Windows-Zeilenenden (
CRLF
). Wenn Sie diese unterstützen (das tue ich im Allgemeinen, obwohl ich nur Windows für Spiele verwende), sollte es trivial sein, den dritten Teil dieses historischen Bermuda-Dreiecks zu unterstützen.Wenn Sie so etwas nicht unterstützen, sollten Sie es zumindest in der Dokumentation erwähnen ("Dies ist kein Bug" -Stil) und erfahren, wie Sie Dateien so ändern können, dass sie mit Ihrem Tool auf einfachste Weise funktionieren (
dos2unix
zum Beispiel).quelle
CRLF
- es ist die Standardzeile, die auf diesem Betriebssystem endet. Und es gibt keine Möglichkeit, die Quelle einer .csv-Datei zu garantieren, sodass sie möglicherweise auf einem Windows-System erstellt wurde.Es gibt viele serielle Geräte, die darauf angewiesen sind, dass
CR
der Datenstrom vor demETX
Senden beendet wird. Es ist eine Konvention, die niemals vergehen wird.quelle
Ich würde die Anfrage als jede Feature-Anfrage behandeln, bei der Sie die Kosten gegen die Vorteile abwägen müssen.
Wenn genau eine Person um CR-Unterstützung gebeten hat, ist dies möglicherweise nicht erforderlich. Im folgenden Buchkapitel finden Sie Informationen zu 37 Signalen, in denen Sie sich nur um sehr beliebte Funktionsanforderungen kümmern sollten.
http://gettingreal.37signals.com/ch05_Forget_Feature_Requests.php
quelle
MS-Betriebssysteme ab MSDOS verwenden die Kombination CR + LF als Zeilentrennzeichen (ich denke hauptsächlich an Matrixdrucker, die sie benötigen).
Also ja, es ist ein Mist, aber du brauchst immer noch Unterstützung für das verdammte Ding.
quelle