quinta-feira, 12 de fevereiro de 2015

2.4 - Recomendação sobre escolha de nomes de arquivos e variáveis.

Lin e Win são parcialmente (in)compatíveis no que tange à codificação de caracteres. Em geral o primeiro usa UTF-8, o segundo ISO8859-1, ou ISO8859-15 ou CP-1252.

Todas essas codificações são compatíveis com a ASCII de 7 bits, que codifica caracteres romanos: minúsculas, maiúsculas, números e a maioria dos sinais de pontuação.

Caracteres acentuados e o cedilha não são compatíveis.

Pendrives usam FAT, que codifica os nomes em 8.3 sem distinção de maiúsculas e minúsculas e usa um artifício (que não pesquisei qual é) para manter os "long file names".

Na linha de comando e shell scripts caracteres com significado especial como barra, espaço, e-comercial, arroba ou não são válidos ou precisam ser "escapados". Os caracteres inválidos para Windows não são os mesmos para Linux.

Esse cenário traz problemas em potencial, como arquivos que podem ser lidos em um SO mas não no outro, tentativas (automáticas) de "reparo" que acabam por "quebrar" os nomes para todos os SO, avisos "falsos" de que "há um problema nesta unidade", ...

Em meio a isto, há programadores que tentam armazenar informação demais nos nomes dos arquivos, por exemplo nome completo separado por espaços, número usp entre parêntesis, número da turma, ou o nome completo de palestra, palestrante data de exibição, ... construindo um nome longuíssimo.

A informação pode ser útil e facilitar o trabalho de quem lê o nome, mas aumenta a chance de problemas e dificulta escrever programas (principalmente shell scripts).

Caso queira previnir-se de "dores de cabeça" associadas a problemas com codificação de caracteres, fique nas maiúsculas, minúsculas e números. Traço (subtração) e underscore também são seguros. Evite espaços, sinais de pontuação e caracteres especiais.

Para considerações sobre nomes de variáveis, veja o post sobre "que editor de texto usar".

Lembre que em Java o nome do arquivo tem que coincidir com o nome da classe que contém, se esta for pública.

Nenhum comentário:

Postar um comentário