@Urukhayy

При построении систем в программировании стоит ли группировать мини программы?

К примеру, есть программа. В этой программе есть мини программа - для примера эта мини-программа может быть игра в домино. Для этой игры естественно мы создаем некие классы, методы, функции и переменные с массивами.

Так вот. Теперь нам понадобилось создать вторую игру, тоже связанную с домино, но её разновидность - "козёл". Таким образом вытекает вопрос. Использовать ли общие сущности (массивы, классы, функции) для двух разных, но похожих игр?

Приведу пример общей сущности - двумерный массив (первое измерение - разновидности игры, второе измерение - слоты для костей каждой игры), который хранит в себе информацию о том, какая кость домино выставлена.
Или еще пример - в каждой игре нужен "банк". Можно ведь создать массив. Первая ячейка будет хранить в себе информацию о банке первой игры, вторая ячейка - о второй.

И так, теперь почему я задал вопрос. Ведь если не совмещать похожие мини-программы, то нам приходится копировать очень похожий код, а кроме того, мы тратим некоторое время на написание абсолютно идентичных сущностей программы (массивы, функции).
  • Вопрос задан
  • 153 просмотра
Пригласить эксперта
Ответы на вопрос 3
God-emperor
@God-emperor
create a golden path
Читаем про позднее связывание
Ответ написан
Комментировать
GavriKos
@GavriKos
Копипаста - зло. Идентичные сущности - не меньшее зло. Нужно проектировать систему так, чтобы была максимальная реюзабельность.

В вашем случае "разновидность домино" подразумевает изменение только правил игры - вся логика "руки", помещения костей на стол и прочего - одна. А вот про массивы "банка" - честно не понял. Зачем хранить одновременно и тот и другой банк... Но это - детали реализации. Скорее всего у вас будет 1 класс CBank, реализующий логику банка любой игры, и если уж вам в рантайме нужен банк и той и другой игры - то будет массив экземпляров CBank. Например.
Ответ написан
zo0m
@zo0m
full stack developer
Ну выносите все в сервисы(если это возможно), как сейчас модно.

Или вы переживаете что сделав домино, в следующем похожем проекте будет копипаста?
Ну это нормально, часть наработок вы перенесете, еще улучшите.

Если совсем хочется "кошерности", то выделяйте все ваши общие наработки во фреймворк, и таскайте его из проекта в проект. Отличие будет в том, что если вы достаточно сильно заморочитесь, вы сможете вводить новые версии фреймворка в старые проекты и они заработают "круче", но не забываем о регрессии и даже если у вас все везде покрыто тестами(а это не так ;)) все равно есть шанс что вы свалите свое старое но стабильное приложение.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы