Чистый код. Единообразие в именах
Всякая книга про хороший код начинается с главы об именах переменных и функций. Но каждый, кто работал с большим проектом, знает — хороших имён недостаточно. Важно ещё, чтобы они были единообразными во всём проекте.
Посмотрим на питоновский модуль difflib
, который помогал нам сравнивать строки:
find_longest_match()
находит самый длинный совпадающий кусок между двуми последовательностями и возвращает match — объект с совпадением и дополнительной информацией.get_matching_blocks()
находит все совпадения между двумя последовательностями и возвращает список из match.get_close_matches()
находит слова, сильнее всего похожие на переданное слово, возвращает список строк.
По отдельности вроде все названия хороши и понятны. Но я утверждаю, что это — плохой код:
find_longest_match
возвращает объект-match
, как и следует из названия; иget_matching_blocks
возвращает такие же объекты, хотя название намекает, что должны возвращаться какие-тоblocks
get_close_matches
, судя по названию, должен возвращатьmatch
, какfind_longest_match
— но возвращает строки- одна и та же по сути операция (поиск совпадений) в одном случае называется
find
, а в двух других —get
В результате уже на следующий день не вспомнить, кто как называется, без обращения к документации.
Уж на уровне одного модуля можно напрячься и сохранить единообразие? Я предложил бы такие имена:
find_longest_match()
find_all_matches()
find_similar_words()
или простоfind_similar()
Подписывайтесь на канал, чтобы не пропустить новые заметки 🚀