The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]



"Выпуск p2p-мессенджера Communist 1.4"
Версия для распечатки Пред. тема | След. тема
Форум Разговоры, обсуждение новостей
Исходное сообщение [ Отслеживать ]
Подсказка: Доступны два режима работы форума: "Раскрыть нити" и "Свернуть нити".
. "Выпуск p2p-мессенджера Communist 1.4" +/
Сообщение от Аноним (-), 26-Июн-22, 09:09 
> Да пусть себе резвится. В основную ветку такое не пропущу, а форки
> - пускай делает.

Одна из самых приятных фич опенсорса что часть работы могут другие сделать, нахаляву 8). Это экономит время и силы? Торвальдс бы в жизни не написал даже 10% от того что Линукс сейчас. А всей толпой - пожалуйста. Но это требует некого сетапа поляны, чтобы комитерам было удобно. А то что не все патчи возьмут... я им некоторые патчи и сам не буду слать, догадываясь что откровенно экспериментальному "хаосу" не место в некомпетентных но резвых лапках.

> Предложения вносить - только приветствуется. Но решения принимать должен всегда кто-то
> один. Или небольшая группа людей, которая понимает друг-друга с полуслова и
> полностью совпадает во взглядах на проблему. Иначе будет хаос. В качестве
> положительного примера - то же ядро Линукс. Другое дело, что нужен
> механизм смены лидера (лидеров), но это уже совершенно отдельный разговор.

В опенсорсе всегда есть еще один способ: форкнуть/сделать свое. Я даже отпрактиковал это для токса, либу я не сильно трогал, но ботам, некоторым клиентам и т.п. досталось изрядно.

> Принимается. Дойдут руки - сделаю подробное описание.

Просто по коду видно что местами жарили на одном дыхании. Это все круто и так можно сделать много. Но вот потом это все же надо рефакторить в вид когда остальные двуногие возымеют шансы. Они не видят состояние головы в тот момент а въехать в длинный не особо структурированный код - довольно плохо работает.

> Тут скорее вопрос вменяемых комментариев к коду. Сделаю постепенно.

Нормальные люди делают это как-то if (NETMODE_TCP == netmode) ... например. В чем проблема у вас?

1) Нет определения и контекста. Что есть "1"? А, какая-то константа, даже строковая зачем-то. Но к чему она относится? И какой у нее реальный смысл? А хрен его знает! И даже более того, ни поиск, ни даже крутые IDE умеющие в парсинг синтаксиса не смогут найти место сорца где эта единица реально обретает смысл. А если это сделать допустим enum или #define с говорящим названием, и разместить это вверху сорца (или иногда функции, если сильно локальное), даже в тупом редакторе мигом найдут, а в IDE еще и go to declaration смогут одним хоткеем. И вот мы в 5 секунд уже видим ответ на многие вопросы. Когда я говорю что читающим должно быть удобно, я вот такое имею в виду, они тоже люди. И изначально на 100% вне контекста.

2) Нет никаких деклараций намерений чтобы было понятно делает ли код то что задумано вообще, и что собственно было по факту задумано. Сложно получить большую картинку. Какие modes еще есть? Чем отличаются? Почему тут именно этот? Единица вообще не отвечает на все эти вопрсоы. Понимание общей структуры не вырисовывается. А это ой.

3) Если это делать правильно, половину тупых багов типа опечаток найдет компилер на фазе компила. А спихнуть часть работы на машину время экономит однако. Но для этого все же надо как-то описать машине свои намерения, чтобы можно было проверить в т.ч. и автоматически. Для чего-то такого и придуманы типы данных, assert'ы и декларация чем может быть вон то а чем оно быть явно не должно. Единичка строчной константой в этом контексте один из самых плохих вариантов - не понятно почему тут именно оно, ни человеку, ни машине, и не предмет какой-либо верификации вообще. Если там 2 будет - валидно ли это? А 5? Кто ж его знает, это где-то сильно дальше логику надо ковырять, займет пару дней поди...

4) А конкретно вон тот синтаксис удостоверяется что если вместо == будет опечатка "=", компилер тут же взвоет т.к. попытка назначить чему-то типа константы значение явный баг. Это при случае спасет от многих часов долботни в дебагере с совершенно не очевидными багами. В проге такого плана баги бывают очень долбучие, типа падения в полночь четверга високосного года хз почему, если ремота - именно в Зимбабве, а не что-то еще. Потом ждать под дебагером такого совпадения можно очень долго. Заметьте, я не тратил лишнее время на комент, но при этом понятно что и почему проверяется, а заодно сделал в стиле "антибаг".

Я не настаиваю что надо деолать именно так, но некоторые идеи, имхо, стоило бы стырить, у меня и других. Это ж не ради постановки кого-то в стойло а потому что спасает от продолба кучи времени и/или так лучше работает.

> Да, есть такое. Сам уже над этим думал - буду по мере
> работы над кодом разбивать на функции и классы.

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

Ответить | Правка | Наверх | Cообщить модератору

Оглавление
Выпуск p2p-мессенджера Communist 1.4, opennews, 25-Июн-22, 09:38  [смотреть все]
Форумы | Темы | Пред. тема | След. тема



Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру