Espaço entre sinal negativo e nome da variável

8

Tentei fazer uma pesquisa no Google, bem como pesquisar neste site do Stack Exchange, mas não consegui encontrar uma pergunta relacionada diretamente a isso.

O Guia de Estilo PEP 8 para Código Python possui muitas recomendações de bom estilo, no entanto, acho que elas não mencionam nada sobre se um espaço entre um sinal de menos ou negativo ( -) e um nome de variável seria mais ou menos legível.

Questão

É uma questão (muito) menor, mas qual é considerada mais legível?

  • false_positive = -true_positive
  • false_positive = - true_positive

Motivação

Peço para não ser trivial, mas porque nos meus cursos de matemática anteriores, muitas vezes me vejo sem perceber o sinal negativo em equações importantes, como a equação para calcular a entropia :

fórmula de entropia

Muitas vezes, não percebo o -sinal antes do somatório, portanto, é desejável destacá-lo.

Wesley Baugh
fonte
Nunca vi alguém escrever matemática ou código com um espaço entre a negação e seu operando.
Thomas Eding

Respostas:

12

Não encontrei nada sobre isso no guia de estilos do Python, como você disse, mas a pesquisa por "espaçamento unário do operador" trouxe mais ocorrências de vários idiomas, como o Javascript :

Nenhum espaço deve separar um operador unário e seu operando, exceto quando o operador for uma palavra como typeof.

Ou isso para C :

Não use espaços ao redor de operadores unários, exceto sizeof e elencos

No kernel do Linux :

Use um espaço ao redor (de cada lado) da maioria dos operadores binários e ternários, [...] mas não há espaço após os operadores unários:

Observe que um estilo de escrita para código , que geralmente é escrito com uma fonte de largura fixa e principalmente caracteres latinos, é bastante diferente do das equações, nas quais você pode encontrar letras latinas e gregas, construções topológicas, como frações ou marcas ao redor. esse epsilon que você tem lá e outras coisas que os tornam muito mais complexos que o código.

Avner Shahar-Kashtan
fonte
Obrigado pela pesquisa e pelas palavras-chave adicionais ("operador unário") que ajudarão em futuras pesquisas!
Wesley Baugh #
1

Já deparei com isso antes e usei

var false_positive = 0 - true_positive

para garantir que a intenção seja clara. Essa é a forma mais legível.

jeffbeat
fonte
0

Eu acho que o segundo é marginalmente menos ruim, porque o sinal de menos é um pouco menos provável de ser lido como parte da palavra; No entanto, acho que as duas formas são ruins.

Eu substituiria a coisa toda por

false_positive = -1 * true_positive

ou mesmo

false_positive = (-1) * true_positive

em qualquer idioma.

aviv
fonte
1
É uma boa ideia, mas a multiplicação é mais cara do que a adição, então eu gosto do @ jeffbeat é 0 - true_positivemelhor porque mostra o ponto de uma maneira que é mais eficiente para a máquina processar.
precisa saber é o seguinte