Почему этот код должен придти в негодность????
Если логика печати была завязана на структуре отчёта, то придётся менять реализацию этого метода, если конечно там все не было сделано через рефлексию. То же самое и с сериализацией. Но даже если ничего не ломается, отчёт который печатает сам себя это выглядит странно. Для этого желательно завести сущность принтер, который будет печатать все и сериализатор для сериализации. Можно писать код нарушая srp и все будет работать норм, но для читабельности, масштабируемости и гибкости лучше придерживаться SOLID