(Это продолжение предыдущей темы)
Panda Member Автор темы 2404/12729 ответов, #4 в рейтинге 13 лет на iXBT, с июля 2011 Чаще пишет в "Политика" (37%) Web-страница | (Это продолжение предыдущей темы) |
1kvolt Member | areex которые не могут оценить гениальность спагетти-кода Хорош уже. Нет там спагетти кода. Я не против претензий, наоборот, - но когда они по делу, как со стрелочками. Код-ревью тоже должно быть не личной оценкой "спагетти-неспагетти" или "индусский/неиндусский". А выявлять конкретные проблемы и может даже быть возможные варианты улучшения. Т.е., если ты считаешь код "спагетти", укажи, почему. А в идеале укажи и что, по-твоему, можно улучшить, и как. Не в плане перепиши код, а в плане общей идеи. Типа, "Тут у тебя стопиццот ифов, нафига? Может, объединить часть из них в один со сложным условием или даже вообще на свитч переделать?" или "Смотри, я тыркаю стрелочки, и строка ввода превращается в говно. Это надо порешать". |
areex Member | 1kvolt Хорош уже. Нет там спагетти кода. Я не против претензий, наоборот, - но когда они по делу, как со стрелочками. Код-ревью тоже должно быть не личной оценкой "спагетти-неспагетти" или "индусский/неиндусский". Тут нет никакой личной оценки. Неструктурированный код, где каждая проблема обходится дополнительным условием - называется спагетти кодом. Я ничем тут тебе не могу помочь, в смысле определения. А в идеале укажи и что, по-твоему, можно улучшить, и как. В идеала надо использовать уже готовые либы, но у тебя это мамкин подход, так что идеала не будет. Если этот вопрос считать просьбой сделать ревью, то я бы докопался до следующего: Твоя функция состоит из трех разных частей - нарушается SRP. Т.е. это должна композиция трех функций собственно ввод, фильтр и запись в строку. Во-вторых, в функции есть более одного варианта ошибки. Единственный способ выяснить что происходить, это изучать лог. У вызывающей стороны вообще нет возможности адекватно отреагировать на ошибку. + она еще и фигат в консоль, что может быть отдельной проблемой. Должно возвращать только код ошибки и указатель. В-третьих, бесконечный цикл. Если бы твоя функция непрерывно потребляла данные, т.е. память была бы константой, то это не проблема. Но у тебя память жрется. Т.е. легко можно организовать утечку вообще всей памяти на компе, с неопределенным поведением остальных программ. Ну, остальное уже вишенки. Если основное пофиксить, уже может и читаться лучше будет. Добавление от 28.03.2024 21:44: Распознавание лица на уровне, даже гайдзинов, которые, как известно, все на одно лицо. И общая база данных всех человеков, в том числе - туристов.Насколько я слышал, в Москве распознавание уже работает. Вот только это не цифровизация, это тот самый гулаг, который ты не хочешь. Тут можно трактовать Нельзя. В вопросе не было просьбы ничего показать. Я к тому, что код-ревью - это отнюдь не панацея. Не знаю где ты у меня это вычитал, но это ты опять сам придумал. Не то, что не панацея, а оно вообще не про корректность. Ну т.е. человек иногда может заметить ошибку, но это точно не то место, где это надо делать. Не знаю зачем ты бегаешь за Локхидами. Весь код ядра линукса проходит ревью. 100%. И тем не менее уязвимости находят только в путь. Очередной не мамкин программист допустил двойное освобождение. https://www.youtube.com/watch?v=ixn5OygxBY4 Это не вопрос судей. Это вопрос подхода - невозможно так писать надежный код. Не годится язык си для этого. Повторять те же действия и ожидать другой результат это определение безумия. |
Panda Member Автор темы 3434/17698 ответов, #4 в рейтинге 13 лет на iXBT, с июля 2011 Чаще пишет в "Политика" (37%) Web-страница | ревью не всегда ревью. Кто-то на отступы, внимание акцентирует, кто-то на название не такое, и на простоту кода, а на саму суть внимание уже уходит налево. |
s1b Member 1367/7755 ответов, #3 в рейтинге 2 года на iXBT, с апреля 2022 Чаще пишет в "Общий" (38%) США, AZ Web-страница | 1kvolt Распознавание лица на уровне, даже гайдзинов, которые, как известно, все на одно лицо. И общая база данных всех человеков, в том числе - туристов. Про турстов - очен сомневаюсь, а вот постоянно там живущие русские знакомые постоянно ноют, что их белые рожи на отрез отказывается распознавать. Хотя они там ВНЖ имеют и все документы. Кстати, от чуваков, живущих в Китае несколько лет и нативных китайцев идёт инфа, что социальный рейтинг - миф. Социальный рейтинг есть, но не в таком виде, в котором его туристы описывают обычно. У нас, в США, тоже есть "социальный рейтинг", только называется не "социальный", а "кредитный". |
Panda Member Автор темы 3435/17701 ответов, #4 в рейтинге 13 лет на iXBT, с июля 2011 Чаще пишет в "Политика" (37%) Web-страница |
1kvolt Member | areex Тут нет никакой личной оценки. Неструктурированный код, где каждая проблема обходится дополнительным условием - называется спагетти кодом. Я ничем тут тебе не могу помочь, в смысле определения. И какие же именно проблемы обходятся дополнительными условиями? Можно немного конкретики? В идеала надо использовать уже готовые либы, но у тебя это мамкин подход, так что идеала не будет. Ты не учитываешь, что я любитель - я пишу что-то не для того, чтобы побырому срубить денег, а потому что мне это доставляет, и потому что мне интересно разобраться, как оно работает. Я в курсе про всякие либы и я сознательно их избегаю. Чтобы понять, чтобы научиться самому. А во-вторых, кто-то же пишет эти либы, они не самозарождаются. Ты не хочешь их писать, Hance не хочет, Panda не хочет, s1b занят, у Reasonable нет достойного компа и денег на него... Ну и кто в итоге, если не я? Вот и накалякал вам фукцию. Если этот вопрос считать просьбой сделать ревью, то я бы докопался до следующего: Твоя функция состоит из трех разных частей - нарушается SRP. Т.е. это должна композиция трех функций собственно ввод, фильтр и запись в строку. Во-вторых, в функции есть более одного варианта ошибки. Единственный способ выяснить что происходить, это изучать лог. У вызывающей стороны вообще нет возможности адекватно отреагировать на ошибку. + она еще и фигат в консоль, что может быть отдельной проблемой. Должно возвращать только код ошибки и указатель. В-третьих, бесконечный цикл. Если бы твоя функция непрерывно потребляла данные, т.е. память была бы константой, то это не проблема. Но у тебя память жрется. Т.е. легко можно организовать утечку вообще всей памяти на компе, с неопределенным поведением остальных программ. 1) Тут нужно знать меру ИМХО. Да, разбитие на функции для конкретных задач - хорошая идея. Но ровно до тех пор, пока она не становится плохой идеей. В данном конкретном случае это функция получения фильтрованной строки ввода от пользователя. Её нет смысла разбивать, потому что она выполняет определённую конкретную задачу. В итоговом коде, откуда она вызывается, это выглядит так: Это просто, удобно и понятно. Ты можешь вписать в неё фильтры или слегка модифицировать, чтобы передавать фильтры в параметрах - и всё. 2) Фигачит в консоль - это же очевидная затычка. Вставь вместо этого вызов любой своей функции обработки ошибки. 3) Цикл не бесконечный, условие выхода есть. Хочешь ограничить пользователя конечным буфером ввода? Для этого есть функции стандартной либы, задача же этой функции как раз в том, чтобы ограничивать только размером доступной свободной памяти. Упрекать функцию в том, что она не решает задачу, которая перед ней изначально не ставилась? Поведение остальных программ - это проблема остальных программ и ОС, которая распределяет ресурсы. В моей функции утечки памяти нет, если использующий её программист не полный додик. Насколько я слышал, в Москве распознавание уже работает. Вот только это не цифровизация, это тот самый гулаг, который ты не хочешь. Речь не столько о распознавании, сколько о взаимодействии госструктур и общенациональных базах данных. Весь код ядра линукса проходит ревью. 100%. И тем не менее уязвимости находят только в путь. Очередной не мамкин программист допустил двойное освобождение. Ага, я подписан на чувака, видел это видео. Кроса...ги, чо. Тоже небось не вставили проверки, чтобы не увеличивать цикломатическую сложность. s1b Про турстов - очен сомневаюсь, а вот постоянно там живущие русские знакомые постоянно ноют, что их белые рожи на отрез отказывается распознавать. Хотя они там ВНЖ имеют и все документы. Ну не всё идеально конечно. И всё же огромный разрыв по сравнению с РФ. Социальный рейтинг есть, но не в таком виде, в котором его туристы описывают обычно. У нас, в США, тоже есть "социальный рейтинг", только называется не "социальный", а "кредитный". Если его пролюбить - даже нормальное жилье хрен снимешь. Грят, сейчас в Европах вводят не менее, если не более, жёсткий контроль и социальный рейтинг. ЕМНИП особенно на Скандинавию жалуются. Но это не точно. А кредитный в США - это вообще беспредел, если судить по описанию одного человека с другого форума, с которым я общался на эту тему. Натуральное финансовое рабство. |
s1b Member 1368/7756 ответов, #3 в рейтинге 2 года на iXBT, с апреля 2022 Чаще пишет в "Общий" (38%) США, AZ Web-страница | 1kvolt s1b занят Не, мы ж уже выяснили, я просто не умею ничего. А если серьезно - вполне себе пишу, только не в опенсорс. За деньги - да. А кредитный в США - это вообще беспредел, если судить по описанию одного человека с другого форума, с которым я общался на эту тему. Натуральное финансовое рабство. Если оплачивать все вовремя - вообще никаких проблем и появляется целая куча всяких бонусов. Если пользоваться деньгами в долг и не гасить долги - и на телефон нормальный тариф не подключить, и нормальное жилье не арендовать, и вообще куча проблем. На мой взгляд - это совершенно правильно. |
Hance Member 1585/35290 ответов, #1 в рейтинге 24 года на iXBT, с февраля 2001 108 фото на iXBT.photo Чаще пишет в "Политика" (51%) Ватикан | 1kvolt а что ты хочешь - опиши в виде стори, юзкейсов, ФТ, НФТ Добавление от 29.03.2024 00:10: зачем тебе вообще массив, когда есть строка?
|
1kvolt Member | s1b За деньги - да. Собственно, прошлый год у меня почти весь прошел за написанием либ и драйверов, в основном под FreeRTOS писал. Ну я и говорю - занят. Если оплачивать все вовремя - вообще никаких проблем и появляется целая куча всяких бонусов. Если пользоваться деньгами в долг и не гасить долги - и на телефон нормальный тариф не подключить, и нормальное жилье не арендовать, и вообще куча проблем. На мой взгляд - это совершенно правильно. Не, он когда переехал - были проблемы сначала, пока положительного рейтинга не было. Потом-то проще стало, инженер, нормальная денежная работа, стабильный доход... Ну а вообще эта привязка к банкам и особенно к кредитам - долговое рабтсво, ни больше, ни меньше. Ужос, ужос... Добавление от 29.03.2024 00:21: Hanceзачем тебе вообще массив, когда есть строка? Выглядит как С++. Я пока останусь с С, спасибо. И разве строка в С++ - это не сладкая сахарная обёрточка вокруг того же массива? а что ты хочешь - опиши в виде стори, юзкейсов, ФТ, НФТ Я не понял вопроса, извини. |
Hance Member 1586/35291 ответов, #1 в рейтинге 24 года на iXBT, с февраля 2001 108 фото на iXBT.photo Чаще пишет в "Политика" (51%) Ватикан |
Добавление от 29.03.2024 00:29: тебе прям Си...
Исправлено: Hance, 29.03.2024 08:47 |
1kvolt Member | Hance Не пойму, чего ты пытаешься добиться? Переписать МОЮ функцию, используя ЧатГПТ? Добавление от 29.03.2024 00:44: Кстати, isalpha() не работает нормально с wchar_t.Добавление от 29.03.2024 00:46: Hancechar* getUserWideString() { return readWideChars(); } А вот это зачем? |
areex Member | 1kvolt И какие же именно проблемы обходятся дополнительными условиями? Можно немного конкретики? Да вся твоя функция это обход очередной проблемы очередной проверкой. Ты не учитываешь, что я любитель - я пишу что-то не для того, чтобы побырому срубить денег, а потому что мне это доставляет Да ради бога, мне все равно уже эта тема надоела. Если тебе все нравиться, то и ок. 1) Тут нужно знать меру ИМХО. Да, разбитие на функции для конкретных задач - хорошая идея. Но ровно до тех пор, пока она не становится плохой идеей. Эта фраза не имеет смысла. Грят, сейчас в Европах вводят не менее, если не более, жёсткий контроль и социальный рейтинг. |
1kvolt Member |
Hance Member 1587/35292 ответов, #1 в рейтинге 24 года на iXBT, с февраля 2001 108 фото на iXBT.photo Чаще пишет в "Политика" (51%) Ватикан | 1kvolt Переписать МОЮ функцию, используя ЧатГПТ? Чтобы что? Ты не понимаешь разницу? Твоя функция создаёт высокую ментальную нагрузку когда её читаешь. Про метрики тебе уже сказали. По нарушение принципа единой ответственности тоже Добавление от 29.03.2024 08:17: Увеличение массива на 1 будет часто приводить к копированию его в свободное место. Тогда лучше выделять место с запасом.Или использовать не malloc а new но это уже c++ Добавление от 29.03.2024 08:19: 1kvoltisalpha() не работает нормально с wchar_t. #include <wctype.h> #include <locale.h> setlocale(LC_ALL, ""); // Установка локали для корректной работы с широкими символами Добавление от 29.03.2024 08:27: 1kvoltchar* getUserWideString() { return readWideChars(); } А вот это зачем? В чём глубинный смысл обернуть вызов функции в другую функцию? Осталось после рефакторинга. Не нужно Исправлено: Hance, 29.03.2024 09:06 Добавление от 29.03.2024 09:28: https://habr.com/ru/articles/565652/Добавление от 29.03.2024 09:29: Про оценки сложности |
areex Member | Cognitive Complexity Это чё? Численное доказательство, что все си-подобные языки говно? 15 (все остальные языки) 25 (семейство C-языков) |
1kvolt Member | Hance #include <wctype.h> #include <locale.h> setlocale(LC_ALL, ""); // Установка локали для корректной работы с широкими символами Я знаю про локали и, конечно же, установил её как надо. Тем не менее isalpha() не обрабатывает корректно некоторые буквы русского алфавита. Во всяком случае, у меня так. Твоя функция создаёт высокую ментальную нагрузку когда её читаешь. Про метрики тебе уже сказали. По нарушение принципа единой ответственности тоже Не создаёт. И принцип не нарушает. Есть задача, функция её выполняет. Что действительно создаёт высокую ментальную нагрузку, так это неуёмная страсть к разбиению всего и вся на мелкие функции без всякой надобности. Про метрики я уже ответил. |
Hance Member 1588/35295 ответов, #1 в рейтинге 24 года на iXBT, с февраля 2001 108 фото на iXBT.photo Чаще пишет в "Политика" (51%) Ватикан | 1kvolt тебе нельзя работать команде код ревью не пройдешь попросту |
1kvolt Member | Hance тебе нельзя работать команде код ревью не пройдешь попросту И кто же мне запретит (гипотетически) работать в команде? Про код ревью я уже всё написал areex. Если код-ревью состоит из оценки "Это индусский спагетти-код, потому что ятакщетаю, и потому что я ниacилил два маллока и один маленький свитч", то невелика потеря, польза такого код-ревью равна нулю. |
Hance Member 1589/35297 ответов, #1 в рейтинге 24 года на iXBT, с февраля 2001 108 фото на iXBT.photo Чаще пишет в "Политика" (51%) Ватикан |
areex Member | 1kvolt И кто же мне запретит (гипотетически) работать в команде? Потому что, если ты работаешь в команде, то ты просто не сможешь физически выполнить мерж, пока не получишь одобрение ревьювера. Ты можешь считать пользу от ревью нулем, ты можешь считать свой код гениальным, а всех м......., но в конечный продукт твой код не попадет. |
1kvolt Member | areex Потому что, если ты работаешь в команде, то ты просто не сможешь физически выполнить мерж, пока не получишь одобрение ревьювера. Ты можешь считать пользу от ревью нулем, ты можешь считать свой код гениальным, а всех м......., но в конечный продукт твой код не попадет. Зависит от команды, ревьюера и разных других факторов. Правильно было бы всё же написать "Тебе нельзя работать в НАШЕЙ команде", а не обобщать на все команды вообще. То, что Hance вычеркнул меня из своей команды, отнюдь не означает, что я не найду другую. Или даже не создам свою с блэкджеком и шлюхами. |
areex Member |