Сегодня я ожидал платеж в своем кошельке. Баланс был равен 0. Я запаниковал.
TL;DR: Null — это не 0. Ошибка — это не 0. Просто 0 — это 0.
- Проблемы
- Решения
- Контекст
- Код образца
- Неправильный
- Правильно
- Обнаружение
- Теги
- Заключение
- Отношения
- Запах кода 12 — Null
- Maxi Contieri ・ Oct 31 ’20 ・ 2 min read
- Code Smell 139 — Бизнес-код в пользовательском интерфейсе
- Maxi Contieri ・ Jun 9 ・ 3 min read
- Code Smell 73 — Исключения для ожидаемых случаев
- Maxi Contieri ・ May 31 ’21 ・ 2 min read
- Code Smell 72 — Коды возврата
- Maxi Contieri ・ May 28 ’21 ・ 2 min read
- Дополнительная информация
- Null: Ошибка на миллиард долларов
- Maxi Contieri ・ Nov 18 ’20 ・ 6 min read
- Кредит
- Отказ от ответственности
- Программная инженерия Великие цитаты
- Maxi Contieri ・ Dec 28 ’20 ・ 13 min read
- Как найти зловонные части вашего кода
- Maxi Contieri ・ May 21 ’21 ・ 7 min read
Проблемы
-
Нули
-
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")
Обнаружение
[X] Вручную
Это запах дизайна.
Мы можем обнаружить закономерности, когда исключение или код возврата выбрасывается и маскируется значением 0.
Теги
- UX
Заключение
Всегда руководствуйтесь принципом наименьшего удивления.
Отношения

Запах кода 12 — Null
Maxi Contieri ・ Oct 31 ’20 ・ 2 min read

Code Smell 139 — Бизнес-код в пользовательском интерфейсе
Maxi Contieri ・ Jun 9 ・ 3 min read

Code Smell 73 — Исключения для ожидаемых случаев
Maxi Contieri ・ May 31 ’21 ・ 2 min read

Code Smell 72 — Коды возврата
Maxi Contieri ・ May 28 ’21 ・ 2 min read
Дополнительная информация

Null: Ошибка на миллиард долларов
Maxi Contieri ・ Nov 18 ’20 ・ 6 min read
Кредит
Фото Jasmin Sessler on Unsplash
Отказ от ответственности
Запахи кода — это только мое мнение.
Моя реальная критика Null заключается в том, что он возвращает ненужные муки выбора между быстрым запуском программы без проверки и медленным запуском с проверкой.
Тони Хоар (изобретатель Null)

Программная инженерия Великие цитаты
Maxi Contieri ・ Dec 28 ’20 ・ 13 min read
Эта статья является частью серии CodeSmell.

Как найти зловонные части вашего кода
Maxi Contieri ・ May 21 ’21 ・ 7 min read