Я нахожу жесткое кодирование (sic) "" каждый раз для проверки пустой строки не так хорошо.
Подход с чистым кодом
Выполнение этого: foo == ""
isочень плохая практика.""
магическое значение.Вы никогда не должны проверять магические значения (более известные как магические числа )
То, что вам нужно сделать, это сравнить с описательным именем переменной.
Описательные имена переменных
Можно подумать, что "empty_string" - это описательное имя переменной. Это не .
Перед тем, как пойти и выполните empty_string = ""
и подумайте, что у вас есть отличное имя переменной для сравнения.Это не то, что означает «имя описательной переменной».
Хорошее имя описательной переменной основано на ее контексте.Вам нужно подумать, что такое пустая строка .
- Откуда она взялась?
- Почему это там.
- Зачем вам нужно проверять это.
Пример простого поля формы
Вы создаете форму, в которую пользователь может вводить значения.Вы хотите проверить, написал ли пользователь что-то или нет.
Хорошее имя переменной может быть not_filled_in
Это делает код очень читабельным
if formfields.name == not_filled_in:
raise ValueError("We need your name")
Тщательно CSVПример синтаксического анализа
Вы анализируете файлы CSV и хотите, чтобы пустая строка была проанализирована как None
(поскольку CSV полностью основан на тексте, он не может представлять None
без использования предопределенных ключевых слов)
Хорошее имя переменной может быть CSV_NONE
Это облегчает изменение и адаптацию кода, если у вас есть новый CSV-файл, представляющий None
с другой строкой, отличной от ""
if csvfield == CSV_NONE:
csvfield = None
Нет вопросов о том, верен ли этот фрагмент кода.Совершенно очевидно, что он делает то, что должен делать.
Сравните это с
if csvfield == EMPTY_STRING:
csvfield = None
Первый вопрос здесь: почему пустая строка заслуживает особой обработки?
Это скажет будущим кодировщикам, что пустая строка всегда должна рассматриваться как None
.
Это потому, что она смешивает бизнес-логику (какое значение CSV должно быть None
) с реализацией кода (что мы на самом делепо сравнению с)
Должно быть разделение интересов между двумя.