In termini di leggibilità, si desidera mantenere le condizioni nelle istruzioni   if..else    sia  mutuamente esclusive  che  collettivamente esaurienti . In altre parole, ogni test dovrebbe corrispondere a 1 e solo a 1 condizione. 
 Se disponi di condizioni non correlate (ad esempio, "numero di membri" e "redditività"), non vuoi contaminarle con   &&    inserendole insieme. Pertanto, nella maggior parte dei casi, è meglio avere nidificati blocchi   if..else   . 
if (members <= 100) {
  if (nonProfit) {
    // ...
  } else if (notForProfit) {
    // ...
  } else {
    // ...
  }
} else if (100 < members && members <= 1000) {
  if (profitable) {
    // ...
  } else {
    // ...
  }
} else {
  // ...
}
 Con strutture condizionali più rigide (ad es., ripetendo blocchi   if..else   ), probabilmente stai meglio usando  ricerche oggetto . Non solo le ricerche di oggetti sono più veloci, ma sono molto più leggibili e più facili da capire a mio parere. Sono meno flessibili di   if..else   , che può essere vantaggioso o svantaggioso in base alle tue esigenze.