2011-06-05 15 views
5

¿Hay alguna manera de colapsar esto en una condición if, o simplemente una instrucción return?Contraer sentencias if cuando se completa más de una condición

 public bool SomethingEnabled 
    { 
      if (!condition1) 
      { 
       return false; 
      } 

      return condition2 
       && (condition3 || !condition4); 
     } 
+3

¿Por qué quieres hacer esto? Ciertamente no estás bajo la noción equivocada de que hay menos líneas de código => tiempos de ejecución más rápidos, ¿verdad? –

+0

@Cody - A continuación, le estará diciendo a la gente que no hay santa claus. –

Respuesta

7

Esto es equivalente:

public bool SomethingEnabled 
{ 
    return condition1 && condition2 && (condition3 || !condition4); 
} 

pero en aras de la legibilidad y facilidad de mantenimiento, me fuertemente advertir contra la escritura de código que es demasiado inteligente.

+0

No creo que necesite paréntesis adicionales en '(condition2 && ..)' –

+0

Supongo que tiene razón. Editado –

+0

Creo que es justo dar la respuesta a 'troutheality'. Él fue el primero con la implementación más corta. –

2
return condition1 && condition2 && (condition3 || !condition4); 
2
return condition1 && (condition2 && (condition3 || !condition4)); 

La primera condición es devolver false si condición1 es falsa. La condición se evaluará como falsa si la condición1 es falsa. Si es cierto, se evalúa como lo que haga el resto.

+0

@Matt Tomo lento y con errores tipográficos. ¿Qué puedo decir: P – Aleadam

1

Mejor nombres y funciones de los pequeños ayudaría:

public bool SomethingEnabled 
{ 
    if (IsInvalid) return false; 

    return IsInReadyState && IsInOtherState; 
} 

public bool IsInvalid 
{ 
    return !condition1; 
} 

public bool IsInReadyState 
{ 
    return condition3 || !condition4; 
} 

public bool IsInOtherState 
{ 
    return condition2; 
} 
+0

Bonito sentimiento. 'IsValid' generaría un código más legible que' IsInvalid' (considere cuando se combinan con '!'). También 'SomethingEnabled' podría simplificarse aún más. – Johnsyweb

+0

@Johnysweb - Sí, la falta de contexto dificultaba mostrar lo que quería mostrar. –

+1

Sí, sí, ¡mil veces sí! Legibilidad sobre la inteligencia. –

Cuestiones relacionadas