задача посчитать в списке сумму четных и нечетных индексов и дальше выполнить манипуляции. Для этого я написал небольшую функцию для подсчета суммы внутри основной функции
https://t.me/advice17/7
Нет. Как минимум для тестирования лучше все функции делать глобальными
я не буду переиспользовать эту функцию в других частях кода, я не модифицирую переменные и работаю уже с результатами вложенной функции. Я не нашел ни одной причины этого не сделать)
ты вообще читал пост?
перечитай что там написано, ну и ты должен НАЙТИ ПРИЧИНУ ЭТО СДЕЛАТЬ, а не наоборот
просто все что ты написал как раз ведет тебя в отдельной функции, 0 аргументов за вложенную привел и хз как ты тогда читал
Недостатки вложенных функций: * Они создаются при каждом запуске внешней функции * Их невозможно протестировать * Увеличивают вложенность кода, что усложняет чтение
внутри той же первой функции считай суммы элементов, либо же просто создай ещё одну функцию в которую отправишь список, и она вернёт суммы элементов
1. она будет вызываться всегда когда будет вызвана основная функция, сама по себе она бесполезна 2. Там тестировать нечего, туда попадают уже чистые данные. 3. Там функция без её определения одна строчка, куда там заблудиться можно
1. и? это не повод пересоздавать её 2. если нечего тестировать, функцию можно удалять вместе с кодом. 3. тогда непонятно зачем функция
ну может быть ты и прав, и стоит просто выпилить её
ну так и удали её, если там тестировать нечего.
стоит её не выпилить, а переместить в глобальный скоуп
да вынеси ты её наружу, дай нормальное имя. БУдет лежать никому не мешать
Это может выглядеть прикольно с точки зрения организации кода (типа, всё связанное лежит рядом и не мешает остальному), но это так себе аргумент и плюсы на этом заканчиваются.
Тут, кстати, есть момент. При рефакторинге можно очень легко пропустить такие одноразовые штуки. Если внешняя функция станет не нужна и её удалят, совсем не факт, что эту служебную заметят и увидят, что она использовалась только в одном месте. В результате в проекте годами могут жить призраки, которые нигде не нужны, но удалить никто не решается.
хм, разумно. Возможно тут бы помог __all__ и линтер
Чем? Просто я на нескольких долгоживущих проектах с подобной проблемой сталкивался и оно нормально не решалось. В итоге приходилось тратить время на отдельные процедуры плана "походить по коду и вычистить неиспользуемое". Иногда выкашивалось целыми модулями...
Наверное вопрос возникает в том, что читающий код не поймет смысл данной функции, но хотя можно поискать где она юзается....
ну такую внутреннуюю функцию не добавляешь в all и настраиваешь линтер ругаться на неиспользуемые функции
Интересный вариант, надо подумать, чем это грозит.
тем что придется везде all писать =))
Это да. уже малость неприятно. Подозреваю, что ещё проблемы могут вылезти с какими-нибудь ложными срабатываниями.
Обсуждают сегодня