2009-12-18 26 views
6

Estoy usando Resharper para la refactorización. ¿A qué se llama este tipo de característica cuando tiene el mismo código en alrededor de 5 eventos diferentes que se están llamando pero quiere reemplazarlos con una llamada a un método? Y coloque ese código en ese método.Refacturación de código duplicado en los métodos

Todo hecho automáticamente.

Gracias

Respuesta

4
+2

¿cómo puedo obtener todos ellos en el método a la vez? El mismo código se encuentra en eventos múltiples –

+1

No creo que se pueda hacer. Pero aún puedes lograrlo fácilmente. Extraiga el método una vez, copie y pegue la llamada al método de esa extracción en los otros lugares y cambie el nombre de los parámetros según sea necesario. O bien, use Resharper para extraer un método por cada vez que se duplica el código y luego elimine todos menos uno de los métodos y reemplace las llamadas al método que queda. – jason

+1

El uso canónico del Método de extracto es extraer dos trozos de código casi duplicado cada uno en su propio método; use otras refactorizaciones para hacer que los dos métodos sean idénticos; reemplace una llamada al Método 2 con una llamada al Método1; eliminar Método2. Por supuesto, ejecute sus pruebas unitarias entre cada refactorización. Repita hasta que todas las duplicaciones hayan desaparecido. –

14

He estado trabajando en un complemento Resharper que hace lo que está pidiendo. Es decir, escanea su código, buscando secciones que puedan ser reemplazadas por una llamada de método existente. Una sección puede ser un método completo o solo una parte de un método. Cuando encuentra uno, aparece la bombilla y ofrece reemplazar dicha sección con una llamada al método existente.

alt text http://landofjosh.com/wp-content/uploads/2009/08/identicalmethodsquickfix-cropped.png

me llaman AgentRalph. En este momento no está listo para su uso en producción, pero he progresado mucho y espero lanzarlo pronto.

+0

este es un hombre muy agradable. –

1

Vea nuestro C# CloneDR. Si bien no reemplaza el código redundante con llamadas a funciones, sí le indica dónde se encuentran en un sistema muy grande y forma la abstracción esencial (cuerpo del procedimiento y parámetros). El enlace web tiene ejemplos de análisis de clonación para el equivalente C# de Hibernate (NHibernate).

Cuestiones relacionadas