Espacio entre signo negativo y nombre de variable

8

Intenté hacer una búsqueda en Google, así como buscar en este sitio de Stack Exchange, pero no pude encontrar una pregunta relacionada directamente con esto.

La PEP 8 - Guía de estilo para Python Code tiene muchas buenas recomendaciones de estilo, sin embargo, no creo que mencionen nada sobre si un espacio entre un signo negativo o negativo ( -) y un nombre variable sería más o menos legible.

Pregunta

Es un problema (muy) menor, pero ¿cuál se considera más legible?

  • false_positive = -true_positive
  • false_positive = - true_positive

Motivación

Pido no ser trivial, pero porque en mis cursos de matemáticas anteriores a menudo me encuentro sin notar el signo negativo en ecuaciones importantes, como la ecuación para calcular la entropía :

fórmula de entropía

A menudo no noto el -signo antes de la suma, por lo que sería deseable que se destaque.

Wesley Baugh
fuente
Nunca he visto a nadie escribir matemáticas o código con un espacio entre la negación y su operando.
Thomas Eding

Respuestas:

12

No pude encontrar nada al respecto en la guía de estilo de Python, como dijiste, pero la búsqueda de "espacio de operador unario" trajo más resultados de varios idiomas, como este para Javascript :

Ningún espacio debe separar un operador unario y su operando, excepto cuando el operador es una palabra como typeof.

O esto para C :

No use espacios alrededor de operadores unarios, excepto sizeof y yesos

En el kernel de Linux :

Use un espacio alrededor (a cada lado de) la mayoría de los operadores binarios y ternarios, pero no [...] espacio después de los operadores unarios:

Tenga en cuenta que un estilo de escritura para el código , que generalmente se escribe con una fuente de ancho fijo y en su mayoría caracteres latinos, es bastante diferente al de las ecuaciones, donde puede encontrar letras latinas y griegas, construcciones topológicas como fracciones o las marcas que rodean ese épsilon que tienes allí y otras cosas que los hacen mucho más complejos que el código.

Avner Shahar-Kashtan
fuente
¡Gracias por la investigación y por las palabras clave adicionales ("operador unario") que ayudarán en futuras búsquedas!
Wesley Baugh
1

Me he encontrado con esto antes, y solía

var false_positive = 0 - true_positive

para asegurarse de que la intención sea clara. Esa es la forma más legible.

jeffbeat
fuente
0

Creo que el segundo es marginalmente menos malo, porque es menos probable que el signo menos se lea como parte de la palabra; Sin embargo, creo que ambas formas son malas.

Reemplazaría todo con

false_positive = -1 * true_positive

o incluso

false_positive = (-1) * true_positive

en cualquier idioma.

aviv
fuente
1
Esta es una buena idea, pero la multiplicación es más costosa que la suma, por lo que me gusta más @ jeffbeat 0 - true_positiveporque transmite el punto de una manera que es más eficiente para que la máquina procese.
GlenPeterson