Eu escrevi uma biblioteca de código-fonte aberto que analisa dados estruturados, mas intencionalmente exclui a detecção de retorno de carro porque não vejo o ponto. Ele adiciona complexidade e custos adicionais para pouco ou nenhum benefício.
Para minha surpresa, um usuário enviou um bug em que o analisador não estava funcionando e eu descobri que a causa do problema era que os dados usavam finais de linha CR em oposição a LF ou CRLF.
O OSX não usa terminações de linha no estilo LF desde a mudança para uma plataforma baseada em unix?
Eu sei que existem aplicativos como o Notepad ++, onde as terminações de linha podem ser alteradas para usar o CR explicitamente, mas não vejo por que alguém iria querer.
É seguro excluir o suporte para a porcentagem estatisticamente insignificante de usuários que decidem (por qualquer motivo) os finais de linha antigos no estilo Mac OS?
Atualizar:
Para esclarecer, o suporte às terminações de linha do Windows (ou seja, CRLF) não requer reconhecimento de token CR. Para fins de eficiência, o lexer corresponde por char. Ignorando silenciosamente os caracteres CR, o token CRLF simplifica para LF. Dessa forma, o próprio token CRLF pode ser considerado um anacronismo por si só, mas não é disso que se trata esta pergunta.
O último sistema operacional que forneceu suporte em todo o sistema para terminações de linhas no estilo CR foi o Mac OS 9 . Ironicamente, o único aplicativo que ainda o usa como padrão no OSX é o Microsoft Excel.
fonte
CR
novas linhas em sua base de código. (... e se você acredita firmemente este não é o caso, o design do seu analisador deve ser bastante agitado)Respostas:
Há uma boa prática em que você é "liberal no que aceita e conservador no que envia" .
Em outras palavras, se houver uma chance (por menor que seja) de alguém lhe dar um final de linha cr (e esperar que funcione corretamente), você precisará apoiá-lo.
TBH, não vejo como a adição de suporte a CR levaria tanto tempo.
Quando você
cr
vir um lexer, espreitar o próximo caractere e, se for umnl
, engula a nova linha e emita um token de nova linha, se o próximo caractere não fornl
apenas emitir um token de nova linha e continuar.fonte
Não. O CR não é obsoleto (definido como "não é mais produzido ou usado"). Você mesmo forneceu evidências disso. Talvez seja incomum , mas não obsoleto .
Quanto a "é seguro excluir suporte" para CR? Como você diz, não se trata de perder vendas, e você não pode suportar todas as combinações estranhas de caracteres e formatos de arquivo do mundo, e somente você conhece seu software e sua base de usuários. Então, eu diria que seria seguro excluí-lo se você estiver convencido de que a carga de suporte de não adicioná-la (como o mouviciel explica) não supera a carga de tempo de adicioná-lo. Mas, sem saber muito mais sobre o produto e a base de usuários, não sei como ser mais específico.
fonte
Sobre preguiça: você precisa equilibrar:
esforço na alteração do código para que o CR seja tratado com segurança (e depois esqueça).
esforço para explicar aos usuários por que os arquivos com os quais eles ficaram satisfeitos por décadas repentinamente travam seu aplicativo, encontrando soluções alternativas que eles podem usar sem comprometer suas vendas e solicitando argumentos e respondendo aos comentários aqui.
Cabe a você decidir qual caminho é o mais preguiçoso.
fonte
Talvez não sejam detectados muitos usuários, mas há um elefante na sala: finais de linha do Windows (
CRLF
). Se você os apoia (geralmente, embora apenas use o Windows para jogos), deve ser trivial apoiar a terceira parte desse histórico triângulo das Bermudas.Se você não suporta algo como isso, pelo menos mencione-o na documentação (estilo "Isso não é um bug") e como alterar os arquivos para trabalhar com sua ferramenta da maneira mais simples possível (
dos2unix
por exemplo).fonte
CRLF
- é a linha padrão que termina nesse SO. E não há como garantir a origem de um arquivo .csv, portanto ele poderia ter sido criado com facilidade em um sistema Windows.Existem muitos dispositivos seriais que dependem
CR
do fluxo de dados antes doETX
envio. É uma convenção que nunca irá embora.fonte
Eu trataria a solicitação como qualquer solicitação de recurso em que você precise pesar os custos e os benefícios.
Se exatamente uma pessoa solicitou suporte de RC, talvez não seja necessário. Veja o capítulo abaixo do livro, com 37 sinais, onde eles dizem que você deve se preocupar apenas com solicitações de recursos muito populares.
http://gettingreal.37signals.com/ch05_Forget_Feature_Requests.php
fonte
Os sistemas operacionais MS a partir de MSDOS usam a combinação CR + LF como um separador de linhas (acho que principalmente por causa das impressoras matriciais que precisam delas).
Então, sim, é uma chatice, mas você ainda precisa de apoio para a maldita coisa.
fonte