In terms of readability, you want to keep the conditions in if..else statements both mutually exclusive and collectively exhaustive. In other words, every test should match 1 and only 1 condition.
If you have unrelated conditions (say, "number of members" and "profitability"), you don’t want to taint them by &&ing them together. So in most cases, it is better to have nested if..else blocks.
if (members <= 100) { if (nonProfit) { // ... } else if (notForProfit) { // ... } else { // ... } } else if (100 < members && members <= 1000) { if (profitable) { // ... } else { // ... } } else { // ... }
With more rigid conditional structures though (e.g., repeating if..else blocks), you are probably better off using object lookups. Not only are object lookups faster, but they are much more readable and easier to understand in my opinion. They are less flexible than if..else, which can be either advantageous or disadvantageous based on your requirements.
x>=20. Not sure how much that saves in relation to the overall operations in the statements after the conditional checks. If one of these statements isy = sqrt(a) + sqrt(b) + sqrt(c);, you will probably not notice any significant savings.