@dlangru

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

Oleg
09.04.2018
11:08:25
utf-8? существует - валидировать её сначала
а потом всё равно засунуть в try-catch весь foreach

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
то есть по сути не существует способа безопасно пройтись по символам строки?
смотря что нужно, можно пропускать корявые utf-8 знаки, а можно бегать просто по массиву байт. Что именно нужно?

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
корявый utf-8 по сути своей исключительная ситуация для того что я делаю, nothrow не может быть в этой ситуации
не совсем понятно, у тебя там не utf-8 или utf-8, который гарантированно валидный?

Oleg
09.04.2018
11:15:12
не совсем понятно, у тебя там не utf-8 или utf-8, который гарантированно валидный?
не совсем понятно зачем мне это в nothrow =) у меня валидный utf-8, но без гарантии

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
либо рассматривать строку как набор однобайтовых символов, либо быть готовым к исключительным ситуациям
не обязательно, можно например бежать по строке и все невалидные code points заменять на вопросительные знаки

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

Denis
09.04.2018
11:22:23
ну или тупо try { foreach(... } catch(Exception e) { assert(0); }
Зависит от объёмов мусора. если его много то слишком частые эксепшены будут

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
тампросто 10 челвоек онлине
6. Не стоит портирования :)

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

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

Pavel
09.04.2018
11:50:06
там важна система инвентаря. но я уже нашёл как она устроена, так что всё ок
Я думаю что все структуры переделаю на camelCase, а то сейчас они 1в1 как в json и это некрасиво выглядит

Denis
09.04.2018
11:50:49
Поясни? ВРоде хорошие названия

и документу телеграма соответствуют

сейчас они CamelCase

как я понял

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

а с маленькой имена переменных

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
Я вот про это https://github.com/nexor/telega/blob/master/source/telega/botapi.d#L156
вообще пофиг, как по мне. если документации самого телеграма соответствует так и ещё лучше

внутренние переменные через подчеркивания я лично часто делаю

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
Где-то camelCase а где то under_score, не очень хорошо смешивать так стили
Вообще пофиг, воспринимается одинаково. Некоторые названия просто тем или иным способом субьективно хуже выглядят, и слепо идти по кодстайлу тут зло. Ну и соответствие телеграмовскому документу это удобно для grep

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
там private/public зависит от первой буквы имени переменной
http://polit.ru/media/photolib/2014/12/08/thumbs/11_1418134930.png.600x450_q85.jpg

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

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)

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

Denis
09.04.2018
14:49:42
Ну почему же явным и забить ) Можно все же подумать и реализовать гармонично
Лучше в процесссе, в версии 2.0 что-то поменять если назреет

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

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