Войти
ФлеймФорумПрограммирование

Оцените кусочек кода из google/protobuf/compiler/parser.cc (3 стр)

Страницы: 1 2 3 4 Следующая »
#30
11:33, 26 окт. 2018

0iStalker
> Под спойлером
Именно! Движок форума их сожрал!


#31
14:44, 26 окт. 2018

Adler
> ) {
Индикатор говнокода.

А за переносы аргументов с выравниванием так вообще, пороть надо.

#32
15:35, 26 окт. 2018

0iStalker
> А кто вам сказал, что этот код вообще человек написал? Парсеры, обычно, это
> выхлоп кодогенерации...
  Кодогенераторы более читабельный код пишут

war_zes
> кроме парсера там и другой, вспомогательный код - и он весь вот такой говняный
  Это как бы истинный уровень программистов гугла

#33
(Правка: 21:21) 16:19, 26 окт. 2018

Delfigamer
> Она делает ровно то, чего от неё хотят, и ровно так, как следует.
> return input_->current().text == text;
ха, input_ - это Tokenizer, хотя для protobuf можно и так, но это похоже является ошибкой проектирования, т.к Tokenizer обычно теряет инфу о пробелах/разделителях, что сразу же пагубно сказыватся на качестве кода который должен генерировать понятные сообщения об ошибках парсинга. например я бы везде вместо Tokenizer`а  использовал бы обобщенный строитель/сериализатор AST и ничего бы не потерял.

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

ещё можно наехать на то, что Tokenizer::current() возвращает Token который УГ с точки зрения оптимизации, т.к хранит std::string, вот:
https://github.com/protocolbuffers/protobuf/blob/0038ff49af882463… enizer.h#L129

ну вот, докопался до всяких мелочей, вместо того, чтобы что-то крупное найти :(
#34
16:22, 26 окт. 2018

Adler
Извините, подумал, что это тема про программирование.

#35
16:23, 26 окт. 2018

Delfigamer
> то, что вы неосилили, ещё не значит, что код плохой.
Да я как бы и не говорил о том, что не осилил.
Просто мое личное мнение о стиле кода. Мне не нравиться.

#36
17:39, 26 окт. 2018

war_zes
> Например с какого перепугу команды else if и return из них на одном уровне?
А на каком они должны быть? Отступ два пробела стандарт.

#37
17:45, 26 окт. 2018

Panzerschrek[CN]
> Индикатор говнокода.
Тaк в JS так в основном и пишут…
Почему для Си это нельзя?

#38
17:45, 26 окт. 2018

0iStalker
> data = (data << 1) & 0xFE;
А это нафига? Типа в младший бит может заползти мусор из соседнего регистра?

#39
17:53, 26 окт. 2018

1 frag / 2 deaths
> Отступ два пробела стандарт.
лол

#40
21:15, 26 окт. 2018

Adler
> Tokenizer
> пробелах/разделителя
Бред какой то. Есть информация о строке и номере символа в строке, нафиг еще знать о каких то пробелах, если это не пайтон? И то, даже в пайтоне нужно знать только отступы в текущем блоке,  остальные решает стек/рекурсия. А остальные разделители (запятая, точка с запятой, двоеточие...) - это тоже токены.

#41
(Правка: 21:50) 21:49, 26 окт. 2018

Olaf85
> нафиг еще знать о каких то пробелах
Для protobuf незачем, а для компилятора/препроцессора/кодогенаратора/преобразователя - иногда полезно. Например у компилятора после стадии препроцессора может быть сгенерено что-то не валидное с точки зрения следующей стадии.
Если на первой стадии поработал Tokenizer, то на следующей стадии уже не будет никаких пробелов/табов/комментариев, а будет что-то типа потока токенов который невозможно представить в текстовом виде понятном юзеру, т.к разделители потеряны. Это важно если на второй стадии нужно будет распечатать понятные сообщения об ошибке парсинга.

#42
(Правка: 3:51) 3:51, 27 окт. 2018

Adler
> что-то типа потока токенов который невозможно представить в текстовом виде
> понятном юзеру
Положение токена в любом случае сохраняется в виде строка/столбец. Доставить пробелов, чтобы токен начинался с энного столбца - это для тебя неразрешимая задача?

#43
(Правка: 8:54) 8:36, 27 окт. 2018

Delfigamer
> Доставить пробелов, чтобы токен начинался с энного столбца - это для тебя
> неразрешимая задача?
Если стадий больше двух, то доставить пробелы, вместо потерянных разделителей - это же костыль, не? Если же умудриться достать разделители с предыдущих стадий в обход используемого токенайзера, то как бы вроде тоже костыль, не? Чем больше стадий препрцессинга тем проще заметить ущербность токенайзеров и любых других фиговин которые теряют инфу.

#44
10:31, 27 окт. 2018

Zefick

> Ну и тут совершенно случайно наткнулся на сегодняшний твит
Самый здравый комментарий на этот твит:

Dylan Smith @Dylonius
В ответ @ID_AA_Carmack

Glad to see you're getting back into space exploration.

Страницы: 1 2 3 4 Следующая »
ФлеймФорумПрограммирование