Errores al extraer métodos

Cuando se intenta extraer un método puede ocurrir uno o varios de los errores siguientes, por otra parte muy comunes.

El bloque seleccionado hace referencia a un tipo local declarado fuera de la selección

Una declaración de tipo local no forma parte de la selección, pero una de las sentencias seleccionadas para extracción le hace referencia. O bien se amplía la selección para que incluya la declaración de tipo local, o bien se reduce para que no haga referencia a la declaración de tipo local que se ha seleccionado.

A un tipo local declarado en el bloque seleccionado se le hace referencia fuera de la selección

La selección incluye una declaración de tipo local pero también se hace referencia al tipo fuera de las sentencias seleccionadas. O bien se amplía la selección para que incluya todas las referencias al tipo local, o bien se reduce para que no se seleccione la declaración de tipo local.

Valor de retorno ambiguo: el bloque seleccionado contiene más de una asignación a una variable local

En el bloque seleccionado se ha encontrado más de una asignación a una variable local. O bien se reduce la selección para que solamente se seleccione una asignación, o bien se amplía para que también incluya como mínimo todas las referencias a las variables locales menos una.

Valor de retorno ambiguo: se ha encontrado más de una referencia a la declaración local seleccionada

A más de una de las variables declaradas en la selección también se le hace referencia fuera de la selección. O bien se reduce la selección de modo que solo se seleccione una declaración de variables, o bien se amplía para que también incluya como mínimo todas las referencias a las declaraciones de variables seleccionadas menos una.

Valor de retorno ambiguo: se ha encontrado una asignación a una variable local y una referencia a una declaración local seleccionada

El bloque seleccionado contiene una asignación a una variable local. Además, a una de las variables declaradas en la selección también se le hace referencia fuera de la selección. La selección debe reducirse para que se seleccione o bien la asignación o bien la declaración local. O debe ampliarse para que también incluya o bien todas las referencias a una variable local, o bien todas las declaraciones de variables.

Valor de retorno ambiguo: la selección contiene una sentencia de retorno y el método extraído debe devolver un valor

El bloque seleccionado contiene una sentencia de retorno. Además, el método extraído debe devolver un valor porque también se ha seleccionado una asignación a una variable local o una declaración local. O bien se excluye de la selección la sentencia de retorno, o bien se excluyen todas las asignaciones a variables locales y todas las declaraciones de tipo local.

Valor de retorno ambiguo: la expresión no tiene tipo de retorno y el método extraído debe devolver un valor

La sentencia seleccionada es una expresión (por ejemplo, la parte condicional de una sentencia "if-then-else") que debe devolver una valor booleano. Además, el método extraído debe devolver un valor porque también se ha seleccionado una asignación a una variable local. Para solucionar el problema, seleccione toda la sentencia y no únicamente la parte condicional.

La selección contiene una sentencia break pero no se ha seleccionado la sentencia break de destino correspondiente

Para solucionar el problema, o bien se amplía la selección para que incluya la sentencia break/continue de destino, o bien se reduce para que no incluya la sentencia break/continue.

La selección contiene una sentencia continue pero no se ha seleccionado la sentencia continue de destino correspondiente

Para solucionar el problema, o bien se amplía la selección para que incluya la sentencia break/continue de destino, o bien se reduce para que no incluya la sentencia break/continue.

No puede extraerse un método nuevo de la selección. Solo pueden extraerse sentencias del cuerpo de un método de nivel superior.

Este es un mensaje de error genérico que se muestra cuando se encuentra un problema pero realmente no se sabe cuál es el verdadero problema. A continuación se ofrecen algunos ejemplos típicos que dan lugar a este mensaje de error:

La selección empieza dentro de un comentario

No pueden extraerse partes de un comentario. O bien se amplía la selección para que incluya todo el comentario, o bien se reduce para excluirlo.

La selección acaba dentro de un comentario

No pueden extraerse partes de un comentario. O bien se amplía la selección para que incluya todo el comentario, o bien se reduce para excluirlo.

No puede extraerse una selección que acaba en mitad de una sentencia

Ajuste la selección para que incluya un conjunto de sentencias completas. A efectos del método de extracción, las sentencias estás separadas por puntos y coma.

Otros problemas

Los problemas siguientes no necesitan explicación.