LINUX.ORG.RU

Про Дурова, но не скандал. Это вообще нормально так писать на Си?

 , ,


4

9

Про Дурова, но не скандал. Чтобы слить наработки ВК в Телеграм, они выложили их в опенсорц. Идем читать исходник и первый же файл - 5 тысяч строк. Какие всё-таки крестовики упоротые. И это тут же привело к чудным названиям в виде adjust_message0 и process_message1, типа интерфейсы :) Ну довели бы идею до конца, вообще бы в один файл всё напихали, длиной триллион строк.

Ну и вообще посмотрите, что там внутри, божечки-кошечки.

assert (E->a == 0x504d4554 && s == 24);

без комментариев, без ничего. Поднимите руки все, кто по виду числа 0x504d4554 понимает, что это такое. А циклы... циклы... циклы!

Или может, это нормально, просто мы анскильные?

Ссылка для просмотра: https://github.com/vk-com/kphp-kdb/blob/master/text/text-index.c

★★★★☆

Ответ на: комментарий от eao197
  int b = T->wptr - T->wst;
  if (!b) {
    T->wptr = T->wst;
    return;
  }

Никак не пойму смысла этой части. Ведь если T->wptr - T->wst даёт 0, то T->wptr == T->wst и нет смысла в T->wptr = T->wst или я что-то не так понял?

Deleted
()
Ответ на: комментарий от Deleted

С такими вопросами лучше к авторам кода (к коим я, к счастью, никакого отношения не имею). Но такое ощущение, что вы обнаружили косяк. Не смертельный, но косяк.

eao197 ★★★★★
()
Ответ на: комментарий от Deleted

Я не много видел проектов на С, но в тех свободных проектах что я копался все было на порядок лучше. А то и не на один. Дело не в всяких динамических штуках, они достаточно просто делаются на С, а в глобальных переменных.

urxvt ★★★★★
()
Ответ на: комментарий от mersinvald

Так обычно нельзя делать, поэтому мейнтейнеры страдают и патчат =)

Чуть ниже моего поста человек подтвердил это ссылкой на пакет telegram-desktop-systemqt в Arch Linux со специфичными патчами, которые отвязывают программу от патченного Qt.

EXL ★★★★★
()
Последнее исправление: EXL (всего исправлений: 1)
Ответ на: комментарий от anonymous

а теперь удали комментарии, коих 80%. Например, ткнул в произвольное место: функция isUpperCase занимает 3 строчки (на самом деле можно было написать в 1, но красота требует жертв), а документация на нее - 25 строчек. Кстати, имхо, вот это образцовый способ кодирования: на одну строчку не меньше километра документации, чтобы было в точности ясно, что она делает. Всегда так делаю. Именно этого сильно не хватает дуровскому коду.

stevejobs ★★★★☆
() автор топика
Ответ на: комментарий от stevejobs

на одну строчку не меньше километра документации, чтобы было в точности ясно, что она делает.Всегда так делаю.

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

clover
()
Ответ на: комментарий от clover

у нас есть разделение на «прикладной код» и «ядро». «Ядро» - это например, сетевые библиотеки (всякие очереди, генераторы api ендпоинтов, итп), работа с базами данных, веб-фреймворки, итп. «Прикладное» - это обычные приложения, которые могут использовать ядерные функции. Мы пилим компилятор и рантайм языка, входящего в ядро. Прикладные программисты постоянно читают ядерный код, чтобы а) свалить на нас все проблемы б) выбрать верные инструменты, и правильно ими воспользоваться. Если там будет что-то непонятно написано, то всё пропало. С этой точки зрения, каждая строчка является не только кодом, но в своем роде и API, и архитектурным гайдом, и справочником. Пусть лучше новая фича будет внедряться долго, чем она будет реализована плохо, и плохую практику разнесет по всем проектам

stevejobs ★★★★☆
() автор топика

При чем тут крестовики? Почитай код Телеграма для Android, там везде такой ужас. Простыни по 5К строк, встречается больше 7 уровней вложенности кода, имена переменных и функций тонко намекают на родной язык авторов:

messagesDidLoaded
didReceivedNotification
didPressedOnSubDialog


Я в свое время даже было подумал что подобный говномес в Java - обычное дело.

m0rph ★★★★★
()
Ответ на: комментарий от stevejobs

Мы пилим компилятор и рантайм языка, входящего в ядро.

В переводе на русский это означает, что вы страдаете херней чешете ЧСВ за счет Сбербанка.

eao197 ★★★★★
()
Ответ на: комментарий от stevejobs

у тебя сертификат на сайте протух

anonymous
()
Ответ на: комментарий от i-rinat

Надо учиться понимать эти криптик-мессаджес

Не, не надо. Надо на входе репозитория ставить ревьювера с банхаммером.

slackwarrior ★★★★★
()
Ответ на: комментарий от kawaii_neko

Но большинство «сиплюсплюс разработчиков» об этом не в курсе

Серьёзно?

Ну пусть даже так. И чем это плохо?

DarkEld3r ★★★★★
()
Ответ на: комментарий от DarkEld3r

Ну пусть даже так. И чем это плохо?

Влияет на время компиляции, компоновки (в т. ч. динамической) и объем бинарников в случае динамической линковки.

kawaii_neko ★★★★
()
Ответ на: комментарий от unC0Rr

5000 строк с человека в день?

Да, меня на три порядка переглючило :)

KRoN73 ★★★★★
()
Ответ на: комментарий от Deleted

Тупо пофиг!

Именно. И не только в программерстве, если что.

Zhbert ★★★★★
()

Ну подумаешь захардкодили константы :)

Шедевр из libpcap

      if (!(hdr->nflog_version) == 0) {
              return 0;
      }

vel ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.