Назад к подготовке

Как ревьюить класс для чтения и обработки данных

На собеседовании показывают класс, который читает файл, хранит DataFrame и делает обработку. Какие проблемы искать в таком коде?

Ответить самому

Сначала сформулируйте ответ как на собеседовании, затем откройте разбор и оцените себя.

Загрузка

Короткий ответ

Смотреть состояние объекта, мутабельность, понятный lifecycle обработки, ошибки I/O, memory usage, idempotency, валидацию входа и то, не отдается ли наружу внутренняя изменяемая структура без копии.

Полный разбор

В таком ревью сначала нужно понять lifecycle: когда файл читается, когда данные считаются обработанными, где меняется флаг состояния и можно ли вызвать методы в неправильном порядке. Если property возвращает внутренний DataFrame, внешний код может случайно изменить состояние объекта; иногда нужна копия или read-only контракт.

Дальше проверяются I/O и ошибки: существует ли путь, корректен ли encoding/separator, что происходит с пустым файлом, битым CSV, большим файлом, частичной записью. Если данные большие, чтение всего файла в память может быть проблемой; нужны chunks, streaming или явный лимит.

Еще важны имена методов и ответственность. Метод check не должен внезапно выполнять тяжелую обработку, если его название обещает только проверку. Ошибки лучше делать явными исключениями с понятным сообщением, а не неявным падением в середине пайплайна.

Теория

Ревью data-pipeline класса - это проверка контракта, состояния, ошибок и побочных эффектов.

Типичные ошибки

  • Комментировать только стиль, не разобрав lifecycle объекта.
  • Не заметить, что наружу отдается изменяемый внутренний DataFrame.
  • Не спросить, что будет на большом или битом файле.