Recientemente adquirí un hábito que sé que muchos de ustedes pueden desaprobar, pero que, al final, me ayuda a vigilar la estructura del código global en lugar de la estructura de un método repetitivo único (a veces): agrupar un número de declaraciones en una sola línea, como esta:
textBox1.Text = "Something!"; textBox2.Text = "Another thing!"; textBox3.Text = "Yet another thing!";
Opuesto a
textBox1.Text = "Something!";
textBox2.Text = "Another thing!";
textBox3.Text = "Yet another thing!";
Solía hacerlo para tareas repetitivas para mantener la "belleza" general del código y para ayudarme a rastrear la estructura del programa fácilmente, pero admito que puede no ser una buena práctica. De hecho, lo uso mucho, así que me gustaría saber qué piensa sobre esto. Además, ¿cree que alguien que alguna vez tenga que mantener mi código tiene problemas con este enfoque?
coding-style
Usuario
fuente
fuente
Respuestas:
Realmente creo que la legibilidad sufriría mucho tanto para usted como para cualquier otra persona que lea el código. Todo tiene sentido cuando lo escribes la primera vez porque está activamente en tu mente. Es diferente cuando escanea el código para ver qué variables y funciones están donde ... está destruyendo su propia capacidad de escanear su propio código. Eso es un gran no-no, y más allá de malo si cualquier otra persona siempre tiene que leer su código.
Además, piense en cómo lee el código. Siempre es de arriba hacia abajo, desplazándose hacia abajo. Su método no encaja con esto, e incluso presenta uno de los problemas más feos posibles en la lectura de código; desplazándose horizontalmente . Nunca subestimes lo difícil que puede ser la lectura del código. Nunca te desplazas horizontalmente, nunca haces que las personas se desplacen horizontalmente, en casi cualquier contexto es extremadamente antinatural.
Además, si su problema es la entrada de código repetitiva ... no olvide Ctrl-C. Desde su código de ejemplo, podría ser más eficiente escribir todo manualmente, pero si tiene que copiar varias líneas varias veces, parece que sería igual de eficiente copiar la línea uno más una nueva línea, péguela x veces y hacer los cambios, es menos probable que también se cometa un error tipográfico.
Ah, y errores tipográficos! Dañar la legibilidad de su código de esa manera puede hacer que sea una pesadilla encontrar cuál de las 50 declaraciones de variables establece incorrectamente. La mayoría de los compiladores dan errores en los números de fila Y columna ahora, pero encontrar un error en una fila es MUCHO más fácil que encontrar una columna.
fuente
Una declaración por línea también facilita ver lo que ha cambiado en una diferencia de lado a lado.
fuente
Si bien el ejemplo no muestra esto, hay otro problema con la agrupación de varias declaraciones en una línea. ¿Qué sucede si una de las cinco declaraciones que tiene en una sola línea arroja una excepción?
Su seguimiento de la pila dirá "EBlah en la línea N" ... y ahora no tiene idea de cuál de esas cinco declaraciones arrojó la excepción.
(Lo mismo sucede con una declaración excesivamente larga de cualquier tipo).
fuente
foo.bar[grill.boo].flip.flap[flop].mickey(minnie).marshmallow
(sintaxis Java / C #). Ordenar ese tipo de desorden siempre es mejor con líneas adicionales (y variables temporales ... y un Brick Of Clue 2D6 para el desarrollador original).Una declaración por línea es un estilo de codificación ampliamente utilizado. Como resultado, la mayoría de los desarrolladores que miran su código en el futuro probablemente se estremecerán cuando vean varias declaraciones por línea. Cuando estás acostumbrado a ver algo de una manera, puede ser desorientador verlo de otra manera.
Por esta razón, aconsejo no hacerlo, excepto en circunstancias excepcionales.
fuente
La última vez que hice esto fue hace 25 años usando lenguajes interpretados en micros pequeños que se ejecutan con bajas velocidades de reloj, donde cada espacio o retorno de carro eliminado dio un aumento en el rendimiento.
Ahora me estremezco al pensar en ello (aunque se hizo por una buena razón).
Lamentablemente, dicho código es difícil de leer y, por lo tanto, difícil de mantener.
fuente
Sintácticamente, realmente no hay nada de malo en ello. Realmente depende del estilo de codificación de su equipo.
Como la mayoría del código que he visto (incluido el código que está dentro de los encabezados estándar de c ++) se realiza de esta manera, elegiría su primer método.
fuente
Este es un estilo de codificación realmente inusual.
En su lugar, le recomendaría usar líneas vacías para delimitar partes lógicas de código.
fuente
Ir demasiado lejos hacia la derecha puede crear tantos problemas como múltiples líneas.
He tenido que lidiar con algunas declaraciones SQL con docenas de campos. Normalmente, pondría uno por línea, pero en algunas ocasiones, he consolidado 3 o 4 en una fila. Esto parece una buena idea durante el desarrollo cuando tienes que desplazarte hacia arriba y hacia abajo varias veces.
Lamento volver a este código. Tener filas adicionales simplemente no parece crear un gran problema, por lo que generalmente lo limpio.
fuente
Después de poner sus manos sobre su cabeza por un minuto, usará sus funcionalidades IDE Regex favoritas para separar automáticamente todo ese código ilegible en una declaración por línea.
Solo un vistazo rápido al ejemplo que mostró es suficiente para comprender cuánto más legible es el segundo enfoque.
Es mucho más fácil seguir el flujo vertical de la página, sin tener que mover los ojos horizontalmente para siempre.
Mire su ejemplo: inmediatamente sabe que el código tiene que ver con la
Text
propiedad de diferentestextBox
objetos, y contienen cadenas como valores. Muy claro.fuente
Yo personalmente no usaría ese estilo. Para resumir
Pros
Contras
fuente
if (x > maxX) {x=maxX; peggedAny = true;}
. Si cada una de estas operaciones encaja fácilmente en una sola línea, preferiría tener ocho líneas como esa que docenas de líneas que dividen las declaraciones. Si tales comparaciones se usaran en suficientes lugares, cuatro declaraciones del formulariopeggedAny |= pegValueMinMax(ref x, minX, maxX);
podrían ser mejores, pero alguien que lea eso tendría que leerpegValueMinMax
para ver qué hace.