Как ревьюить класс для чтения и обработки данных
На собеседовании показывают класс, который читает файл, хранит DataFrame и делает обработку. Какие проблемы искать в таком коде?
Ответить самому
Сначала сформулируйте ответ как на собеседовании, затем откройте разбор и оцените себя.
Короткий ответ
Смотреть состояние объекта, мутабельность, понятный lifecycle обработки, ошибки I/O, memory usage, idempotency, валидацию входа и то, не отдается ли наружу внутренняя изменяемая структура без копии.
Полный разбор
В таком ревью сначала нужно понять lifecycle: когда файл читается, когда данные считаются обработанными, где меняется флаг состояния и можно ли вызвать методы в неправильном порядке. Если property возвращает внутренний DataFrame, внешний код может случайно изменить состояние объекта; иногда нужна копия или read-only контракт.
Дальше проверяются I/O и ошибки: существует ли путь, корректен ли encoding/separator, что происходит с пустым файлом, битым CSV, большим файлом, частичной записью. Если данные большие, чтение всего файла в память может быть проблемой; нужны chunks, streaming или явный лимит.
Еще важны имена методов и ответственность. Метод check не должен внезапно выполнять тяжелую обработку, если его название обещает только проверку. Ошибки лучше делать явными исключениями с понятным сообщением, а не неявным падением в середине пайплайна.
Теория
Ревью data-pipeline класса - это проверка контракта, состояния, ошибок и побочных эффектов.
Типичные ошибки
- Комментировать только стиль, не разобрав lifecycle объекта.
- Не заметить, что наружу отдается изменяемый внутренний DataFrame.
- Не спросить, что будет на большом или битом файле.