ReScript, BuckleScript та інші звірі на React fwdays | 27 березня. Давай з нами!
×Закрыть

Земля.Копайся или Грабить(Корованы)

Признаюсь, не большой знаток компьютерных игр, но по моему, нигде так и не была реализована возможность грабить корованы и даже караваны. Даже в криминальных ГТА или Мафии грабёж подменяется хулигантством, вооружённым нападением ака разбой, террором и прочими статьями УПК США.

Для меня самым сложным пока является определение границ ответственности объектов. Не тех которые являются инфраструктурными и отвечают за чистые программные функции типа логирования, кэширования или авторизации, а тех объектов которые моделируют предметную область.
Причина тому — очень прочный шаблон из реального мира.
Когда я впервые втретил мем Земля.Копайся то добродушно (и самодовольно) посмеялся над незадачливым программистом у которого от ООП уже ум за разум заходит. Но постепенно понял, что сам становлюсь адептом подобного распределения ответственности.

В реальном мире у нас есть Геодезист, Градостроитель, Архитектор, Сроитель, множество подрядчиков и Задача — выкопать яму под фундамент многоэтажки на Андреевском спуске.

Именно эта цепочка приводит нас к Экскаватор:Копатор, Глина:Земля и Экскаватор.Копать(Земля) которая кажется очевидной и логичной.

Но чем мы тут все занимаемся (кроме флуда, фана и написания УФ)?

Мы занимаемся автоматизацией. И первым желаением любого автоматизатора является сокрашение штатного расписания. А значит всё должно делаться само. Не приедит геодезист на булгаковские места, не втянут дорожку градостроитель с архитектором, не загнёт деепричастный оборот в отношении родственников строителей из области могучий прораб и совершенно некому будет понять каким Копатором и какую Землю копать.

А значит Земля сама должна выбрать свой тип в момент создания нашего виртуального мира, должна сама определить границы своей ответственности (точнее мы должны) и сама определить выбор Копатора, когда некоторый божественный объект в виде программы тыцкнет кнопочкой на генплане и правым кликом выберет «Копать фундамент...»

Вообще, моделирование предметной области это самый фан, самый, самый азарт и самая «крутатенюшка» ©. Но прямолинейное моделирование очень часто приводит к попыткам построить систему сравнимую по сложности с самим реальным миром, что очень быстро приводит к измерению дедлайнов в годах, а измерение бюджетов в бюджетах небольших стран.

Но не стоит увлекаться бездумно наделением ответственности всех объектов и иногда логично и правильно Земля.Копайся, а иногда вполне логично Грабить(Корованы).

👍НравитсяПонравилось0
В избранноеВ избранном0
LinkedIn

Похожие топики

Допустимые теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter
Допустимые теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter

Честно скажу, ваши топики не о чем. Способ пиара? Думаю нет. Вместо того, что бы написать пару строчек, чего-то полезного, пишем о КОРОВАНАХ(или неочем). У вас есть команда? У вас есть идея? Какого черта вы создаете такие топики? Вы уверены в том что у вас есть на это время?

Я писал его 10 минут пока пил кофе.

Честно говоря, я думал, что именно вы перелезите через тот заборчик который я тут нагородил против местных ботов.

Тема делигирования ответственности объектам при проектировании модели предметной области для меня важна и не до конца понятна. Надеялся на обсуждение. Не взлетело.

Кратко суть можно изложить так — где провести границу между субъектной и объектной сущностью при моделировании реального мира. Для меня пока очевидно что прямолинейное копирование это путь в никуда.

Вопрос про идею и команду не понял. Если вы про УФ то тема закрыта, в хорошем смысле, и я её в ближайшее время не могу обсуждать.

Потому что такие темы надо создавать на хаббре. По мне, так подход Гвоздь.Забиться(Молоток) равноценный, но не такой наглядный как Молоток.Забить(Гвоздь). А если системма сложная, лучше сделать Плотник.Забить(Гвоздь, Молоток).

Это два принципиально разных подхода. При первом мы получаем множество независимых объектов с развитыими интерфейсами и самодостаточных, при втором мы получаем сложные иерархии вызовов которые на первый взгляд делают модель близкой к предметной области, но в конечном итоге все эти вызовы становятся похожими на спагетти. Сюда же добавляются сложности с бизнес-логикой. Недостаток первого варианта — написание множества божественных объектов.

Невнимательно читаете. В первом варианте у вас не будет самодостаточных гвоздей, так как им будет нужен молоток. А во втором — не будет самостоятельных молотков, ибо им нужны гвозди. Так что количество и иеархия вывзовов получится одинаковыми. Вот только второй вариант гораздо более чётко распределяет обязонности.

Хорошо.

Допустим Гвоздь считается забитым тогда когда расстояние от шляпки до Доски равно 0, и расстояние от кончика Гвоздя до Доски не отрицательное и больше 0.

Количество ударов необходимых для забивания равно толщине Доски разделённой на 0,5 см.

Как бы вы решили задачу забивания при том, что Гвоздь может забивать не единственный Плотник или не за один раз?

Я писал его 10 минут пока пил кофе.
Стандартная фраза, используемая в тех случаях, когда в правильности и целесообразности написанного нет полной уверенности.
Обычно количество минут стоит умножать на >5.

Не надоело еще?

С ООД у вас все еще совсем плохо. Садитесь. Два.

Именно эта цепочка приводит нас к Экскаватор:Копатор, Глина:Земля и Экскаватор.Копать(Земля) которая кажется очевидной и логичной.

Но не стоит увлекаться бездумно наделением ответственности всех объектов и иногда логично и правильно Земля.Копайся, а иногда вполне логично Грабить(Корованы).

Это значит что вы таки поняли о чем вам говорили в топике про 1200/2000+ багзов?

Хотя судя по стилю изложения, не все поняли:

KISS

Корованы можно грабить в Mount Blade.

4 мая, 8:45

Хорошее начало хорошего дня.

Я так понял, что на фейсбуке можно будет грабить корованы?

Не на фейсбуке, а на убийце фейсбука!

Причем тестеры там будут получать больше чем девелоперы.

Видимо фейсбук получится наркоманским.

Подписаться на комментарии