Actualmente estoy trabajando en un proyecto independiente, por lo que no me puedo dar el lujo de realizar pruebas en humanos o revisar códigos externos; sin embargo, no veo ningún error difícil en mi código actual (los soluciono tal como los veo , y la mayoría de las veces son solo nombres de campo incorrectos y cosas por el estilo en un minuto o dos), y lo pruebo después de implementar cualquier función antes de presionarlo. Últimamente mi número LOC era de aproximadamente 400 por día (para el registro, es C #), y no solo estoy implementando nuevos sistemas, sino que también reescribo cosas que ya he escrito y corrijo algunos errores.
¿Debería molestarme? ¿Es la señal de que necesito parar y revisar todo el código que he estado escribiendo hasta esta fecha y refactorizarlo?
fuente
Respuestas:
LOC es probablemente una de las métricas más abusadas, y como resultado es probablemente una de las medidas más inútiles de la calidad del código, y una medida aún más inútil del esfuerzo de programación.
Sí, esa es una declaración audaz para mí, y no, no puedo señalarle estudios que prueben mi punto. Sin embargo, puedo afirmar con una experiencia dura que cuando empiezas a preocuparte por la cantidad de código que has escrito, probablemente te preocupes por los problemas incorrectos.
Primero debe preguntarse qué es lo que está tratando de medir o probar, y si esta prueba es simplemente por interés, o para apoyar una mejora de calidad más amplia y dónde necesita usar esta información para obtener la aceptación de su equipo / gestión para hacer algo al respecto.
Una de las cosas para las que tiendo a usar LOC es un poco de verificación de cordura. Si me encuentro escribiendo mucho código, me intereso más en LOC por método, o LOC por clase, en lugar de LOC en general. Estas medidas pueden ser indicadores que debe refactorizar aún más si siente un poco de TOC sobre qué tan bien factorizado debe ser su código. Es posible que las clases muy grandes necesiten ser refactorizadas en unas pocas clases más pequeñas, y los métodos largos de varias líneas pueden desglosarse en varios métodos, otras clases, o incluso pueden indicar alguna repetición que podría eliminarse. Observe que usé la palabra "poder" varias veces allí.
La realidad es que LOC solo proporciona un posible indicador, y no hay una garantía real de que su código deba cambiar. La verdadera pregunta es si el código se comporta como se requiere y como se espera. Si es así, su próxima pregunta es si podrá o no mantener el código fácilmente y si tendrá tiempo ahora o en el futuro para realizar cambios en el código de trabajo para reducir sus gastos generales de mantenimiento en el futuro.
A menudo, un montón de código significa que tendrá más para mantener más tarde, pero a veces incluso un código bien factorizado puede extenderse a cientos de líneas de código, y sí, a veces puede encontrarse escribiendo cientos de líneas de código en un día. Sin embargo, la experiencia me dice que si mantengo una salida de cientos de líneas de código nuevo cada día, a menudo existe el riesgo de que gran parte del código se haya cortado y pegado de manera inapropiada en otro lugar, y eso en sí mismo puede indicar problemas con duplicación y mantenimiento, pero nuevamente eso no es garantía, por lo que tiendo a confiar en lo que mi experiencia e instintos me dicen en función de cómo se completaron las tareas en cuestión.
La mejor manera de evitar el dilema planteado en su pregunta en mi humilde opinión es olvidarse de LOC y refactorizar TODO el tiempo. Primero escriba su prueba de código, implemente para fallar, refactorice para pasar, luego vea qué se puede refactorizar allí y luego mejore el código. Abandonarás la tarea sabiendo que ya has verificado tu trabajo, y no te preocupará tanto cuestionarte en el futuro. Hablando de manera realista, si usa un enfoque de prueba primero como lo he descrito, cualquier medición de LOC / día en su código completado realmente significará que ha escrito 3-5 veces la cantidad medida, con ese esfuerzo ocultado con éxito por su refactorización en curso esfuerzos
fuente
Para nada: algunos días está arreglando un error difícil de encontrar y solo cambia una línea. Otros días agrega código nuevo y escribe varios miles de líneas.
Daily LOC no le dice nada, excepto que las tareas para ese día podrían lograrse con 400 líneas de código.
fuente
Algunas de estas respuestas están perdiendo el punto, no está utilizando LOC como una medida de productividad (si lo fuera, entonces no estaría preocupado por ser demasiado 'productivo'), lo que realmente está haciendo es preocuparse por la calidad de su código porque el código es el enemigo, esto es algo bueno de qué preocuparse.
Desafortunadamente, la única manera de saber sobre la calidad del código es la revisión del código, ya que usted es un equipo de un solo hombre, esto será complicado, incluso si se detuvo para revisar su código (y realmente no quiere parar, ¿verdad?) el propio código no revelará tanto como un compañero que revisa su código. Sugeriría intentar que alguien más revise al menos parte de su código para que pueda saber si su 400 LOC / día está produciendo galimatías o no. Incluso una revisión independiente del código de un día ayudará aquí
fuente
No debe molestarse con la cantidad de LOC que produce por día.
Pero debes preocuparte:
fuente
LOC es una medida 'oficial' de productividad, pero los argumentos en contra de su valor podrían ser largos (un ORM podría generar 50,000 líneas de código en 3 minutos, sin embargo, si el diseño de la base de datos es incorrecto, todo ese código puede ir a la papelera).
Le sugiero que mida su progreso haciendo un seguimiento del% de tareas completadas frente al tiempo frente al% de tareas planificadas para completarse. Esto es lo que cuenta. Los clientes pagan por el código de trabajo que proporciona valor comercial no para los LOC.
Algunas referencias sobre LOC
En contra: LOC-Medida más sin sentido
Neutral hasta cierto punto: Wiki-LOC
Pro (no estoy de acuerdo con la mayoría, pero puedes echarle un vistazo): deseconomías de escala y líneas de código
fuente
¿También está midiendo el número de duplicados de código ?
Si el alto rendimiento se debe a que tiene mucho copiar y pegar en su código, entonces debería preocuparse.
Motivo: en caso de que haya un error en su fuente de copiar y pegar, es difícil y propenso a errores corregir todos los usos de copiar y pegar
fuente
Si crees en un hermoso código funcional, entonces esa debería ser tu única medida
fuente