Я не из области ООП, и хотя я полностью понимаю классы, это стилистический вопрос, на который я никогда не нашел удовлетворительного ответа. Скажем, вы делаете видеоигру и определите класс под названием Gun. Он имеет переменные-члены, называемые уроном, скорострельностью и точностью. Есть несколько предопределенных пистолетов, скажем, пистолет, револьвер и пистолет-пулемет. Переменные каждого члена Guns известны во время выполнения и никогда не меняются. Как правильно инициализировать каждое оружие?
Вы можете просто инициализировать их во время выполнения
Gun pistol(10, 10, 10);
Gun revolver(20, 5, 15);
Gun machinePistol(5, 20, 5);
Но мне сказали, что это плохая практика. Вы можете определить каждый из них как новый класс, унаследованный от Gun, а затем инициализировать все их переменные-члены в своих конструкторах, но это довольно многословно, и сложно отслеживать все новые классы.
Вы также можете инициализировать все переменные-члены в одном конструкторе, например:
switch(whichGun)
{
case pistol:
damage = 10;
//etc, etc
}
Но для этого требуется некоторый способ идентификации каждого оружия, например, перечисление, которое выдается какгромоздкий.
Какая стандартная практика для этого? Я в основном использую c ++, но я бы предположил, что это относится к большинству OOPL.