Los espacios no separables llegan a los nombres de métodos de test en PHP
Un equipo de PHP bautiza sus métodos de test con espacios no separables: para PHP son caracteres normales, para el editor parecen espacios. El resultado se lee como una frase.

Un equipo de PHP ha convertido los nombres de sus métodos de test en frases. La tecnica: colar espacios no separables donde el lenguaje espera un identificador. PHP trata ese caracter como cualquier otro, asi que el metodo es valido, pero en el editor se lee como una oracion con espacios.
En PHP un nombre de metodo no admite espacios, pero si un espacio no separable, el mismo del HTML. El interprete lo ve como un caracter mas y el editor lo dibuja igual que un espacio corriente. El resultado es esto:
public function test a user can add a product to a wishlist()
{
}
Asi, testProjectMultiVendorProductWithOneDetached pasa a ser test product and multivendor product projections are both updated when they are detached. Mas largo, pero se entiende sin abrir el cuerpo del test.
De una broma de equipo a una costumbre
El autor lo cuenta desde su experiencia en Wizaplace. El equipo daba vueltas a abandonar PSR-2 en los test para usar snake_case y describir mejor que comprueba cada prueba. En una de esas conversaciones alguien solto que, si ya iban a saltarse la convencion por legibilidad, mas valia usar espacios no separables y que el nombre se leyera como una frase. Empezo como chiste y acabo en un experimento controlado. Mas de un ano despues siguen con ello.
Teclear el caracter es la parte facil: en macOS es Alt + Espacio y en Ubuntu Alt Gr + Espacio. La letra pequena esta en las herramientas. Segun el autor, git, PhpStorm, Sublime Text, GitHub y la integracion de PHPUnit en PhpStorm funcionan sin problema. En PhpStorm hay que desactivar o reasignar el atajo de "Quick definition", que invoca la misma combinacion; el helper sigue accesible con Cmd+Y o Ctrl+Y. Atom y Visual Studio Code tenian fallos menores de resaltado de sintaxis que se corrigieron en atom/language-php#196 y Microsoft/vscode#26992.
El escollo real son las personas. Cada companero nuevo tiene su momento de estupefaccion al leer el codigo, algo que choca de frente con el principio de la minima sorpresa. En un equipo pequeno, segun su experiencia, junior y senior se adaptan rapido; en una organizacion grande con varios equipos costaria mas.
Ahi esta su unica reserva. En un proyecto cerrado, donde el equipo posee el codigo y comparte las decisiones, basta con probarlo y seguir si funciona. En abierto, los contribuyentes se topan con el desconcierto sin nadie al lado que lo explique. Su postura es reservarlo a proyectos pequenos con pocos contribuyentes mientras la practica se extiende.
Que una convencion de nombres aguante un ano no la convierte en estandar, y el propio autor lo admite. El unico aviso de que has tecleado un espacio normal por error es mirarlo: salta a la vista, dice, y en su experiencia nunca ha sido un problema. Para quien mantiene una suite de test grande, la ganancia esta en leer el nombre del test que falla y saber que se ha roto sin abrir el archivo. El coste, un caracter invisible que en un diff no se distingue de un espacio y que cualquier revisor puede borrar sin querer.


