рекомендую книгу Брайана Оккена «Тестирование на Python с помощью pytest: простое, быстрое, эффективное и масштабируемое» (Okken Brian, Python Testing with pytest: Simple, Rapid, Effective, and Scalable, Pragmatic Bookshelf, 2017).
То, что составляет модуль, является источником для многочисленных философских разглагольствований, но хорошее рабочее определение состоит в том, что это фрагмент кода, который можно изолировать в целях тестирования.
Правило трех Мартина Фаулера гласит, что когда вы трижды реализовали что-то схожее, то должны рефакторизовать код, обеспечив абстракцию для такого поведения.
не абстрагируй что-то сразу или даже после того, как ты это продублировал, — подожди, пока не увидишь, какие возникают варианты использования, и выбери самую подходящую абстракцию
в то время как декомпозиция группирует связанные между собой операции в функции, инкапсуляция группирует связанные между собой функции и данные в более крупную конструкцию.
Абстракция уменьшает когнитивную нагрузку и объем ваших умственных затрат на постижение неизвестного, оставляя вам больше времени на поддержание качества ПО!