Руководство по программированию¶
Этот перечень инкрементально пополняется по мере рецензирования кода, производимого Командой качества OpenERP. Он содержит набор специфичных для OpenERP хорших/плохих практик наряду с более общими подборками рекомендаций в области программирования на Python.
Оба раздела ОБЯЗАТЕЛЬНЫ к прочтению каждым разработчиком или добровольцем команды OpenERP.
В качестве введения, всегда держите в голове следующее правило:
Каждая написанная строчка пишется единожды, но будет прочитана множество раз другими людьми (и вами тоже)
Несмотря на утверждение очевидного, эта фраза означает, что, следуя всяческим рекомендациям, вы всегда должны опираться на собственное восприятие, чтобы достичь наилучшей читаемости. И если написание читаемого участка кода требует особых усилий — это ухудшает его в сотни раз.
- 1 Гид по стилю Python
- 1.1 волшебные методы
- 1.2 .clone()
- 1.3 “clone и update”
- 1.4 “update вручную”
- 1.5 Создание Java-словарей
- 1.6 “временные kwargs”
- 1.7 формально и неформально устаревшие методы
- 1.8 бесполезный переменные-посредники
- 1.9 3 строки и код готов
- 1.10 Множество точек возврата — это нормально, если не усложняет жизнь
- 1.11 Избегайте проверки типа
- 1.12 Не используйте вызов type если вы уже знаете, какой тип хотите получить
- 1.13 Но на самом деле, если нужна проверка типа, используйте предоставленные python инструменты
- 1.14 Не создавайте функций, вызывающих то, что уже можно вызвать
- 1.15 Знайте про встроенное
- 1.16 Изучаем обозреватели списков
- 1.17 Изучите стандартную библиотеку
- 1.18 Коллекции — тоже логические величины
- 1.19 Вы можете добавить одиночный объект в список, это нормально
- 1.20 Добавлять списки в б`ольшие списки
- 1.21 Изучите стандартную библиотеку (2)
- 1.22 Если итерируете — итерируйте
- 1.23 Цепочки вызовов — это нормально до тех пор, пока не надоест вам
- 1.24 Используйте dict.setdefault
- 1.25 Используйте константы и избегайте волшебных чисел
- 2 Рекомендации, специфичные для OpenERP
- 2.1 Bazaar — ваш историк
- 2.2 Называйте рыбу рыбой
- 2.3 Не пренебрегайте ORM
- 2.4 Пожалуйста, не надо SQL-инъекций!
- 2.5 Выносите код
- 2.6 Неизвестный контекст
- 2.7 Порой есть что-то лучше lambda-выражений
- 2.8 По возможности, сохраняйте методы короткими/простыми
- 2.9 Никогда не подтверждайте транзакции
- 2.10 Корректно используйте методы gettext
- 3 Рекомендации по автоматическому тестированию с использованием YAML
- 3.1 Синтаксис
- 3.2 Тесты запускаются на стороне сервера
- 3.3 Будьте предсказуемы в постановке цели тестирования
- 3.4 Избегайте использования данных, которые пользователь может изменить до запуска теста
- 3.5 Описывайте в тестах то, что можно легко проверить с помощью YAML
- 3.6 Не полагайтесь на демонсрационные данные, если пользователь может их изменить
- 3.7 Не проверяйте полный текст исключения
- 3.8 Будьте более функциональны. Поясняйте, что пользователь должен сделать, а не куда он должен нажимать
- 3.9 В тестах можно использовать вызовы “onchange” для симуляции клиентского интерфейса
