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