[@McConnell2004]

Возвраты

  • Используют ли методы операции возврата только при необходимости?
  • Улучшают ли операторы возврата читабельность?

Рекурсия

  • Содержит ли рекурсивный метод код для прекращения рекурсии?
  • Использует ли метод счетчик безопасности для гарантии того, что выполнение будет завершено?
  • Ограничена ли рекурсия одним методом?
  • Соответствует ли глубина рекурсии ограничениям, налагаемым размерами стека программы?
  • Является ли рекурсия лучшим способом реализации метода? Не лучше ли использовать простые итерации?

goto

  • Используются ли операторы goto только как последнее средство и лишь для того, чтобы сделать код удобнее для чтения и сопровождения?
  • Если goto используется для оптимизации, был ли прирост производительности измерен и задокументирован?
  • Ограничено ли использование goto одной меткой на метод?
  • Выполняются ли переходы goto только вперед, а не назад?
  • Все ли метки goto используются?

Ключевые моменты

  • Множественные возвраты могут улучшить читабельность и сопровождаемость метода и помогают избежать глубокой вложенности. Тем не менее использовать их нужно осторожно.
  • Рекурсия предлагает изящное решение для небольшого набора задач. Ее тоже нужно использовать аккуратно.
  • Иногда операторы goto — лучший способ облегчить чтение и сопровождение кода. Таких случаев очень немного. Используйте goto только как последнее средство.