вообще, фокусироваться на коде - это немного ошибка, настоящей проблемой является то, как именно хранить данные, чтобы было удобно с ними работать, как именно с ними вообще будут работать с учётом того, какие процессы в системе могут происходить... процессы в системе и данные являются ключевым звеном, а код, ну, это всё вторично, главное требование к коду - чтобы были тесты... кривой код переписать намного проще, чем поменять что-то, связанное с хранилищем