Es fácil razonar sobre un término culturalmente específico, por lo que es tan difícil encontrar ejemplos concretos. Es un término que está anclado a las personas que deben razonar.
"Fácil de razonar" es en realidad una frase muy descriptiva. Si uno está mirando el código y quiere razonar lo que hace, es fácil =)
Está bien, descomponiéndolo. Si está buscando código, generalmente quiere que haga algo. Debes asegurarte de que haga lo que crees que debería hacer. Entonces, desarrollas teorías sobre lo que debería hacer el código, y luego razonas al respecto para tratar de discutir por qué el código realmente funciona. Intenta pensar en el código como un humano (en lugar de como una computadora) e intenta racionalizar los argumentos sobre lo que puede hacer el código.
El peor caso para "fácil de razonar" es cuando la única forma de dar sentido a lo que hace el código es ir línea por línea a través del código como una máquina de Turing para todas las entradas. En este caso, la única forma de razonar algo sobre el código es convertirte en una computadora y ejecutarlo en tu cabeza. Estos peores ejemplos se ven fácilmente en concursos de programación obscurecidos, como estas 3 líneas de PERL que descifran RSA:
#!/bin/perl -sp0777i<X+d*lMLa^*lN%0]dsXx++lMlN/dsM0<j]dsj
$/=unpack('H*',$_);$_=`echo 16dio\U$k"SK$/SM$n\EsN0p[lN*1
lK[d2%Sa2/d0$^Ixp"|dc`;s/\W//g;$_=pack('H*',/((..)*)$/)
En cuanto a lo fácil de razonar, nuevamente, el término es altamente cultural. Tienes que considerar:
- ¿Qué habilidades tiene el razonador? Cuanta experiencia
- ¿Qué tipo de preguntas podría tener el razonador sobre el código?
- ¿Qué tan seguro debe ser el razonador?
Cada uno de estos afecta "fácil de razonar" de manera diferente. Tome las habilidades del razonador como ejemplo. Cuando comencé en mi empresa, se recomendó que desarrollara mis scripts en MATLAB porque es "fácil razonar". ¿Por qué? Bueno, todos en la compañía conocían a MATLAB. Si escogiera un idioma diferente, sería más difícil que alguien me entendiera. No importa que la legibilidad de MATLAB sea atroz para algunas tareas, simplemente porque no fue diseñada para ellas. Más tarde, a medida que avanzaba mi carrera, Python se hizo cada vez más popular. De repente, el código MATLAB se volvió "difícil de razonar" y Python era el lenguaje de preferencia para escribir código sobre el cual era fácil razonar.
También considere qué idoms puede tener el lector. Si puede confiar en que su lector reconocerá una FFT en una sintaxis particular, es "más fácil razonar" sobre el código si se adhiere a esa sintaxis. Les permite ver el archivo de texto como un lienzo en el que pintaste un FFT, en lugar de tener que entrar en los detalles esenciales. Si usa C ++, descubra cuánto se sienten cómodos sus lectores con la std
biblioteca. ¿Cuánto les gusta la programación funcional? Algunos de los modismos que salen de las bibliotecas de contenedores dependen mucho del estilo idomático que prefiera.
También es importante entender qué tipo de preguntas puede interesarle al lector responder. ¿Están sus lectores preocupados principalmente por la comprensión superficial del código, o están buscando errores en las entrañas?
Qué tan seguro debe ser el lector es realmente interesante. En muchos casos, el razonamiento confuso es suficiente para sacar el producto por la puerta. En otros casos, como el software de vuelo FAA, el lector querrá tener un razonamiento irresistible. Me encontré con un caso en el que defendía el uso de RAII para una tarea en particular, porque "puedes configurarlo y olvidarte de él ... hará lo correcto". Me dijeron que estaba equivocado sobre eso. Los que iban a razonar sobre este código no eran el tipo de personas que "solo quieren olvidarse de los detalles". Para ellos, RAII era más como un chad colgante, obligándolos a pensar en todas las cosas que pueden suceder cuando dejas el alcance.