Как разработчик программного обеспечения, мы всегда должны стремиться поддерживать хорошее качество кода, следуя лучшим практикам или стандартам. Это делается для того, чтобы код, предназначенный для решения проблемы, был удобочитаемым и удобным в сопровождении в долгосрочной перспективе. Цитируя Гвидо ван Россума, «код читают гораздо чаще, чем пишут». что в значительной степени подводит итог дня разработчика программного обеспечения! 😄

Здесь я попытаюсь обобщить некоторые практики, которым я научился и которым следовал при работе с языком программирования Python.

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

Соглашения об именах (PEP-8)

  1. Переменные, функции, методы, пакеты, модули: this_is_a_variable(Snake-case)
  2. Классы и исключения: CapWords (случай Pascal)
  3. Защищенные методы и внутренние функции:_single_leading_underscore
  4. Закрытые методы: __double_leading_underscore
  5. Константы: CAPS_WITH_UNDERSCORES (все заглавные буквы)

Общие рекомендации

  1. Сохраните все зависимости в файле requirement.txt для лямбда-выражения.
  2. Поддерживать все константы в файле constants.py для лямбда-выражения
  3. Нулевая проверка перед доступом к значениям и проверка против None (очень важно). Например,
bad practice:
if data["state"] == "fixed":
good practice:
if data and data["state"] == "fixed":

4. Аннотация метода с ожидаемым типом возвращаемого значения для обеспечения соблюдения типов. Например,

def circumference(radius: float) -> float:

5. Не используйте жестко закодированные строки. Вместо этого используйте константы.

bad practice:
"google.com" in link:
good practice:
google_link in link:

6. Избегайте использования запутанных вложенных if-else. Вместо этого используйте переключатель, если это возможно.

7. Используйте константы или перечисления вместо магических чисел.

8. Никогда не игнорируйте исключения, которые вы ловите! Ошибки никогда не должны проходить бесшумно.

bad practice:
catch Exception as ex:
     pass

9. Кэш/сохранение часто используемых значений.

10. Используйте условные проверки для проверки условий из белого списка.

11. Задокументируйте методы __init__ в строке документации для класса.

12. Используйте геттеры и сеттеры вместо прямого доступа к глобальным и приватным

>>> class C:
… @property
… def x(self):
… return self.__x
… @x.setter
… def x(self, value):
… self.__x = value

13. Используйте интерполяцию строк или библиотеку шаблонов строк, чтобы избежать проблем с безопасностью.

14. Осторожно используйте in и == для сравнения строк.

15. Для чтения и записи в файл используйте менеджеры контекста оператора With, так как он управляет закрытием дескриптора файла для вас.

Это лишь некоторые из практик, и есть гораздо больше, если вы хотите узнать больше, я рекомендую ознакомиться с руководством по стилю PEP-8, упомянутым в хороших чтениях ниже. Надеюсь, вы найдете эту статью полезной. Спасибо за чтение! 😃

Другие полезные материалы для чтения –