Cómo obligar a las personas a escribir funciones puras en JavaScript

Las otras respuestas aquí son buenas, pero hay otra razón: en la mayoría de los casos, no puede tener funciones de JavaScript prácticas y puras.

Ignoremos la interfaz de usuario por un momento y supongamos que está creando una aplicación que realizó algún tipo de cálculo. Si todas las funciones llamadas en su aplicación eran puras, entonces simplemente podría evaluar todo el programa en tiempo de compilación hasta un valor constante (todo es puro, ¡solo calcule la respuesta!).

Tan pronto como comience a tratar con IO (en el caso de Redux, haciendo solicitudes de red, accediendo a localStorage, IndexedDB, etc.), ahora se enfrenta a un código que ya no es puro.

Cuando tenga que lidiar con un código que tenga efectos secundarios (y lo hará, mucho) tendrá que hacer excepciones. No hay una forma práctica de incluir en la lista blanca ciertas funciones que inducen efectos secundarios y prohibir otras. E incluso si lo hiciera, hacer cumplir tal prohibición probablemente proporcionaría muy pocos beneficios en general en comparación con el costo.

Si las reglas y convenciones son razonables y prácticas, nunca es difícil hacer que otras personas sigan.

Considero redux como un componente correcto. Consideraría algunos consejos de sus desarrolladores como buenas sugerencias . Pero esos consejos son demasiado triviales para ser considerados como filosofía.

Para ser honesto con usted, incluso esos principios están escritos en la Biblia, todavía me niego a creerlo sin mi propio pensamiento crítico. Demasiados desarrolladores junior actúan más como fanáticos religiosos que como ingenieros racionales.

Ahora responda su primera pregunta, sí, estoy escribiendo una aplicación web usando react-redux y redux, no estoy usando una función pura, en cambio estoy usando un estilo mixto. He usado tantas bibliotecas similares escritas en muchos lenguajes de programación, seguramente sé qué es mejor para mi proyecto.

La segunda pregunta. Puede configurar fácilmente la tarea de CI para alinear el código. Luego, en su tarea de CI, puede usar el comando `git blame`,` svn annotate`, `p4 annotate` para averiguar quién hace que falle la interfaz. Dado que CI se ejecuta en el servidor, la propia configuración del individuo no importa.

Obviamente te falta el conocimiento y la experiencia en el desarrollo de software. Así que te sugiero dos libros para ti.

  1. Code Complete: A Practical Handbook of Software Construction, Second Edition: Steve McConnell: 0790145196705: Amazon.com: Books. Te enseña todas las habilidades de programación. El capítulo sobre la función explica por qué y cómo debe usar la función.
  2. Tao Te Ching: Edición de solo texto: Lao Tsu, Gia-Fu Feng, Jane English, Toinette Lippe, Jacob Needleman: 2015679724346: Amazon.com: Libros. Al menos trata de entender el “WuWei” (无为). Un hombre sabio no toma medidas cuando no es un buen momento

Si están apagando las linters, estás bastante deshuesado. Cualquiera que haga todo lo posible por escribir código incorrecto va a encontrar una manera de escribir código incorrecto.

Lo mejor que puede hacer es escribir pruebas funcionales, o (Dios no lo quiera) pruebas unitarias. Las funciones de Redux se romperán si las hace depender de los efectos secundarios, y no es demasiado difícil demostrarlo. Escriba pruebas que ejecuten el mismo reductor dos veces seguidas y verifique que la tienda Redux sea idéntica. Si no es así, el código está roto. Es así de simple.

Si la gente está apagando las pruebas, como dijiste, estás atascado. Todo lo que puede hacer es esperar que alguien con autoridad haga preguntas como: “Entonces, ¿por qué dejaron de ejecutarse las pruebas? ¿No sabes que las pruebas son cómo evitamos la basura en toda nuestra base de código? ”Es bastante difícil hacerlo bien incluso cuando sigues una buena práctica de programación.

Escribe PureScript.

Claro que puedes, pero de qué sirve perder el tiempo como desarrollador escribiendo cosas que ya están escritas. Tal vez en un entorno escolar es válido para fines académicos, pero estar en el trabajo tiene que ser muy rápido para cumplir. REALMENTE RÁPIDO

A menos que trabajen para ti, entonces no puedes.

Si son sus empleados, puede pedirles que escriban el código de la forma que desee, ya sea que tenga razón o no.

Si no son sus empleados, tendrá dificultades para infligirles su voluntad.

Tú los convences.

Te gusta Redux. Por qué te gusta? ¿Qué lo hace genial? ¿Qué lo hace útil? Prepare su caso, hable con otros y exponga sus argumentos.

Y prepárate para ser convencido a cambio. Quizás tengan buenas razones para no usar redux. O tal vez escriben funciones puras la mitad del tiempo, cuando tiene sentido, pero no todo el tiempo. Tal vez su equipo pueda usar una convención de nomenclatura especial cuando sea útil.

Pero nunca uses la fuerza cuando puedas escapar con persuasión.