¿Es el estilo de codificación en las organizaciones una cosa opcional?

30

Este documento de estilo de programación tiene una regla general que dice:

Las reglas pueden ser violadas si hay fuertes objeciones personales en su contra.

Esto choca con la forma en que estoy pensando, y hay muchos artículos que dicen que el estilo de codificación es realmente importante. Por ejemplo esto dice:

Un documento de estándares de codificación les dice a los desarrolladores cómo deben escribir su código. En lugar de que cada desarrollador codifique en su propio estilo preferido, escribirán todo el código según los estándares descritos en el documento. Esto asegura que un proyecto grande esté codificado en un estilo consistente: las partes no están escritas de manera diferente por diferentes programadores. Esta solución no solo hace que el código sea más fácil de entender, sino que también garantiza que cualquier desarrollador que lo vea sepa qué esperar en toda la aplicación.

Entonces, ¿estoy malinterpretando algo de este documento y la cita al principio de esta pregunta? ¿Puede la gente realmente ignorar el estilo de codificación?


Tal vez no fui lo suficientemente claro, así que con esta edición, voy a aclarar un poco.

Estoy escribiendo el documento de estilo de codificación para nuestro equipo, y quiero verificar el estilo usando algunos analizadores estáticos. Si falla, Jenkins enviará correos electrónicos. Y quiero fallar la revisión del código, si el estilo no coincide. Esto claramente choca con la primera cita.

Pero entonces, si la cita es correcta, ¿de qué sirve el documento de estilo de codificación, si alguien puede hacer lo que quiera?

BЈовић
fuente
La respuesta, obviamente, es: depende. Todas las respuestas a continuación son adecuadas para diferentes equipos en diferentes empresas que tienen diferentes culturas. Lo que propongas debe encajar con lo que el equipo buscará, y debes tener una idea de esto porque, por supuesto, lo habrás discutido informalmente con los miembros del equipo, ya sea individualmente o en pequeños grupos. Personalmente, prefiero a) cualquier cosa para la que simplemente pueda establecer opciones en Emacs, Visual Studio e IntelliJ IDEA, yb) ¡ absolutamente ninguna pestaña dura en los archivos bajo ninguna circunstancia! Para todo lo demás, lo que el equipo quiera está bien.
davidbak
En mi opinión, si estás escribiendo una guía, entonces ya has perdido la batalla. De ninguna manera puede producir documentos autorizados que los desarrolladores realmente lean. Los IDE modernos vienen con un conjunto de estilos. Elige uno y llámalo tu referencia.
Cerad
El documento de estilo que vinculó es "un" documento de estilo de codificación sugerido; no es "el" documento de estilo. Si está creando el documento de su sitio, use este en la medida en que le quede bien. Si tiene objeciones, cambie su documento en consecuencia. Por ejemplo, omita las declaraciones que no le gustan.
user2338816
"Las reglas pueden ser violadas si hay fuertes objeciones personales en su contra". A veces es una consideración política: la fase 1 es opcional. Sin él, un compañero de trabajo de la vieja escuela podría acabar con la idea de los estándares de código por completo.
brian_o

Respuestas:

12

Por lo que puedo decir, la declaración que lo confundió es un compromiso pragmático hecho para que las pautas sirvan a la audiencia más amplia posible. Dependiendo de su contexto específico (más sobre eso a continuación) puede tener una opción para ajustarlo y hacer un uso más eficiente de las pautas.

Verá, las pautas se refieren a "fuertes objeciones personales" como un medio para justificar la violación. Tales objeciones no son algo que ignorar a la ligera, especialmente si provienen de desarrolladores experimentados.

Estas objeciones pueden estar equivocadas, pero (y esto es muy, pero MUY GRANDE) también pueden indicar que una regla en particular está mal, ya sea en general o en el contexto específico del proyecto (un ejemplo de desajuste de la regla es un requisito para proporcionar registro detallado en el código crítico de rendimiento).

Creo que cualquier guía de estilo sensata debería tener en cuenta lo anterior e intentar acomodar una posible necesidad de ajustarse. Ahora, si la guía que lo confundió estaba dirigida solo a equipos maduros con procesos y entornos eficientes y fluidos, podría decirse de manera mucho menos ambigua, por ejemplo, así:

Las reglas deben seguirse estrictamente, a menos que se presente un desafío contra ellas, en cuyo caso la regla impugnada debe permanecer ignorada hasta que se resuelva, ya sea rechazando el desafío o al aceptarlo y ajustar las reglas para que encajen.

Es posible que le guste más lo anterior y desee que sea así en todas partes, para todos, pero mire más de cerca esa parte del "desafío se plantea / permanezca ignorado / ajuste" y pregúntese cómo se puede implementar. Pregúntese cuánto tiempo puede tomar dependiendo del proyecto y el equipo. Si lleva una hora, ¿es eso aceptable? ¿Qué pasa si toma un día, o una semana, o ... un mes?

Verá, ese enfoque de desafío e ignorar hasta que se resuelva podría abrir una amplia puerta para el abuso si se presentara como una guía para cualquier proyecto. "Sí, sí, lo escuchamos, hagámoslo como dice la guía. Primero, complete este formulario de desafío y obtenga las aprobaciones de CEO / CFO / CTO; espere que esto tome una semana o dos. Después de eso, espere hasta que actualicemos nuestras comprobaciones de código ; eso puede tomar una o dos semanas más. Mientras tanto, asegúrese de que su código crítico de rendimiento vomite declaraciones de registro formateadas correctamente sobre cada movimiento de registro ".

No puedo leer las mentes de los autores de la guía, pero parece razonable suponer que querían evitar usarlo para justificar un desastre como se describió anteriormente. Desde esta perspectiva, es simplemente más seguro afirmar claramente que la guía no asume ningún cumplimiento; de esta manera, por torpe que sea, aún puede utilizarse para una amplia gama arbitraria de equipos y proyectos. Probablemente existe la expectativa de que una asignación tan amplia deja a los equipos más maduros y eficientes la oportunidad de reducirla razonablemente sin dañar la productividad del desarrollador.


Aplicado a su caso específico, escribir el documento de estilo de codificación para su equipo y fallar la revisión del código si el estilo no coincide: creo que debe calcular cuánto tiempo les tomará a los desarrolladores desafiar una regla en particular, ignorarla, resuelto y cambiarlo o recuperarlo según la resolución.

Si encuentra una manera de hacer que este proceso funcione sin introducir muchos obstáculos en su flujo de trabajo de desarrollo, entonces vale la pena considerar un enfoque de desafío / resolución formal y fácil de rastrear en lugar del caótico "violar si llora lo suficientemente fuerte".


Como nota al margen, me gustaría abordar lo que escribió en otro comentario : "Suponga que el estilo de codificación es ideal, y si ese no es el caso, etc."

Esta es una suposición peligrosa, de verdad. Me rompí la nariz (¡dos veces en un solo proyecto! Donde tenía una vasta experiencia e imaginé que lo sabía todo, imagínense) y le recomiendo encarecidamente que lo deje. Es más seguro asumir que la guía de estilo puede tener errores y hacer un esfuerzo para pensar qué hacer en caso de que se descubran dichos errores.

mosquito
fuente
Digámoslo de esta manera: nuestro equipo es pequeño y nuestro proceso no incluye a nadie por encima de mi jefe (que es solo un líder de equipo). Entonces, los juegos como explicaste anteriormente no van a suceder.
BЈовић
@ BЈовић en ese caso, el enfoque de desafío / resolución parece un claro ganador
mosquito
53

Permitir que las personas ignoren los estilos de codificación debido a preferencias personales es una mala idea.

La cita en su pregunta parece permitir que cualquier desarrollador simplemente diga "No voy a usar este estilo porque no me gusta".

Esto va en contra de todo, lo que hace que todos en el equipo hagan las mismas cosas para lograr consistencia y legibilidad.

Estoy de acuerdo en que un documento de estilo con tal declaración probablemente no tenga sentido.

Sin embargo, se recomienda cierta flexibilidad para cumplir con las pautas de estilo:

  • Seguir una directriz servilmente podría impedir la mejor manera de escribir un fragmento de código en particular . Los desarrolladores deben ser capaces de ignorar la directriz y demostrar que lo que han hecho es la mejor y más legible forma de lograr algo en este caso.
  • Trabajar con código heredado puede requerir flexibilidad. Probablemente no sea un buen uso de su tiempo cambiar el estilo de una gran base de código existente. Si reescribe una sección en particular de manera significativa, puede reformatearla al estilo preferido. Sin embargo, si solo realiza un pequeño cambio, puede ser mejor usar el estilo existente del código.
  • Analizar cada pequeña violación de la guía de estilo no es un buen uso del tiempo. La revisión del código es un buen momento para resaltar cualquier código que esté significativamente fuera de línea con el estilo del equipo. Sin embargo, atrapar y corregir pequeños "errores" de estilo es probable que se convierta en un trabajo ocupado que se centra en lo incorrecto. Claro, falla la revisión del código si el estilo fue ignorado descaradamente. Pero no me gusta la idea de ejecutar un analizador y señalar cada paréntesis o sangría fuera de lugar, no importa fallarle a alguien sobre esta base.

En conclusión: permita flexibilidad para cumplir con las pautas de estilo, a fin de satisfacer mejor las necesidades de su equipo, pero no por razones arbitrarias como preferencias personales.


fuente
44
Sería mejor decir que si hay una buena razón para infringir las reglas, infórmelas. Es imposible enumerar todas las buenas razones, pero sugeriría que la mera preferencia personal no es una. La guía de estilo de Python tiene una sección reflexiva sobre cuándo debe romper las reglas.
Michael Hoffman
1
La comprobación automática de nitpick de estilo podría ser útil: pero solo si se combina con un botón fácil para aplicar todos los cambios recomendados, y una forma de decir "no, rompí esa regla por una razón". Dependiendo de su nivel de proceso, esto último puede ser algo que debe justificarse en la revisión de código / etc.
Dan Neely
1
La adherencia al estilo del código es tan importante en mi empresa que tenemos que PyLint aplica los estándares PEP8 en nuestro código como parte de nuestro proceso de compilación. Las confirmaciones que reducen el estado del código se rechazan automáticamente.
sethmlarson
1
Verifique suficientes reglas para obtener el resultado que necesita. Ignorar, actualizar o renunciar a cualquiera que cause problemas. Aplique una cantidad adecuada de sentido común para intercambiar felicidad y productividad
Sean Houlihane
2
Con los años he llegado a la conclusión de que la única parte realmente útil de las guías de estilo es sangrar el código correctamente. Ni siquiera necesita sangrar todo de la misma manera, solo sangrar correctamente. Las guías de estilo que he escrito generalmente no contienen más de 3 reglas (generalmente solo una regla, sangra correctamente para que no se vea feo). Si entro en una tienda y veo que el código ya se ve bien, ni siquiera recomiendo necesitar un estilo de codificación.
slebetman
13

El estilo de codificación y las guías de estilo existen para ayudar a que el código sea más legible. Y la legibilidad existe para ayudar con la complejidad.

Por lo tanto, en última instancia, si violar o no (lo llamaría adaptar) el estilo de codificación para satisfacer sus necesidades organizacionales se reduce a cuánto ayuda a hacer que las cosas sean comprensibles.

Recuerde, todo, y enfatizo, TODO, desde la programación OO hasta los paradigmas funcionales, hasta varios modelos de concurrencia, existe por la única razón de ayudar a las personas a lidiar con la complejidad.

Cualquier tonto puede escribir código que una computadora pueda entender. Los buenos programadores escriben código que los humanos pueden entender. - Martin Fowler, 2008

codificador de árboles
fuente
Su respuesta no es clara SÍ o NO. Entonces, ¿estás diciendo que es realmente opcional? Con descanso, estoy de acuerdo.
B 13овић
3
Sí, es opcional si violarlo realmente ayuda (piense en el código heredado). No, no lo es si solo lo haces porque te apetece y no aporta beneficios razonables. Entonces, lo que digo es que nada está escrito en piedra. Rompe cualquier cosa o nada para el objetivo final de reducir la complejidad.
treecoder
3
@ BЈовић Lo que dice esencialmente el codificador de árbol es que tienes el enfoque equivocado. Las reglas no son mágicas. No vas a mejorar mágicamente todo al adherirte rígidamente a un conjunto de reglas. Entonces debe pensar: "¿Qué se supone que deben cumplir estas reglas?" en cambio, y trabajas hacia ese objetivo en su lugar. Las reglas le indican cuál debería ser su valor predeterminado; si seguir las reglas va en contra de la meta que se estableció para lograr, entonces no vale la pena seguirlas en ese caso .
jpmc26
6

¿Es el estilo de codificación en las organizaciones una cosa opcional?

Las organizaciones optan por tener estilos de codificación: no es necesario tenerlos en primer lugar.

Entonces, la cita que está leyendo aborda el problema más grande que veo con respecto a la codificación del "estilo" y los verdaderos "hackers" de las superestrellas: traes a un nuevo tipo a bordo y escribe un código que arrojará zombis y hará que esos viejos servidores tuyos griten rápidamente. .. pero su estilo de codificación es diferente de su "estilo organizativo aceptado". Se niega a cambiar y el proceso para lograr que todos se ajusten a su estilo particular llevará mucho tiempo y será costoso. ¿Ahora que?

La mayoría de los súper hackers que conozco vienen con egos tan grandes como sus habilidades, y quieren que la organización se adapte a ellos , no al revés. Entonces, tal vez su estándar de estilo de codificación debería ser más como una pauta de estilo de codificación para que pueda dejar que este hacker asesino siga escribiendo un código increíblemente rápido y sorprendente con cierta desviación de estilo, pero asegúrese de que todos los demás lo entiendan hasta que lleguen a su hacker épico estado, necesitan seguir las reglas (o incluso ayudar a limpiar después de él).

Por supuesto, esta es una pesadilla de gestión, pero la gestión de personas tecnológicas en general es un poco como pastorear gatos de todos modos. Entonces, la mayoría de las compañías tienen "pautas de estilo", no "estándares de estilo". Y las compilaciones no fallan y las revisiones de código no fallan automáticamente debido a violaciones de estilo en todas las empresas. Puede decidir el problema de administración que desea tener: permita que los hackers superestrella y tenga "pautas" o pierda las superestrellas y tenga un estilo de código más consistente.

Jim
fuente
1
Re: "La mayoría de los super hackers que conozco vienen con egos tan grandes como sus habilidades": no creo que sea cierto. Puede parecer que tienen grandes egos porque no difieren automáticamente de la opinión de los demás, pero los que he conocido tienen una mentalidad muy abierta si puedes justificar lo que estás haciendo. (Aunque no estoy seguro de que el "ego" sea exactamente lo contrario del conformismo, de todos modos.)
ruakh
2
"La mayoría de los súper hackers que conozco vienen con egos tan grandes como sus habilidades, y quieren que la organización se adapte a ellos, no al revés". Dudo que algún desarrollador sea tan bueno que supere el costo de tal actitud y dudo que tal ingeniero se emplee por mucho tiempo.
Andy
1
"Y las compilaciones no fallan y las revisiones de código no fallan automáticamente debido a violaciones de estilo en todas las compañías" En realidad trabajé para una compañía que de hecho siguió ese camino, y el resultado fue objetivamente mejor que antes de la aplicación laxa del normas
Andy
3

Entonces, ¿estoy malinterpretando algo de este documento y la cita en la parte superior de esta pregunta? ¿Puede la gente realmente ignorar el estilo de codificación?

Depende.

El lugar en el que estoy actualmente no tiene una guía de estilo, y no es gran cosa. Existen algunas ligeras variaciones entre los programadores, pero no tanto como para impactar la legibilidad, la capacidad de descubrimiento o la consistencia de manera significativa. Y tenemos un grupo lo suficientemente grande y una cultura lo suficientemente fuerte como para hacer cumplir que cualquier miembro nuevo del equipo se alineará (o de lo contrario).

En compañías anteriores, estábamos creciendo rápidamente y teníamos algunas personas que no estaban familiarizadas con el idioma y sus expresiones idiomáticas. En esa compañía, la afluencia de personas significaba que no había una cultura que exigiera una buena escritura. Y la gente nueva en el idioma significaba que había muchas cosas que ajustar. Los verificadores de estilo automatizados eran la forma más eficiente de hacer los ajustes, y una guía escrita real era la mejor manera de capacitar a las nuevas personas en nuestras expectativas.

Personalmente, no me interesan mucho las guías de estilo, y menos aún la aplicación de estilo automatizada. Si la persona ni siquiera puede aprender los modismos básicos, ¿por qué los está empleando como programador? Y si son un jugador de equipo tan malo que escribirán continuamente código con el que a otros les resulte difícil trabajar, ¿por qué los emplean en absoluto?

Telastyn
fuente
1
Solo para responder la última parte: fue decisión de la alta gerencia externalizar algunas bibliotecas. Y mi equipo no tiene influencia sobre quién trabaja allí. Su estilo de codificación es completamente diferente.
B 13овић
"Tenemos un grupo lo suficientemente grande y una cultura lo suficientemente fuerte como para hacer cumplir cualquier miembro nuevo del equipo" Parece que tienes al menos algunas pautas de estilo, ¿simplemente no están escritas?
@ dan1111 - ¿seguro? Quiero decir que probablemente se reduzcan a "no molestar a tus compañeros de equipo", pero la pregunta se hizo específicamente sobre documentos y publicaciones.
Telastyn
2

Esto es más una estratagema psicológica en lugar de una interpretación literal de la mejor manera de administrar los estilos de codificación. Hace que el equipo / empresa / gerente / líder sea menos autoritario. Me centraría más en las excepciones situacionales que en las personales. Independientemente del documento de codificación, el objetivo es facilitar la lectura. El código confuso debe abordarse y modificarse si se considera necesario. Hay muchas herramientas para ocuparte de las pequeñas cosas tediosas, así que úsalas.

Hay excepciones a cada regla. Déle a la gente "algo" de margen de maniobra. Cuanto menos estén todos involucrados en aceptar las reglas de estilo de codificación (Bienvenido, chico nuevo), más se sentirán inclinados a contraatacar. Muchas cosas son en blanco y negro, pero algunas están abiertas a interpretación.

El objetivo debe ser involucrar a todos en el espíritu de las pautas de codificación en lugar de luchar por cada pequeño detalle e interpretación.

Sí, llegará un momento en que el documento de estilo de codificación no tiene sentido para usar y se debe permitir que los desarrolladores profesionales y adultos sepan la diferencia.

JeffO
fuente
Entonces, ¿su sugerencia es implementar un trabajo en jenkins, que va a formatear el archivo tan pronto como alguien registre algo? Por cierto, la "sala de maniobra" es, supongo, algo similar como en esta respuesta.
B 13овић
Si hace el trabajo y evita una discusión de una hora sobre algo que puede corregirse sin ningún esfuerzo, ¿por qué no? Las respuestas son similares, pero creo que tiene más que ver con la moral y la mentalidad del equipo. Puede tener anarquía sin codificar estándares tan fácilmente como tener demasiados.
JeffO
2

Según sus ediciones, su objetivo es el objetivo correcto.

El uso de una guía de estilo ofrece muchos beneficios, pero los dos más importantes en mi opinión, son la legibilidad del código entre los miembros del equipo y la falta de compromisos "tontos" (como espacios en blanco solamente, o líneas adicionales y similares).

Para lograr su objetivo, la guía de estilo elegida (o creada) debe ser simple y fácil de cumplir. Intenta concentrarte realmente en lo que necesitas. A nadie le gusta tener que regresar y reescribir una gran muestra de código solo para hacer feliz a un personaje. Pero aún podría haber algún beneficio.

Asegúrese de que los miembros de su equipo aprueben la guía de estilo. Vas a sujetarlos, asegúrate de que estén de acuerdo o será una lucha eterna.

Asegúrese de que las violaciones de estilo sean una "advertencia" y no un "error", deje que un humano decida si la violación se encuentra con un error. La razón de esto es simple. Creo en un flujo de trabajo simple. Si en algún momento de la fase de "prueba" se produce un "fallo", no puede pasar a producción. Yo uso es como una seguridad. Incluso las correcciones urgentes tienen que pasar por una fase de prueba (aunque más corta). ¿Puede decir realmente que no va a impulsar esa corrección crítica de errores a la producción porque alguien usó un "en lugar de un '? ¿Qué pasa con el uso de un bucle for en lugar de cada uno? ¿Qué pasa si un bucle for tiene alguna mejora con respecto a cada uno? son decisiones que una máquina (linter) no puede tomar, así que asegúrese de tener un humano, juzgue la advertencia y no la máquina arroje una falla.

En cuanto a ignorar la guía de estilo, tendrá que juzgar eso caso por caso. Asegúrese de que la "desviación" tenga una razón real. Ellos vendrán El trabajo de los revisores es asegurarse de que haya una buena razón para la desviación y no una trivial.

coteyr
fuente
0

Creo que la música de humor aquí es que si la sabiduría aceptada es que los estándares de codificación son incorrectos o incompletos, entonces es el menor de los dos males seguir si los desarrolladores están de acuerdo en general en lugar de pasar por el arduo proceso de obtener el documento modificado y revisado nuevamente.

También se debe tener en cuenta que las políticas de cumplimiento estándar del código de antaño no suelen ser la forma en que se hacen las cosas ahora.

En los viejos tiempos, simplemente te balanceabas sosteniendo el tomo al final del escritorio de los desarrolladores y citabas el capítulo y el versículo por qué su código violaba la sección 34.5.5767.

Ahora tenemos herramientas de análisis de código estático y documentación automática que eliminan gran parte del trabajo pesado de los estándares de código.

Si falla todo esto, aún puede devolverlo al desarrollador, subirlo a una revisión de código o simplemente cambiarlo usted mismo si así lo desea.

Robbie Dee
fuente
Suponga que el estilo de codificación es ideal, y si ese no es el caso, entonces la gente puede cambiarlo. ¿Se permite a las personas incluso en este caso ignorarlo?
B 13овић
Difícil de decir, especialmente si no hay un consenso general. Supongo que la antigüedad y / o la mediación de los desarrolladores entrarían en juego aquí ...
Robbie Dee
0

Su pregunta se centra en conciliar las dos citas. Creo que lo que Treecoder escribió responde a su pregunta en general. Representa su principio rector en las pautas de estilo de escritura.

Más específicamente, dado que usted es responsable de establecer las pautas de estilo de codificación (esta es mi suposición ya que usted es el redactor de documentos), puede decidir qué es opcional o no, y en qué medida permitirá flexibilidad en el estilo personal de su equipo. Recibirá comentarios cuando sea necesario. Pero una vez que las pautas estén en su lugar, quédese con ellas.

Para que pueda conciliar las dos contradicciones aparentes como esta:

Piense en la primera cita dirigida a usted como el tomador de decisiones de estilo, antes de que se complete el documento de pautas. Si un determinado estándar de estilo no funciona para su equipo, entonces esto cuenta como una "fuerte objeción personal" y sus pautas lo reflejarán.

Piense en la segunda cita dirigida a su equipo, después de completar el documento. Una vez que haya establecido las pautas para el equipo y el documento esté escrito, es importante que todos los desarrolladores de su equipo cumplan con las pautas de estilo.

Price Jones
fuente
0

No importa demasiado qué estilo de codificación tengan las personas, siempre que tengan un estilo de codificación. Si una empresa insiste en un estilo de codificación, pisan fuertemente a los dedos del 49% de sus desarrolladores.

El problema es que a una gran cantidad de desarrolladores no les importa adaptar su estilo de codificación a algún estándar prevaleciente en una empresa, pero les importa mucho que les digan aquellos que son mejores (o simplemente se preocupan más) por la política de la empresa.

Eso significa que crear un estándar de estilo de codificación puede ser una gran pérdida de tiempo, una fuente de argumentos interminables, la causa de un resentimiento infinito y, en general, una gran pérdida de tiempo y energía.

gnasher729
fuente
0

He lidiado con pautas de estilo de código durante años, como lo han hecho muchos otros en este foro. Esto incluye las dos guías de estilo de lucha que considero aborrecidas, y tratar de alentar a otros a usar guías de estilo para controlar su estilo para que pueda ser más legible en su conjunto.

La corporación se beneficia de un estándar de codificación común. Hay muchas cosas importantes a tener en cuenta al desarrollar software para una empresa, como cómo entrenaremos a los nuevos desarrolladores para que recojan el código de la generación anterior. Cuando escribes código, no siempre estás pensando en esto. De hecho, muchos codificadores eligen ni siquiera considerar cómo otros podrían querer acercarse al código 5 o 10 años después de que se hayan ido. Una guía de estilo de codificación es una forma en que una empresa puede enfocarse en estos objetivos de 5 y 10 años, facilitando a los desarrolladores trabajar en el esquema más amplio de las cosas.

Por otro lado, las guías de estilo de codificación son notoriamente imperfectas, porque no es posible desarrollar un estilo de codificación perfecto y escribirlo. De hecho, comienzas a toparte con casos divertidos en los que las pruebas matemáticas comienzan a fallar si intentas hacerlo perfecto. Entonces sabemos que las guías de estilo de codificación son imperfectas. Es posible que no se centren perfectamente en lo que necesitamos dentro de 5 a 10 años.

Si "impusiéramos" un estilo de codificación, estaríamos sacrificando valor ahora por valor más adelante. Esto se llamaría "inversión" si pudiéramos estar seguros de que obtendríamos un retorno de nuestros esfuerzos, pero cualquier desarrollador que haya trabajado con una guía de estilo de codificación mal escrita puede dar fe de que esas ganancias de "legibilidad" se pagan caro distrayendo a los desarrolladores lejos de su código. En mi experiencia, solo hay un número muy pequeño de casos en los que los estilos de codificación forzada tienen mérito, generalmente en software para clientes exclusivamente glaciales, ¡donde el software puede usarse durante 30 o 40 años!

En cambio, me parece más efectivo tratar una guía de estilo de codificación como un manifiesto: "Esto es lo que creemos que es el mejor estilo de codificación para nuestro grupo". Es un montón de pensamientos fluidos documentados en palabras. La palabra "creer" es importante: si las creencias cambian, las guías de estilo de codificación deberían cambiar con ella.

Aquí es donde entra tu cita de "objeciones personales fuertes". En lo que yo llamaría un mundo "perfecto", escribes el código que crees que es mejor y vives con las consecuencias. A menudo nos gusta pasar por alto las consecuencias "suaves" cuando estamos programando, pero en este caso son importantes. No tengo ningún problema con que escribas en tu propio estilo, si no te importa que nunca te dé nada importante y duradero para desarrollar.

Piense en todo el sistema como un campo de golf. El estilo de codificación allana el camino fácil por la calle. Si cumple con el estándar de codificación, nos aseguraremos de que la vida sea lo más fácil posible. Cuanto más avance en el camino, utilizando sus propios estándares de codificación, más tendrá que demostrar su valor en el equipo.

Si vengo el lunes por la mañana, para descubrir que has pasado todo el fin de semana resolviendo un problema por el que nos hemos estado preocupando durante un año, y lo hiciste en tu propio estándar de codificación "especial", no voy a decirte que arreglalo. Te voy a decir que te duches. Si su estándar de codificación "especial" es excepcionalmente "especial", incluso podría sugerirle a un desarrollador de nivel de entrada que "revise" el código para difundir el conocimiento de cómo funciona su código y mencione que si algo parece difícil de leer, él / ella debería poner en orden. Ese fin de semana, usted proporcionó suficiente valor a la compañía para que valga la pena ni siquiera mencionar las graves violaciones de los estándares de codificación que cometió.

Hay, por supuesto, fuera de límites en esta metáfora de golf. Si le pido que haga una tarea de clasificación y archivo, tal vez agregando nuevos campos a algún formulario, y decide aprovechar la oportunidad para refactorizar todo el código de llenado de formularios para que se adapte a su estilo particular, usando un montón de caracteres sombreados como definir macros y alguna técnica de metaprogramación de plantilla horrible que acabas de aprender del intercambio de pila, se te pedirá que regreses y la arregles. Elegiste actuar, esas son las consecuencias.

( Descargo de responsabilidad: he escrito totalmente esta implementación is_base_ofpara resolver una tarea de baja categoría, y me gané todo el infierno que obtuve de los desarrolladores senior. Digo que valió la pena. Todavía recibo una alegre burbuja de risa cada vez que mira cómo ese patrón se une a 7 partes no relacionadas de la especificación de C ++ para hacer algo increíble. ¡Tómalo, desarrolladores senior! ¡Eso es lo que obtienes por prohibir boosten este proyecto en particular! )

Cort Ammon - Restablece a Monica
fuente
-1

Best parece usar el formateador de código automatizado que es una característica incorporada de casi cualquier IDE de descendencia y debería existir para casi cualquier lenguaje de programación más o menos extendido. Esto elimina silenciosamente mucho trabajo innecesario y mucha fricción durante las revisiones de código.

Es completamente razonable exigir a todos los desarrolladores que desarrollen un hábito para aplicar el formateador a la sección recién creada del código.

Lo peor que puede hacer es exigir un estilo de codificación personalizado que el formateador de código existente no admite.

En casos relativamente raros, alguna sección puede formatearse de manera diferente, si el formateador lo hace realmente mal, pero generalmente es mejor ajustar el formateador para que todos formateen mejor.

Puede haber algunas reglas útiles que el formateador no puede admitir (cómo nombrar variables, por ejemplo), pero si solo estas permanecen, son relativamente fáciles de seguir.

h22
fuente
lamentablemente esto no responde la pregunta directamente . De todos modos, +1, para buenos consejos, y una solución práctica para ir y venir sin sentido sobre el estilo. configure el formateador y termine con él.
Bruno Schäpper
Todavía creo que tener solo un formateador es la mejor solución para el problema del estilo de codificación, ya que proporciona un estilo consistente y elimina la posibilidad de movilizar sin necesidad de que todos los nuevos desarrolladores coloquen espacios y extremos de línea incorrectamente. He visto que esto funciona muy bien en situaciones reales, por eso recomiendo esta solución y no eliminaré la pregunta.
h22
-1

Solución real (no solo filosofía)

Permita que los comentarios de código anulen el linting y compile listas de esos comentarios si lo desea (como se hace con los comentarios de todo a menudo)

Ofrezca a sus desarrolladores la capacidad de trabajar fuera de la convención explícitamente y con razón, y durante las revisiones de código por parte de humanos, se puede analizar según sea necesario.

Adam Tolley
fuente