Почти каждый разработчик программного обеспечения ведет нескончаемую борьбу: мы стремимся сделать нашу кодовую базу более простой и, следовательно, более читаемой с каждым днем.
Сложность добавляется почти каждый раз, когда мы взаимодействуем с кодовой базой. Простое добавление функций, вероятно, приведет к дополнительной сложности, и мы ничего не можем с этим поделать.
Но есть шаблоны, которым мы можем следовать, чтобы свести сложность к минимуму. Самый простой шаблон, который вы можете начать применять сегодня и который оказывает впечатляющее влияние на сложность, - это условие защиты.
Взгляните на следующие 2 фрагмента, которые дают тот же результат.
fun nested() {
if (condition1) {
doThings1()
if (condition2) {
doThings2()
if (condition3) {
doThings3()
} else {
throw Exception3()
}
} else {
throw Exception2()
}
} else {
throw Exception1()
}
}
fun guard() {
if (!condition1) {
throw Exception1()
}
doThings1()
if (!condition2) {
throw Exception2()
}
doThings2()
if (!condition3) {
throw Exception3()
}
doThings3()
}
Вы можете видеть, что тот же код, использующий защитные предложения, легче читать.
Короче говоря, вложение добавляет сложности. Наша кодовая база, заполненная операторами if, полна вложенности. Избегайте ненужного вложения, и вы уменьшите сложность.
Когда есть глубокая вложенность, вам нужно больше «мысленной» обработки, чтобы держать все в своей голове.
К тому же все стало более «локальным». Соответствующее исключение выдается, как только возникает ошибка. Не нужно гнаться за фигурными скобками, чтобы понять, когда что-то брошено.
Надеюсь, этот простой трюк сделает ваш код более читабельным с минимальными усилиями.
Удачного кодирования!