Another possibility if you don't like to see too many the else's is to drop the use of **else** altogether and throw in an extra return statement. **Else** is kind of superfluous unless you require more complex logic to determine if there are more than just two action possibilities. Thus your example might become: void DoABunchOfStuff() { if(FileExists(file)) { DoSomethingWithFileContent(file); return; } DefaultAction(); } void DoSomethingWithFileContent(file) { var contents = GetFileContents(file) if(SomeTest(contents)) { DoSomething(contents); return; } DefaultAction(); } AReturnType GetFileContents(file) { return OpenFile(file); } Personally I don't mind using the **else** clause as it states explicitly how the logic is supposed to work, and so improves readability of your code. Some code beautification tools however prefer to simplify to a single **if** statement to discourage nesting logic.