¿Necesita un interruptor de interrupción cuando se utiliza el retorno?

4 minutos de lectura

avatar de usuario
CEM

Me preguntaba si necesito usar break en un switch función cuando return se usa

function test($string)
{
  switch($string)
  {
    case 'test1':
      return 'Test 1: ' . $string;
    case 'test2':
      return 'Test 2: ' . $string;
  }
}

Lo he probado y funciona bien sin break. ¿Pero es esto seguro?

  • qué pasará si $string=’testx’;

    – Jagadeesan

    13 de junio de 2011 a las 12:19

avatar de usuario
insumo

Sí, puedes usar return en vez de break

break es opcional y se usa para prevenir “descendente“a través de todos los demás case declaraciones. Asi que return se puede usar de manera similar, como return finaliza la ejecución de la función.

Además, si todos sus case las declaraciones son asi:

case 'foo':
   $result = find_result(...);
   break;

y despues de la switch declaración que acaba de tener return $resultusando return find_result(...); en cada case hará que su código sea mucho más legible.

Por último, no te olvides de añadir el default caso. Si cree que su código nunca llegará al default caso, entonces podrías usar el assert función, porque nunca se puede estar seguro.

  • Gracias Luzhin, eso es lo que pensé.

    – CEM

    13 de junio de 2011 a las 12:02

avatar de usuario
nana

No necesita un descanso, el retorno detiene la ejecución de la función.

(para referencia: http://php.net/manual/en/function.return.php dice:

Si se llama desde dentro de una función, la instrucción return() finaliza inmediatamente la ejecución de la función actual

)

No, no es necesario, porque cuando se llama a la palabra clave return, indicará que la función particular a la que se llamó el interruptor/caso ha llegado a su fin.

No, no necesitas un break en un switch case declaración. los break en realidad es opcional, pero utilícelo con precaución.

No lo necesita, pero recomendaría encarecidamente usarlo en cualquier caso como una buena práctica.

  • no tiene sentido, ya que el retorno existe claramente por sí mismo en la ejecución =) Menos código es mejor.

    – CEM

    13 de junio de 2011 a las 12:17

  • ¡Menos código! = mejor. Ve a jugar al golf de código. Prefiero tener un código legible y explícito que un código sobreoptimizado solo para que pueda estar en una línea a expensas de la legibilidad y la comprensión.

    – Martín Bean

    14/11/2014 a las 21:05

  • Puedes argumentar esto en ambos sentidos. Algunos compiladores advierten sobre el código no ejecutable después de un retorno en un cambio, otros no. Es una preferencia personal, y para mí al menos está influenciada por la cantidad de veces que me han picado al caerme a través de un interruptor, me gusta ver la ruptura.

    – Harry

    8 de abril de 2016 a las 5:16

avatar de usuario
MendelG

return devuelve el control al método de llamada, mientras que break salta a la primera instrucción después del bloque interruptor.

  • no tiene sentido, ya que el retorno existe claramente por sí mismo en la ejecución =) Menos código es mejor.

    – CEM

    13 de junio de 2011 a las 12:17

  • ¡Menos código! = mejor. Ve a jugar al golf de código. Prefiero tener un código legible y explícito que un código sobreoptimizado solo para que pueda estar en una línea a expensas de la legibilidad y la comprensión.

    – Martín Bean

    14/11/2014 a las 21:05

  • Puedes argumentar esto en ambos sentidos. Algunos compiladores advierten sobre el código no ejecutable después de un retorno en un interruptor, otros no. Es una preferencia personal, y para mí al menos está influenciada por la cantidad de veces que me han picado al caerme a través de un interruptor, me gusta ver la ruptura.

    – Harry

    8 de abril de 2016 a las 5:16

avatar de usuario
benmorel

Break es solo una declaración de advertencia que se usa para limitar el control de la estructura del interruptor para que no pase a otro caso … por ejemplo, si tiene tres declaraciones de caso y el valor es para el primer caso y ha usado el caso sin ninguna estructura de interrupción, entonces todos los casos siguientes se ejecutará a pesar de que la condición se cumpla solo para el primer caso … Return puede realizar la función asme, por lo que no será un problema si usa return en lugar de break porque return quitará el control de la declaración de cambio de caso cual es la necesidad en ese momento…… espero que ayude….

¿Ha sido útil esta solución?

Esta web utiliza cookies propias y de terceros para su correcto funcionamiento y para fines analíticos y para mostrarte publicidad relacionada con sus preferencias en base a un perfil elaborado a partir de tus hábitos de navegación. Al hacer clic en el botón Aceptar, acepta el uso de estas tecnologías y el procesamiento de tus datos para estos propósitos. Configurar y más información
Privacidad