2009-10-02 15 views
11

Uso Resharper en el trabajo. Algunos de mis colegas no.¿Debo usar Resharper para ordenar el código de otras personas?

Cuando abro un código que ha sido escrito por alguien que no lo tiene, es inmediatamente obvio por la cantidad de naranja en mi pantalla.

Lo que no estoy seguro es en qué medida debería sentirme libre de arreglar los líos que sin saberlo han dejado. Con la mayor parte de lo que estoy viendo, es descuidado pero inofensivo, y realmente no me saltaría si nunca hubiera usado Resharper.

supongo que veo mis opciones en términos generales como

1) La historia de los cambios en el código fuente es esencial para el mantenimiento. Cambie lo menos posible, o el próximo tipo no tendrá la esperanza de descubrir qué ha cambiado. A quién le importa el código inalcanzable, el uso innecesario de .ToString() etc. de todos modos.

2) Cambie las cosas sin sentido como incluye, corrige los comentarios de la documentación del método y cosas por el estilo. Al chico que lo escribió le gusta que su código se vea así, así que déjalo en un estado en el que no se queje, pero deshazte de la naranja innecesaria

3) Naranja es solo roja pero más clara. F12 luego Alt + Intro hasta que aparezca verde.

4) Olvide la naranja, mire esa función de línea monstruo 700. ¿Qué es este 1997? Es hora de estar ocupado ... y si tiene tiempo, presente a su colega a nuestro buen amigo y mentor, el Sr. Fowler.

Tiendo a revolotear entre las opciones dependiendo de cuánto tiempo tengo, en qué medida ahora soy responsable del código, y qué tan complejo se ve el código (lo que me puede hacer 1 o 4 por lo general).

Parece que una de las 4 opciones debe ser el que me esfuerzo para pesar, pero no tengo ni idea de cuál

+0

parece que está respondiendo a su propia pregunta con sólo hacer lo que pueda cuando pueda . – thepaulpage

+2

Quizás no deba comentar después de beber una botella de vino, pero me parece una locura que la gente parezca más preocupada por ofender a su "compañero de equipo" que por la función de 700 líneas. Parece que el alcohol me convierte en un idiota purista. – Modan

+0

Agregue la etiqueta ".net". – BryanH

Respuesta

17
"Leave the campsite cleaner than you found it." 

Es el principio boyscout. Si se trata de "su" código y lo mantienen luego de introducir poca limpieza, los cambios no deberían ofenderlos, pero ir demasiado lejos puede parecer descortés o puede que usted se apropie efectivamente del código.

+3

Recientemente escuché a un desarrollador decir "bueno, realmente no puedo ayudarlo. El código ha cambiado por completo desde la última vez que lo vi". Creo que quién tiene la propiedad de avanzar es un muy buen punto – Modan

+0

@Modan, te recomiendo que reemplaces las declaraciones explícitas de tipo con "var" s (a través de la limpieza para una solución completa) y te ríes diabólicamente de ellas. ¡ellos lo aman! :) –

+0

Dicho esto, el reafilador a veces quiere convertir una intrincada construcción 'forEach' en una línea grande, larga y poco legible de Linq. Cuando quiera hacer eso, apago la notificación por comentario y agrego una nota que el código siguiente es menos legible como Linq. –

6

hago un "cambio de formato" registro de entrada antes de cambiar cualquiera de la lógica real, esto forma en que puedes ver lo que ha cambiado

+4

Eso es bueno para una diferencia, pero cuando vas a hacer una culpa SVN para ver quién hizo qué cambio, tu nombre estará en todas partes. – Alan

+0

@ Alan :) Creo que la idea es que todos en el equipo deberían reformatear antes del check-in. – Dan

+0

Siempre puede utilizar el gancho de confirmación para comparar el código enviado con el mismo código ejecutado a través del formateador. Si los dos no son idénticos, la confirmación falla con un aviso. Esto asegura que todo el código se formateará antes del envío (o que los desarrolladores se quejarán y se quejarán y luego descubrirán cómo eludir el enlace). – BryanH

14

Su equipo debe estar de acuerdo con una norma. Si alguien más usa otra herramienta, puede encontrarse en una guerra de edición involuntaria.

Pero si todos pueden estar de acuerdo, entonces sí. Limpia el código sobre la marcha.

2

Si las herramientas de desarrollo en su equipo no son las mismas, eventualmente habrá aún más problemas. Sigue el check-in "reformateado" sugerido arriba y estandariza el conjunto de herramientas con tus colegas, ya sea bajando el reafilador o dando a todos la varita mágica de formateo.

1

Si ya está registrado, tenga cuidado. Algunas personas se ponen terriblemente sensibles y se considera grosero si alguien en su equipo todavía está utilizando herramientas de hace una década que no pueden desactivar la detección del espacio en blanco durante una diferencia.

En general, voy a limpiar el estilo del código para ponerlo en línea con los objetivos de estilo de organización establecidos cuando toco el código por otra razón. Sin embargo, intente recordar que el estilo es estilo y, como tal, no existe "una sola manera verdadera". No hagas enemigos porque no te gusta el hecho de que un colega use menos (o más) espacios en blanco que tú.

+0

Mi versión de GNU diff se creó en 2002 (3 años antes de la década, pero aún así), y puede detectar e ignorar el espacio en blanco sin problemas, gracias. Configuré SVN para usar esa particular diff y todo está bien en el mundo. – BryanH

+0

A veces, el espacio en blanco es significativo, por lo que no a todos les gusta desactivar la detección de espacios en blanco. (Por cierto, mi herramienta diff es de 1996 y también puede ignorar el espacio en blanco.) – MarkJ

5

La refactorización innecesaria es solo eso - innecesario. Agrupa los registros del historial del repositorio y puede introducir errores.

Si se supone que el material "sin sentido" (documentación, comentarios, etc.) se formatea de cierta manera, y no cumple con sus estándares de desarrollo, entonces lo haría todo de una vez en el menor número de registros posible .

Cuando realmente está trabajando en las piezas de código y tiene la oportunidad de probar sus cambios, haga la refactorización a continuación. Resharper siempre estará disponible para mostrarle el camino en ese punto.

+4

Sí, pero no todos se preocupan por el código de la misma manera. Algunas personas se contentan con "cagar donde comen", por así decirlo. –

+2

Los gerentes no deben dejar que la gente vaya a comer. Si tiene un problema con la calidad del código en su equipo, lo mejor es hablar con su gerente al respecto, en lugar de decirle a otras personas que cree que su trabajo es bueno (y que el suyo es mejor) al refaccionarlo en su nombre. –

+2

@Jason - sí. Y puedo agregar "refactorizar innecesariamente en su nombre". A menos que haya un problema identificado con su código (un error, un problema de estándares de código, lo que sea), refactorizarlo es innecesario y un trabajo hecho a mano, sin importar cuánto lo ofenda personalmente como codificador. – womp

2

Cada vez que cambie algo, independientemente de la intención, corre el riesgo de romper algo involuntariamente. En el aspecto personal, no cambiaría el código de otra persona sin hablar primero con ellos.

2

Recomiendo solo cambiar cosas cuando lo necesite. Existe, por supuesto, una definición variable de lo que significa "necesidad". Por ejemplo, si escribe un método que llama a otro método, ¿y este método que está llamando tiene una duplicación de código? Refactorizaría eso, y mientras estoy en eso eliminaría el exceso de declaraciones using, etc. Sin embargo, trataría de evitar solo un refactor masivo de toda la base de código "solo porque".

1

Mi sugerencia sería que si usted hace un cambio de formato que se haga por separado de las modificaciones de código. La razón de esto es que puede marcarlo como "reformatear solamente" en el repositorio y un cambio de código legítimo no será ocultado en medio de un grupo de cambios de espaciado, lo que hace imposible que usted o el siguiente tipo descubran qué se rompió .

1

Como la mayoría de la gente ya ha dicho, sí, es mejor refactorizar y dejarlo más ordenado.

La refabricación ayuda a todos a mejorar, y todos deberían tener acceso a las herramientas de refactorización (Coderush para mí).

Sin embargo, si sus compañeros no están compartiendo el amor refactorización, entonces es una buena oportunidad para que los ilumine :)

Cuestiones relacionadas