Встречается на собеседованиях • сегодня

Как нужно писать функцию, чтобы ее было просто тестировать

Функция должна быть чистой (pure function) и следовать принципам SOLID. Основные правила:

  1. Один вход — один выход
    Функция должна принимать параметры только через аргументы и возвращать результат, а не модифицировать глобальные переменные.

  2. Минимум зависимостей
    Зависимости лучше передавать явно через параметры или DI.

  1. Предсказуемость
    При одинаковых входных данных — одинаковый результат.

  2. Простая логика
    Одна функция — одна ответственность.

Пример плохой и хорошей функции:

python
# Плохо: зависит от глобальной переменной, нет возврата
config = {'debug': True}

def process_data(data):
    if config['debug']:
        print(data)
    # ...много кода...
    data.append('processed')  # мутирует вход

# Хорошо: чистая, предсказуемая
def process_data(data, debug_mode=False):
    if debug_mode:
        print(data)
    return [*data, 'processed']  # возвращает новый объект

Тестировать вторую версию проще — не нужны моки глобальных переменных, легко проверить выход по заданному входу.

Sophi
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
Попробовать бесплатноArrow

Следующий вопрос

Это единственный вопрос по вашему фильтру

как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы