@dlangru

Страница 273 из 719
Ievgenii
27.09.2017
06:02:51
Или просто при наполнении объекта, на первом этапе, подпишишься на его событие изменения и в этом случаи сам перезапишишь его в хранилище

Но уж точно это должен делать не сам объект конфига

Evil
27.09.2017
06:23:07
О, умные мысли. Ща прочту :) А пока заценитие, как индусы пишут. Вот это я пытаюсь заменить полностью сейчас.



Google
Evil
27.09.2017
06:23:23
Т.е. это в прямом смысле индусы)

Dmitry
27.09.2017
06:39:09
А что не так то? Код вроде нормальный

Maxim
27.09.2017
06:43:04
ну если опустить общее «а чего тут происходит?», то как минимум два идентичных catch)

Evil
27.09.2017
06:44:36
А что не так то? Код вроде нормальный
Ну да, тебе с индусами еще можно померяться кодом?

Мне больше нравится передача в метод и возврат текущего значения, если за каким-то хуем его в базе не оказалось.

Еще ужасно веселит на каждый чих проверка наличия файла с базой. Как будто он внезапно может пропасть после запуска программы.

Ну а за sql вставки по всему проекту пора отламывать по одному пальцу.

Для того и пишу сейчас слой абстракции.

Или просто при наполнении объекта, на первом этапе, подпишишься на его событие изменения и в этом случаи сам перезапишишь его в хранилище
Кинул ему делегат на фрейм самосохранения. Наполнение происходит на уровне абстракции базы.

Осталось доделать добавление новых элементов в пофиг при синхронизации с сервером. Но уже придумал как. Красота выходит

Evil
27.09.2017
07:01:51
Не, таки нужно к конфиг передать указатель на абстракцию базы. Т.к. в случае с добавлением элемента хочется это сделать по типу config.add(item)

Google
Evil
27.09.2017
07:02:18
Они же разные типы исключений ловят
Но он их обрабатывает одинаково. Смысл ловить разные? Exception тип включает в себя все.

Maxim
27.09.2017
07:02:24
Они же разные типы исключений ловят
почти наверняка ArgumentException наследуется от Exception)

Dmitry
27.09.2017
07:03:13
А ну да

А разная обработка правильно реализованная как бы выглядела?

Делать разные вещи в зависимости от ошибки?

Maxim
27.09.2017
07:04:27
тут причину и следствие нужно понимать)

если цель просто что-то сделать при любом исключении, то хватит и одного catch, если при разных исключение нужно делать что-то разное, то catch будет несколько)

Evil
27.09.2017
07:05:32
А как правильно?
Вообще стараться исключить работу с сырыми запросами.

Maxim
27.09.2017
07:06:00
но вообще, что-то сделать при любом исключении — это плохая цель)

Dmitry
27.09.2017
07:06:07
А как без них то? Без сырых запросов

Орм не панацея

Maxim
27.09.2017
07:06:34
А как без них то? Без сырых запросов
инкапсулировать в «бизнес-логике»)

Dmitry
27.09.2017
07:06:43
Maxim
27.09.2017
07:07:08
все зависит от приложения

гуд практис — это ловить исключение там, где ты знаешь, что с ним делать

на то они и пробрасываются вверх по стеку

Evil
27.09.2017
07:10:27
инкапсулировать в «бизнес-логике»)
Вот я приблизительно это и делаю сейчас :)

Орм не панацея
Норм штука, кстати.

Google
Dmitry
27.09.2017
07:10:53
Пока запросы простые

Evil
27.09.2017
07:11:18
гуд практис — это ловить исключение там, где ты знаешь, что с ним делать
У нас тут COM есть.. вот он большой любитель по throw'ить.

Maxim
27.09.2017
07:11:28
в любом случае, лучше делать некую абстракцию над raw SQL

Evil
27.09.2017
07:11:46
Пока запросы простые
Бля, ну вот почему нельзя СРАЗУ работать нормально, а нужно ждать пока усложинится все?)

Dmitry
27.09.2017
07:12:12
в любом случае, лучше делать некую абстракцию над raw SQL
А есть примеры на Ди как это правильно делать?

Evil
27.09.2017
07:12:31
Тут проект 15 лет писали не пойми кто, а всё для того, чтобы я сейчас сидел и выкидывал всё нахрен.

А есть примеры на Ди как это правильно делать?
Можем созвониться позже, обсудить)

И не важно, какой язык

Dmitry
27.09.2017
07:13:08
Ок

Maxim
27.09.2017
07:13:09
А есть примеры на Ди как это правильно делать?
да тут дело не в D или каком-то языке, дело в походе: делаешь ограниченное количество сущностей, которые непосредственно разговаривают с базой данных, в остальной программе используешь их

по сути, база — это конкретный способ хранения абстрактных данных

Maxim
27.09.2017
07:14:07
а в программе нужны именно эти абстрактные данные)

Dmitry
27.09.2017
07:14:08
Сущностью будет что?

Maxim
27.09.2017
07:15:05
например что-то, что является объектом манипуляции в программе: список музыкальных файлов, автомобиль в сборе, координаты магазинов на карте

или, например: сущность 1 — координаты магазина, сущность 2 — ассортимент в магазине, сущность 3 — обновлятель ассортимента в магазине)

ну это так, абстрактные рассуждения)

Evil
27.09.2017
07:21:28
В двух словах, Дима, делаешь ORM своими руками.

Maxim
27.09.2017
07:22:15
ну примерно так, имея контроль над сложными запросами и возможность оптимизировать)

дольше труднее, но гибче, везде приходится торговаться)

Google
Dmitry
27.09.2017
11:25:49
Кстати, а можно ли говорить что в Го к примеру полиморфизм есть, если там нет дженериков?

Maxim
27.09.2017
11:33:28
наверное, про это хорошо могут рассказать в чате о Го)

Dmitry
27.09.2017
13:16:15
Юникод в именах функций зло https://stackoverflow.com/questions/46407831/vibe-d-basic-form-validation

Grigirii
27.09.2017
13:25:43
Кстати, а можно ли говорить что в Го к примеру полиморфизм есть, если там нет дженериков?
как связаны полиморфизм и дженерики? динамический полиморфизм в виде интерфейсов там есть. статического полиморфизма, который обычно представлен в виде перегрузок, шаблонов и прочего CT, в go нет

Dmitry
27.09.2017
13:26:36
ну вот допустим что сount который может считать и количество букв и количество цифр

Grigirii
27.09.2017
13:26:56
превосходно делается через интерфейсы

есть же sort, который может сортировать любые массивы. самый обыкновенный полиморфизм

Evil
28.09.2017
01:27:40
Кстати, а можно ли говорить что в Го к примеру полиморфизм есть, если там нет дженериков?
Как ты умудряешься знать столько умных слов, но не уметь кодить? Может ты учишь что-то не то??

Admin
ERROR: S client not available

Dmitry
28.09.2017
03:46:27
gönderiyiOluştur

А это что

Pavel
28.09.2017
12:09:06
Опять печалька встретилась - https://github.com/dlang/dmd/pull/3611 оказывается нельзя в абстрактном классе абстрактному методу приписать out{} контракт.

Уже тржди года не могут пофиксить!

Anatoly
28.09.2017
12:21:55
Уже тржди года не могут пофиксить!
а я вижу, что оно пофикшено, но просто не смержено

Pavel
28.09.2017
12:22:58
Вот когда это будет в чейнджлоге и в deb пакетах, тогда можно считать что пофикшено ;) А пока только возможноый вариант.

Anatoly
28.09.2017
12:23:11
кому нужны deb-пакеты?

Andrey
28.09.2017
12:23:22
меня радуют такие пакеты (:

Anatoly
28.09.2017
12:23:26
я не понимаю такой хомячковости

Pavel
28.09.2017
12:23:33
С 2014 уже висит ПР (

Google
Anatoly
28.09.2017
12:24:01
Уолтеру просто некогда поребейзить это всё счастье

я так понимаю, что в ldc этой проблемы нет?

Хм, везде всё одинаково

gdc/ldc тоже с этим

qwerty
28.09.2017
13:11:38
@chebotarevp когда статья будет? Я не хочу давить, просто ты говорил, что напишешь. Занят сильно?

Pavel
28.09.2017
13:12:03
Я на прошлых выходных выдавил из себя еще одну главу =)

qwerty
28.09.2017
13:12:10
?

Pavel
28.09.2017
13:12:17
Писать нелегко, честно говоря)

qwerty
28.09.2017
13:12:38
я понимаю, прошу прощения, если "достал"

Pavel
28.09.2017
13:12:44
Структурируя в голове все те кучи экспериментов которые я проводил во время контеста.

Ничего страшного, спасибо что пушнул ) Наоборот мотивирует что кто-то эту статью ждет.

qwerty
28.09.2017
13:13:44
Опять печалька встретилась - https://github.com/dlang/dmd/pull/3611 оказывается нельзя в абстрактном классе абстрактному методу приписать out{} контракт.
я кстати не понимаю кейса, где нужен out контракт для абстрактного метода. Это же абстрактный метод.

Oleg
28.09.2017
13:36:39
я кстати не понимаю кейса, где нужен out контракт для абстрактного метода. Это же абстрактный метод.
элементрано "метод, возвращающий некий строковой идентификатор", контракт проверяет наличие не однобайтных символов

какая разница абстрактный он или нет

qwerty
28.09.2017
13:37:56
аа ну да

Pavel
28.09.2017
13:41:13
Мой кейс - я делаю парсинг конфига в формате sdlang. Сделал класс abstract class SDLNode который объявляет 4 абстрактных метода - начало тега, значение, атрибут со значением, конец тега.

После метода 'конец парсинга тега' abstract void onTagEnd(TagEndEvent event);всегда должен быть выставлен флаг isFinished = true

qwerty
30.09.2017
15:25:09
в D есть сущность для пула сокетов?

vibe.d не предлагать

socketset

нашел

Oleg
30.09.2017
16:26:52
vibe.d не предлагать
Прям звучит уже)

Страница 273 из 719