Разработка ПО и Backend систем.

Режем ветки или сокращение использование ветвления

Качество видео слабое, запись старая

Почти всегда в решениях алгозадачек вижу «брутфорсный» код, написанный прямолинейно, в лоб:
— переменные из одного символа
— куча вложенных условий, но за вложенные циклы конечно переживают, ведь иначе решение рискует провалиться по сложности алгоритма
— дублирование определенных действий
Я в шутку это называю «отсутствие вкуса по Торвальдсу» с отсылкой на  статью, но общепринятое название «олимпиадный код». На скрине, кстати, код из исходников ChromiumOS, по нему точно можно понять, что вертеть деревьями ребята умеют.

Если переносить чистый математический алгоритм в код, возможно настолько прямой подход будет хорош — запрятать код куда-нибудь в нижние уровни абстракций, куда пропуск по отпечатку пальца или же по цитированию рандомного алгоритма из книжек Кнута, сократить число вносимых изменений в подобный фрагмент и жить спокойно. Но что-то мне подсказывает(да и не только мне), что жестких алгоритмических задач мы уже давно не решаем, а больше крутим бизнес логикой приложений и функциональностью «принеси, подай, ...».

Есть пара хороших подходов, которых я придерживаюсь, но порой не так просто их внедрить, как хотелось бы(еще коллеги думают, что ты в секту вступил). Один из них — держать цикломатическую сложность близкой к 1.
Единица здесь — больше идеальное значение, к которому нужно стремиться, но соблюдая здравый смысл. Например вместо

if something:
    if something_else:
        # do

писать

if something and something_else:
  # do

Отказ от else ветки условий сюда же. Из недавного на ревью:

if current not in cache:
  # do
else:
  # do

меняем на

if current not in cache:
  # do
  return / continue
# do else

Отказаться от ветвлений совсем по сути невозможно(хотя тут можно поиграться с полиморфизмом, как динамическим, так и статическим), но опять же можно спустить их на нижние уровни абстракций, чтобы сделать код бизнес логики совсем линейным.