Skip to content

refactor: Fix some small issues, add -h/-help flag#145

Open
alxmcp wants to merge 3 commits intocacggghp:mainfrom
alxmcp:ln
Open

refactor: Fix some small issues, add -h/-help flag#145
alxmcp wants to merge 3 commits intocacggghp:mainfrom
alxmcp:ln

Conversation

@alxmcp
Copy link
Copy Markdown
Contributor

@alxmcp alxmcp commented Apr 15, 2026

No description provided.

@cacggghp
Copy link
Copy Markdown
Owner

Спасибо, но мне кажется код ещё сложнее стал... Раз уж рефакторить, может как-то сделать код более простым, читаемым, линейным? Чтобы было понятно что зачем вызывает. Мне кажется там много лишних функций вообще.

@alxmcp
Copy link
Copy Markdown
Contributor Author

alxmcp commented Apr 16, 2026

Почему сложнее? Стало больше строк, но он стал читаемее. Местами более scalable. Наверное только комментариев не хватает, что сделает код ещё больше.

Тут много кода - это тесты. На них можно не смотреть вообще, если не заниматься разработкой.

Для чего тесты?

Они нужны, чтобы проверять работоспособность и для проверки регресса в случае чего. Мы пишем тесты, которые имитируют и подтверждают то или иное действие, а потом в следующие разы обновляем код и если тест падает, значит мы что-то сделали не так, упустить что что-то сделано не так - легко. Это не редкость работая над одним блоком кода, иногда ломается другое и тесты как раз помогают новым разработчикам лучше понимать, а для чего нужен был изначально тот или иной блок. Например мы недавно удалили прямое подключение -no-dtls, потому что не было понятно, а для чего оно используется вообще. А оно используется для клиентского варпа оказывается.

Вместо старого метода используется диспатчер, который упрощает флоу и помогает с маскировкой в том числе, что делает код более scalable. В последующие разы можно будет локально вносить правки, потому что фундамент заложен. Например, как недавний PR с локальными правками для уплотнения имитация человека, чтобы не детектил бота.

Для возвращения no dtls нужно добавить ещё новый метод, ну если он действительно нужен.

Второе это проброс контекста и отдельный cliutil как раз для читаемости, cliutil сам маленький. Но именно флаги у клиента и сервер разные, поэтому так. Плюс дополнительный код для help меню, вместо паники, чтобы пользователи видели более понятное что-то - какие флаги можно использовать.

В северном коде дублирование лишнее вынесено. Как раз стало более читаемым.

В клиенте были замечены логические ошибки, которые у некоторых людей судя по их словам выскакивают то тут, то там, этот PR (точнее предыдущий с DC режимами) исправил их ещё до того, как о них начали писать.

Ну это не полноценный рефакторинг, а локальный. Эти большие god файлы main так и остаются довольно большими. Любой рефакторинг может поломать что-то конечно. Но даже если замерджить сейчас, то тут нет коммитов с feat, fix, break, а значит не будет релиза. И пока нет релиза можно у себя локально собрать и потестировать.

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

@alxmcp
Copy link
Copy Markdown
Contributor Author

alxmcp commented Apr 16, 2026

Плюс этот PR решает фейлы в GitHub Actions из-за golangci.

А ещё недавно писали про то, что бинариники винды определяются, как вирусы в VirusTotal. Я прокомментировал, что это непредсказуемое и ложное поведение, но в моём форке бинаринки винды не определяются, как вирус.

Этот маленький PR исправляет очень немало вещей на самом деле.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants