Анти-паттерны
Django
- default=None в BooleanField
- null=True и blank=True со строковыми полями
- null=True или blank=True вместе с default
Безопасность
Декомпозиция
- Громадный блок кода
- Лишний код в try-except
- Многозадачная функция
- Сложная логика в lambda
- Сложные выражения
- Смешанный try-except
Исключения
- except Exception
- try-except вместо suppress
- Забытый DoesNotExist
- Замалчивание исключений
- Избыточный try-except
- Копипаста в try-except
- Ранний перехват исключений
- Чтение ненадёжных данных
Мусор
- Артефакты в коде
- Бесполезная функция
- Бесполезные индексы
- Бесполезные комментарии
- Закомментированный код
- Избыточные True и False
- Избыточные if-else
- Копипаста в коде
- Лишние преобразования типов
- Обёртка над requests
- Отладочный print
- Повторное декодирование JSON
- Сравнение с True и False
Нейминг
- 'is' и подобные в начале функции
- Buzzword в названии
- CamelCase в переменных и функциях
- lower_case в .env
- Буква вместо названия
- Глагол в классе
- Глагол в переменной
- Избыточность в названии
- Класс в поле
- Конфликт имён
- Ложный глагол в функции
- Множественное число в классе
- Название vs Path
- Название с my
- Название с of
- Не читается по-английски
- Неверный порядок слов
- Неверный регистр
- Незаметный флаг
- Неизвестная аббревиатура
- Неконсистентность названий
- Неспецифический токен
- Неточное название в .env
- Неточное название класса
- Неточное название переменной
- Неточное название функции
- Обманчивое сокращение
- Общие названия
- Опечатка
- Ошибочная форма числа
- Раздутый related_name
- Тип в названии
- Число в названии
Оптимизация
- Неверный выбор типа данных
- Неэффективное использование памяти
- Отсутствие необходимого кэширования
- Отсутствие оптимизации запросов
Оформление
- Беспорядок в импортах
- Беспорядок в скобках и переносах
- Забытая точка
- Неконсистентность
- Разные кавычки
- Чрезмерная длина строк
Прочие
- Callback-функции
- Забытые открытые файлы
- Злоупотребление args и kwargs
- Злоупотребление if-elif-else
- Игнорирование HTTP статуса ответа
- Избегание list comprehensions
- Избегание метода .get()
- Излишняя вложенность
- Изменение объектов по умолчанию
- Изменяемые глобальные переменные
- Использование import со звёздочкой
- Магическое число
- Мутация переменных
- Неоптимальное создание словаря
- Неуказанные аргументы функции
- Неуместное использование индексов
- Плюсование строк
- Сложный list comprehension
- Хардкодинг путей