Как правильно писать код, уменьшая зависимости в коде?
Как правильно уменьшать зависимости в коде?
Представим программу которая должна принимать пользовательский ввод и записывать строку в базу данных. Предполагается, что программа будет активно развиваться и нужно построить масштабируемое и тестируемое решение.
Вариант 1: создаем функцию, которая будет принимать ввод и явно писать в базу данных.
Вариант 2: создаем функцию application, которая вызывает функцию get_user_input() и потом функцию write_to_db
Вариант 3: создаем класс Application, который вызывает функцию run, которая вызывает метод класса User. Метод класса User в свою очередь вызывает метод класса DbManager.writeUserString
Вариант 4: аналогичен варианту 3, но DbManager.writeUserString вызывается вне класса User
Какой вариант предпочтительнее с точки зрения написания тестов, уменьшения зависимостей и улучшения масштабируемости архитектуры ?