Eu acho que "" (sic) codificado permanentemente sempre que checar uma string vazia não é tão bom.
Abordagem de código limpo
Fazer isso: foo == ""
é uma prática muito ruim. ""
é um valor mágico. Você nunca deve verificar valores mágicos (mais conhecidos como números mágicos )
O que você deve fazer é comparar com um nome descritivo de variável.
Nomes de variáveis descritivos
Pode-se pensar que "empty_string" é um nome de variável descritivo. Não é .
Antes de você ir e fazer empty_string = ""
e achar que tem um ótimo nome de variável para comparar. Não é isso que "nome descritivo da variável" significa.
Um bom nome de variável descritiva é baseado em seu contexto. Você tem que pensar sobre o que a cadeia vazia é .
- De onde isso vem.
- Por que está aí?
- Por que você precisa verificar isso?
Exemplo de campo de formulário simples
Você está criando um formulário em que um usuário pode inserir valores. Você deseja verificar se o usuário escreveu algo ou não.
Um bom nome de variável pode ser not_filled_in
Isso torna o código muito legível
if formfields.name == not_filled_in:
raise ValueError("We need your name")
Exemplo completo de análise de CSV
Você está analisando arquivos CSV e deseja que a sequência vazia seja analisada como None
Como o CSV é inteiramente baseado em texto, ele não pode ser representado None
sem o uso de palavras-chave predefinidas.
Um bom nome de variável pode ser CSV_NONE
Isso facilita a alteração e a adaptação do código se você tiver um novo arquivo CSV que represente None
outra string que não""
if csvfield == CSV_NONE:
csvfield = None
Não há dúvidas sobre se esse trecho de código está correto. É bastante claro que ele faz o que deve fazer.
Compare isso com
if csvfield == EMPTY_STRING:
csvfield = None
A primeira pergunta aqui é: por que a string vazia merece tratamento especial?
Isso diria aos futuros codificadores que uma string vazia sempre deve ser considerada como None
.
Isso ocorre porque ele combina a lógica de negócios (que valor CSV deve ser None
) com a implementação do código (com o que estamos realmente comparando)
É preciso haver uma separação de preocupações entre os dois.
""
não é tão bom?