Сегодня я ожидал платежа в своем кошельке. Баланс был 0. Я запаниковал.
TL;DR: Null не равно 0. Error не равно 0. просто 0 равно 0.
Проблемы
- Нули
- UX
- Удобство использования
Решения
- Сделайте четкое различие между нулем и ошибкой.
Контекст
Я много читал о проблемах безопасности.
Особенно на крипте.
На прошлой неделе я прочитал о треде о взломе криптовалюты.
Когда мой кошелек показал мне 0 в качестве баланса, я запаниковал.
Это был просто запах UX.
Блокчейн был недоступен 💩
Образец кода
Неправильный
""" Below code is automatically generated by code-davinci-002 on GTP3 Codex
1. check balance with blokchain 2. If blockchain is unreachable show 0 as the balance """
import requests import json
def get_balance(address): url = "https://blockchain.info/q/addressbalance/" + address response = requests.get(url) if response.status_code == 200: return response.text else: return 0
Верно
""" Below code is automatically generated by code-davinci-002 on GTP3 Codex
1. check balance with blockchain 2. If blockchain is unreachable throw an error """
import requests import json
def get_balance(address): url = "https://blockchain.info/q/addressbalance/" + address response = requests.get(url) if response.status_code == 200: return response.text else: raise BlockchainNotReachableError("Error reaching blockchain")
Обнаружение
[Х] Руководство
Это дизайнерский запах.
Мы можем найти закономерности, когда выбрасывается исключение или код возврата и маскируется 0.
Теги
- UX
Заключение
Всегда руководствуйтесь принципом наименьшего удивления.
связи
Больше информации
Кредит
Фото Jasmin Sessler на Unsplash
Отказ от ответственности
Code Smells — это всего лишь мое мнение.
Моя реальная критика Null заключается в том, что он снова возвращает ненужную агонию, связанную с необходимостью выбирать, выполнять ли вашу программу быстро без проверки или медленно с проверкой.
Тони Хоар (нулевой изобретатель)
Эта статья является частью серии CodeSmell.