
Роман
30.09.2018
08:34:43
У меня сейчас ситуация реально что я могу любой час посвятить работе, выставить счёт и мне его оплатят
Или могу пойти книгу дописать, и потом окупится с её продаж
Помимо денег ещё есть мотивации, и конечно всё не свобидтся к тому, чтобы делать то, что выгодно

Bohdan
30.09.2018
08:35:29
а, в таком кейсе да
тогда главное не удариться в трудоголизм

Google

Bohdan
30.09.2018
08:35:50
в оригинале было "либо хорошо, либо ничего, кроме правды"

Dmitry
30.09.2018
08:36:46

Роман
30.09.2018
08:37:41
И опять же, главная цель это не деньги (у меня). Это важно, но если посмотреть мой стратегический план на год, там всё в деньги не упирается

Yury
30.09.2018
10:10:41
Дарт пропитан формалином

Mykola
30.09.2018
10:26:30
какими именно?
и нахера еще один мёртвый язык, если смалток никуда не делся (тоже мёртв)?
мертворождённый

F01134H
30.09.2018
10:28:41
?

Дмитрий
30.09.2018
10:35:32

Роман
30.09.2018
10:36:28

Dmitriy
30.09.2018
13:27:09
С играми в эффективность можно не слабо провалиться в пропасть тяжелой депрессии . Короче, надо аккуратно играть с огнем.

Google

Роман
30.09.2018
14:00:02


Yury
30.09.2018
14:05:46
Вопрос по тому же Visitor-у.
Тк моя предмет. обл. замороченная - объясню на Shapes and Drawers. Есть Shape с его реализациями Circle, Triangle. И есть Drawer с CircleDrawer и TriangleDrawer.
У клиента есть абстрактный Shape. Ему нужно получить соотвествующий Drawer. Те для конкретного Circle - CircleDrawer.
Я хочу реализовать так: добавить фабрику DrawerFactory и передавать ее методу Shape
createDrawer(DrawerFactory f){
return f.create(this)
}
Это единственное, что я придумал, чтобы работало и выглядело адекватно. Но меня смущает:
1. Насколько это читабельно? Такая вот диспетчеризация(делегирование). Имхо выглядит странновато.
2. Мб лучше отнаследовать фабрику от Visitor и назвать метод и его параметры у Shape так:
accept(Visitor v){
return v.visit(this)
}Тогда метод не будет привязан к Drawer.
Я бы хотел, чтобы Shape ничего не знал о существовании Drawer, при этом Drawer знал о Shape все и имел ссылку на него.


Роман
30.09.2018
14:18:57
Я вот только сегодня опять с этим кусочком работал
У меня в итоге без визитёра как и говорил получилось
Сейчас попробую без всяких деталей рассказать
Я всю специфичиную логику таки размазал по иеерархихи и скрыл под виртуальными методами
Тот свич превратился в такое
Точнее свитч вообще ушёл

Yury
30.09.2018
14:23:33

Роман
30.09.2018
14:24:06
Да, в каком-то смысле. Он ещё остался так, как не весь код ещё зарефакторин
Я сначала зашёл со стороны создания этого типа
Когда выстрел прилетает в какой-то объект, он взаимодействует со SceneView этого объекта
У него есть абстрактный метод
public abstract Hit ExtrudeHit(RaycastHit hit);
Есть несколько типов который возвращают различный производный класс
TargetHit и EnviromentHit
Тот кто стрелял оборачивает это в тип SceneViewHit который содержит в себе SceneView и Hit
В итоге этого более-менее хватило
Визуализация попадания спрятана под SceneView
Проверка типа осталась для внутригровой статистики так, как попадания по окружению считаются за промах

Google

Роман
30.09.2018
14:28:41
Это всё по сути обслуживает что-то похожее на сервис локатор
Все эти связи декларативно размечаются
А потом в коде разрешаются уже через
var view = hit.collider.GetComponentInParent<SceneView>();
То, что делаешь ты больше похоже на другую ситуацию в этом же проекте

Yury
30.09.2018
14:34:18
А все нашел, это понятие.

Роман
30.09.2018
14:35:03
Не особо важная вещь здесь
В общем там суть в том, что есть тип - аргумент поведения системы
Поведение собираются из множества подсистем
В зависимости от типа, выбирается набор объектов а уже значения в этом типе раздаются составляющим частям как значениям

Yury
30.09.2018
14:36:41

Роман
30.09.2018
14:36:43
Т.е это похоже на ситуацию с рисовальщиками, они работают с абсолютном разными данными

Yury
30.09.2018
14:38:10
Ну те можно по идее обернуть Shape и Drawer в один объект при их создании, когда тип еще известен?

Роман
30.09.2018
14:41:05
Извини, нужно сейчас отъехать. Я попозже выберу минутку, и хотел бы ещё над этим всем подумать, может чего полезного скажу

Yury
30.09.2018
14:41:35

Роман
30.09.2018
14:41:55
Вкратце у нас всё свелось к тому, что рисовальщики между собой имеют мало общего как и фигуры
Что-то типа такого:
class Drawer<T>{
public Draw(T){
var context = CreateDrawContext();
Draw(T, context);
}
protected absrtract Draw(T, Context);
}
И есть метод который решает какой рисовальщик что рисует
public DynamicDraw(T t) where T : Shape {
FindObjectOfType<Drawer<T>>().Draw(t);
}

Google

Роман
30.09.2018
14:47:38
Все эти дженерики нужны чтобы разделять кто кого рисовать умеет
В конкретном рисовальщике известен полный тип рисуемого, по этому обладаем полный набором информации о том, с чем работаем
Да