Я пишу игру на Typescript и решил, что буду пытаться придерживаться идеи « программирования на основе интерфейса », где вы пишете код, основанный на интерфейсе, а не на реализации объекта.
Я написал большое количество интерфейсов и классов, которые их реализуют, затем сделал шаг назад и понял, что классы достаточно просты, и мне, вероятно, никогда не потребуется менять реализацию, поскольку на самом деле есть только один способ сделать то, что класс делает (перемещая Phaser.Sprite
ограниченным образом, чтобы действовать как танк).
Затем я вспомнил, как читал несколько лет назад об идее YAGNI , которая заключается в том, что вам не следует чрезмерно проектировать свой код, чтобы включать вещи, которые вы никогда не сможете использовать.
Следуя рекомендациям, должен ли каждый класс реализовывать интерфейс или вы должны ограничить его классами, которые, как вы ожидаете, могут быть заменены в будущем?