
Denis
09.04.2018
11:08:01
а потом забожиться что оно не throwнется

Oleg
09.04.2018
11:08:25

Denis
09.04.2018
11:08:37
ну да, раз уж реализация такая

Google

Stanislav
09.04.2018
11:09:31
там в принципе решение предлагают

Evgeny
09.04.2018
11:09:35
https://glot.io/snippets/ezydk7zsiz

Denis
09.04.2018
11:10:23

Evgeny
09.04.2018
11:10:36

Oleg
09.04.2018
11:12:36
корявый utf-8 по сути своей исключительная ситуация для того что я делаю, nothrow не может быть в этой ситуации

Denis
09.04.2018
11:13:15
ascii?

Oleg
09.04.2018
11:13:25
читаю из файла

Denis
09.04.2018
11:13:30
ubyte[]?
тогда вообще вопрос стоять не должен

Oleg
09.04.2018
11:13:43
ну да

Evgeny
09.04.2018
11:14:15

Oleg
09.04.2018
11:15:12

Denis
09.04.2018
11:16:12
ну тогда оно у тебя таки throwable

Google

Denis
09.04.2018
11:16:16
раз гарантий нет

Oleg
09.04.2018
11:16:23
ну вот я к этой мысли и пришёл)
либо рассматривать строку как набор однобайтовых символов, либо быть готовым к исключительным ситуациям

Denis
09.04.2018
11:18:03
а что за текст если не секрет?
а то может и правда оно ascii?
или например не имеет значения что там мусорные символы есть

Oleg
09.04.2018
11:19:31

Evgeny
09.04.2018
11:19:33

Oleg
09.04.2018
11:21:44

Evgeny
09.04.2018
11:21:48
ну или тупо
try {
foreach(...
} catch(Exception e) {
assert(0);
}

Denis
09.04.2018
11:22:23

Evgeny
09.04.2018
11:22:35
там assert(0) стоит
предполагается, что невалидного utf-8 не может быть

Denis
09.04.2018
11:25:48
да, надо просто игнорить, { }

Pavel
09.04.2018
11:27:14
Написать аналог питоновского unicode и забыть.

Evgeny
09.04.2018
11:28:53
зачем его писать? все вроде уже ест в фобосе
например foreach(dchar ch; str.byDchar) можно делать в nothrow контексте
byDchar из std.utf

Pavel
09.04.2018
11:38:55
Да, что-то есть. Значит я недостаточно хорошо проникся сутью обсуждения.
Или из сути ускользнуло std.uni и иже с ними.

Google

Dark
09.04.2018
11:48:48

Denis
09.04.2018
11:49:15
там важна система инвентаря. но я уже нашёл как она устроена, так что всё ок

Dark
09.04.2018
11:49:35
Сорцы прочитал?)

Pavel
09.04.2018
11:50:06

Denis
09.04.2018
11:50:49
Поясни? ВРоде хорошие названия
и документу телеграма соответствуют
сейчас они CamelCase
как я понял

Dark
09.04.2018
11:51:27

Denis
09.04.2018
11:51:43
зачем? приянто же с большой буквы имена типов делать?
а с маленькой имена переменных

Dark
09.04.2018
11:52:19

Denis
09.04.2018
11:52:44
ну вы понели

Dark
09.04.2018
11:53:30
Вот фигней страдаю, что бы мне на D написать?

Pavel
09.04.2018
11:54:34
как я понял
Я вот про это https://github.com/nexor/telega/blob/master/source/telega/botapi.d#L156

Denis
09.04.2018
11:55:04
внутренние переменные через подчеркивания я лично часто делаю

Pavel
09.04.2018
11:55:26
хм ну хз
Где-то camelCase а где то under_score, не очень хорошо смешивать так стили

Dark
09.04.2018
11:56:13
Кодстайлы наше все

Google

Denis
09.04.2018
12:04:56

Pavel
09.04.2018
12:10:37
Когда пишется обёртка для api, лучше всего следовать стилям данного api насколько возможно, имхо. Тогда меньше придётся документировать уже задокументированное.

Pavel
09.04.2018
12:12:17
Я смотрю голанговское и тут все отмаплено в стандартный стиль https://github.com/go-telegram-bot-api/telegram-bot-api/blob/master/types.go#L97

Denis
09.04.2018
12:15:55
там private/public зависит от первой буквы имени переменной
они поехавшие там, да

Dark
09.04.2018
12:20:27

Pavel
09.04.2018
14:36:38
Как вам еще такая идея - https://github.com/nexor/telega/blob/master/source/telega/botapi.d#L269 я думаю эти методы вынести из класса и положить рядом. и в методы первым параметром добавить (BotApi botApi чтобы можно было через UFCS вызывать как и раньше, но при этом методы не являлись частью класса.

Denis
09.04.2018
14:40:36

Admin
ERROR: S client not available

Pavel
09.04.2018
14:41:00
Просто методов будет дохрена

Denis
09.04.2018
14:41:02
делай как тебе удобно - это же сахарок

Pavel
09.04.2018
14:41:03
много десятков

Denis
09.04.2018
14:41:08
да и пускай, ничего страшного что дохрена
во щас найду пример
В dpq2 есть класс соединение и класс запрос

Pavel
09.04.2018
14:41:39
Ну как ничего страшного, это все влияет на восприятие библиотеки и навигации по коду

Denis
09.04.2018
14:41:42
точнее, 2 файла
но класс это один фактически
куча методов разделена по смыслу на 2 файла таким образом:
https://github.com/denizzzka/dpq2/blob/master/src/dpq2/query.d#L17

Google

Denis
09.04.2018
14:42:30
https://github.com/denizzzka/dpq2/blob/master/src/dpq2/connection.d#L79

Pavel
09.04.2018
14:42:43
Я думаю разделить на логические файлы

Denis
09.04.2018
14:42:47
и всё, куча методов но на 2 файла разбросано по смыслу - одни отвечают за соединение, другие за запрос

Pavel
09.04.2018
14:42:52
inline.d, games.d, payments.d
basic.d - тут будут основные методы и сущности

Denis
09.04.2018
14:44:45
скорее всего это всё как и в dpq2 должен быть 1 класс "соединение с телеграм"

Pavel
09.04.2018
14:45:12
Ну да
Но методов то будет куча
Как и классов методов. И сущностей
Все в одной куче держать не ок

Oleg
09.04.2018
14:46:06
имхо когда api реализуется не нужно думать об ООП
ну всмысле минимально нужно думать
если api явным образом не делится на классы, то стоит забить
в целевой программе всё равно это будет обёрнуто в нужные концепции

Pavel
09.04.2018
14:47:27
Ну почему же явным и забить ) Можно все же подумать и реализовать гармонично

elias
09.04.2018
14:47:46
тогда это будет не телега, а карета

Pavel
09.04.2018
14:48:18
Например с UFCS методами кодер сможет добавлять свои методы в апи в таком же стиле, достаточно будет ему описать в своем файле
Message someNewMethod(BotApi botApi, int param1)

Denis
09.04.2018
14:48:54

Oleg
09.04.2018
14:49:07
тогда уж класс (или стркутура) не BotApi а BotAccess или как-то так

Denis
09.04.2018
14:49:42
вспомниая dpq2 я раза 3 или 4 переделывал эти классы пока пришёл к тому что сейчас имеется