July 16
Правила написания кода
1 Производительность
стараться не допускать
чаще использовать
- силу всех хранилищ данных (list, tuple, set, frozenset, numpy arrays)
- списковые включения
- оптимизированные функции (стандартная библиотека, numpy)
- генераторы при больших объемах данных
- branch predictor
2 Читаемость
стараться не допускать
- переменных, условий, циклов находящихся вне функций являясь ее частью
- создание аргументов для функций если они не используются больше 1 раза
чаще использовать
- нейминг по таким правилам: действие (если оно есть), обьект получения, тип данных обьекта, количество (get_data_list_1). допустимо сокращение слова если сокращаемое находится в корне директории ({object} get -> {part of the object} g_data)
- аннотации типов данных
def greet(name): ''' ARGS: name (str): the name to greet RETURNS: list[str]: list of name elements COMM: example of a comment '''
3 Компактность
чаще использовать
Принципы "Скорость, читаемость, компактность" при написании кода имеют важное значение, потому что они помогают создать эффективный, поддерживаемый и устойчивый код. Вот объяснение каждого из этих принципов и почему они важны именно в этом порядке:
1. Скорость
Почему важна:
- Производительность: Быстрый код обеспечивает лучшее время отклика и может обрабатывать больше данных за меньшее время. Это особенно важно в приложениях, где производительность критична (например, высоконагруженные серверы, игровые приложения, системы реального времени).
- Ресурсы: Быстрый код обычно использует меньше ресурсов (CPU, память), что может снизить затраты на оборудование и инфраструктуру.
Почему на первом месте:
- Если код не выполняется достаточно быстро, даже самый читаемый и компактный код теряет свою ценность, так как не удовлетворяет основные требования производительности.
- Производительность часто труднее всего улучшить постфактум; лучше проектировать быстрый код с самого начала.
2. Читаемость
Почему важна:
- Поддержка: Читаемый код проще понять, отладить и модифицировать. Это особенно важно для командной работы, когда несколько разработчиков работают над одним проектом.
- Ошибки: Читаемый код с меньшей вероятностью содержит ошибки, так как его проще рецензировать и тестировать.
- Документация: Читаемый код часто не требует обширной документации, так как сам по себе является самодокументируемым.
Почему на втором месте:
- Читаемость важна, но не должна идти в ущерб производительности. Иногда приходится делать компромисс между читаемостью и скоростью ради достижения необходимых показателей производительности.
- После того как основные требования производительности достигнуты, можно уделить внимание улучшению читаемости кода, не жертвуя при этом скоростью.
3. Компактность
Почему важна:
- Простота: Компактный код может быть легче понимать и поддерживать, если он не усложняет логику.
- Объем кода: Меньше кода означает меньше потенциальных мест для ошибок и уменьшение времени, необходимого для его написания и проверки.
Почему на третьем месте:
- Компактность не должна идти в ущерб читаемости или производительности. Чрезмерно компактный код (например, чрезмерное использование лямбда-функций или односимвольных переменных) может быть трудным для понимания и сопровождения.
- После того как достигнута оптимальная производительность и читаемость, можно рассматривать оптимизацию компактности, чтобы упростить код и уменьшить его объем.
Заключение
Этот порядок - "Скорость, читаемость, компактность" - позволяет сначала гарантировать, что код удовлетворяет требованиям производительности, затем делает его понятным для других разработчиков, и наконец, оптимизирует его объем для дальнейшего упрощения и поддержания. Следование этому порядку помогает создать сбалансированный, эффективный и устойчивый код.