Чистый код. Похожие названия методов

На днях мы использовали метод SequenceMatcher.ratio() из модуля difflib, чтобы оценить сходство двух строк.

А что бы вы сказали, если узнали, что у того же класса есть ещё методы quick_ratio() и real_quick_ratio()? С описанием «возвращает верхнюю границу ratio довольно быстро» и «возвращает верхнюю границу ratio очень быстро»?

Я бы сказал, что это плохой код. Если бы коллега принёс такой код на ревью, я бы предложил подумать ещё. Либо ты нормально называешь эти методы, чтобы понятно было, когда какой использовать. Либо прячешь их в глубине модуля и не делаешь частью публичного API.

Конкретно в данном случае я бы сделал «быстрый» и «очень быстрый» методы приватными, потому что они нужны только для оптимизации работы других публичных методов difflib. Используются примерно так:

if matcher.real_quick_ratio() >= cutoff and \
    matcher.quick_ratio() >= cutoff and \
    matcher.ratio() >= cutoff:
    ...

Как вспомогательные методы — ладно. Но точно не в публичный интерфейс.

Подписывайтесь на канал, чтобы не пропустить новые заметки 🚀