[@McConnell2004]
Возвраты
- Используют ли методы операции возврата только при необходимости?
- Улучшают ли операторы возврата читабельность?
Рекурсия
- Содержит ли рекурсивный метод код для прекращения рекурсии?
- Использует ли метод счетчик безопасности для гарантии того, что выполнение будет завершено?
- Ограничена ли рекурсия одним методом?
- Соответствует ли глубина рекурсии ограничениям, налагаемым размерами стека программы?
- Является ли рекурсия лучшим способом реализации метода? Не лучше ли использовать простые итерации?
goto
- Используются ли операторы
goto
только как последнее средство и лишь для того, чтобы сделать код удобнее для чтения и сопровождения? - Если
goto
используется для оптимизации, был ли прирост производительности измерен и задокументирован? - Ограничено ли использование
goto
одной меткой на метод? - Выполняются ли переходы
goto
только вперед, а не назад? - Все ли метки
goto
используются?
Ключевые моменты
- Множественные возвраты могут улучшить читабельность и сопровождаемость метода и помогают избежать глубокой вложенности. Тем не менее использовать их нужно осторожно.
- Рекурсия предлагает изящное решение для небольшого набора задач. Ее тоже нужно использовать аккуратно.
- Иногда операторы
goto
— лучший способ облегчить чтение и сопровождение кода. Таких случаев очень немного. Используйте goto только как последнее средство.