Последние темы Поиск
Общие форумы
Форумы поддержки портала iXBT.com
Специализированные форумы
ПроцессорыРазгон и охлаждениеСистемные платыМодули памятиВидеосистемаКриптовалюты, майнинг, blockchain-технологии, NFTИскусственный интеллект: технологии, практика, развитиеTV- и FM-тюнеры, видеовход, видеовыходЦифровое видео: захват, монтаж, обработкаМониторы и другие устройства отображенияЦифровое фотоБеспилотные летательные аппаратыЦифровой звукProAudio: Профессиональное звуковое оборудованиеСтереосистемыДомашний кинотеатр: проигрыватели и источники сигналаДомашний кинотеатр: аудиосистемаДомашний кинотеатр: ТV и проекторыМагнитные и SSD накопителиОптические носители информацииСетевые носители информацииПериферияКорпуса, блоки питания, UPSСети, сетевые технологии, подключение к интернетуСистемное администрирование, безопасностьСерверыНоутбуки, нетбуки и ультрабукиПланшеты и электронные книгиМобильные телефоны, смартфоны, кпк, коммуникаторыМобильные гаджетыОператоры и технологии мобильной связиТелефония, телекоммуникации, офисные АТСБытовая техника
Программы
Игры
Авторские форумы
Прочие форумы
Архивы конференции
Архив "О Конференции"Архив "Процессоры"Архив "Разгон и охлаждение"Архив "Системные платы"Архив "Модули памяти"Архив "Видеосистема"Архив "Видеозахват"Архив "Мониторы и другие устройства отображения"Архив "Цифровое изображение"Архив "Цифровой звук"Архив "Периферия"Архив "Корпуса, блоки питания, UPS"Архив "Коммуникации: сети и сетевые технологии"Домашний интернет, модемы (архив)Архив "Системное администрирование, безопасность"Архив "Мобильная связь"Программы Microsoft: Windows, Office, Server, Windows LiveАрхив "OС и системное ПО"Архив "Программы: Интернет"Архив "Программирование"Форум прикладных программистовАрхив "Электронные устройства и компоненты"Архив "Околокомпьютерный Флейм & Общий"Архив "Полемика (Злобный Флейм)"Околоавтомобильный ФлеймФорум ремонтниковВопросы компании IntelФотокамеры SamsungФорум о магазине приложений RuStoreФорум по продукции компании Huawei
Справка и сервисы
Другие проекты iXBT.com
Страницы:Кликните, чтобы указать произвольную страницу123456666768далее
Panda: Какой язык программирования выбрать в РФ? Java, PHP, Python, C#, Rust, C++, JavaScript (часть 2)
Panda
Member
Автор темы
2404/12729 ответов, #4 в рейтинге
13 лет на iXBT, с июля 2011
Чаще пишет в "Политика" (37%)
Web-страница
Инфо Ответить
Panda MemberАвтор темы
  12 месяцев назад / 28 марта 2024 20:26
(Это продолжение предыдущей темы)
1kvolt
Member
305/515 ответов, #5 в рейтинге
8 лет на iXBT, с марта 2017
Чаще пишет в "Общий" (27%)
Россия, Мурманск
Инфо Ответить
1kvolt Member
12 месяцев назад / 28 марта 2024 20:26
areex
которые не могут оценить гениальность спагетти-кода

Хорош уже. Нет там спагетти кода. Я не против претензий, наоборот, - но когда они по делу, как со стрелочками. Код-ревью тоже должно быть не личной оценкой "спагетти-неспагетти" или "индусский/неиндусский". А выявлять конкретные проблемы и может даже быть возможные варианты улучшения.
Т.е., если ты считаешь код "спагетти", укажи, почему. А в идеале укажи и что, по-твоему, можно улучшить, и как. Не в плане перепиши код, а в плане общей идеи. Типа, "Тут у тебя стопиццот ифов, нафига? Может, объединить часть из них в один со сложным условием или даже вообще на свитч переделать?" или "Смотри, я тыркаю стрелочки, и строка ввода превращается в говно. Это надо порешать".
areex
Member
1941/45694 ответов, #2 в рейтинге
23 года на iXBT, с февраля 2002
Чаще пишет в "Юмор" (50%)
Инфо Ответить
areex Member
12 месяцев назад / 28 марта 2024 21:44
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-страница
Инфо Ответить
Panda MemberАвтор темы
12 месяцев назад / 28 марта 2024 21:49
ревью не всегда ревью. Кто-то на отступы, внимание акцентирует, кто-то на название не такое, и на простоту кода, а на саму суть внимание уже уходит налево.
s1b
Member
1367/7755 ответов, #3 в рейтинге
2 года на iXBT, с апреля 2022
Чаще пишет в "Общий" (38%)
США, AZ
Web-страница
Инфо Ответить
s
s1b Member
12 месяцев назад / 28 марта 2024 22:01
1kvolt
Распознавание лица на уровне, даже гайдзинов, которые, как известно, все на одно лицо. И общая база данных всех человеков, в том числе - туристов.

Про турстов - очен сомневаюсь, а вот постоянно там живущие русские знакомые постоянно ноют, что их белые рожи на отрез отказывается распознавать. Хотя они там ВНЖ имеют и все документы.


Кстати, от чуваков, живущих в Китае несколько лет и нативных китайцев идёт инфа, что социальный рейтинг - миф.

Социальный рейтинг есть, но не в таком виде, в котором его туристы описывают обычно. У нас, в США, тоже есть "социальный рейтинг", только называется не "социальный", а "кредитный". Если его пролюбить - даже нормальное жилье хрен снимешь.
Panda
Member
Автор темы
3435/17701 ответов, #4 в рейтинге
13 лет на iXBT, с июля 2011
Чаще пишет в "Политика" (37%)
Web-страница
Инфо Ответить
Panda MemberАвтор темы
12 месяцев назад / 28 марта 2024 22:04
s1b
а вот постоянно там живущие русские знакомые постоянно ноют, что их белые рожи на отрез отказывается распознавать.
оно проблема тех рож, и не больше.
1kvolt
Member
306/516 ответов, #5 в рейтинге
8 лет на iXBT, с марта 2017
Чаще пишет в "Общий" (27%)
Россия, Мурманск
Инфо Ответить
1kvolt Member
12 месяцев назад / 28 марта 2024 23:25
areex
Тут нет никакой личной оценки. Неструктурированный код, где каждая проблема обходится дополнительным условием - называется спагетти кодом. Я ничем тут тебе не могу помочь, в смысле определения.

И какие же именно проблемы обходятся дополнительными условиями? Можно немного конкретики?

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

Ты не учитываешь, что я любитель - я пишу что-то не для того, чтобы побырому срубить денег, а потому что мне это доставляет, и потому что мне интересно разобраться, как оно работает. Я в курсе про всякие либы и я сознательно их избегаю. Чтобы понять, чтобы научиться самому.
А во-вторых, кто-то же пишет эти либы, они не самозарождаются. Ты не хочешь их писать, Hance не хочет, Panda не хочет, s1b занят, у Reasonable нет достойного компа и денег на него... Ну и кто в итоге, если не я?
Вот и накалякал вам фукцию.

Если этот вопрос считать просьбой сделать ревью, то я бы докопался до следующего:
Твоя функция состоит из трех разных частей - нарушается SRP. Т.е. это должна композиция трех функций собственно ввод, фильтр и запись в строку.
Во-вторых, в функции есть более одного варианта ошибки. Единственный способ выяснить что происходить, это изучать лог. У вызывающей стороны вообще нет возможности адекватно отреагировать на ошибку. + она еще и фигат в консоль, что может быть отдельной проблемой. Должно возвращать только код ошибки и указатель.
В-третьих, бесконечный цикл. Если бы твоя функция непрерывно потребляла данные, т.е. память была бы константой, то это не проблема. Но у тебя память жрется. Т.е. легко можно организовать утечку вообще всей памяти на компе, с неопределенным поведением остальных программ.


1) Тут нужно знать меру ИМХО. Да, разбитие на функции для конкретных задач - хорошая идея. Но ровно до тех пор, пока она не становится плохой идеей.
В данном конкретном случае это функция получения фильтрованной строки ввода от пользователя. Её нет смысла разбивать, потому что она выполняет определённую конкретную задачу. В итоговом коде, откуда она вызывается, это выглядит так:
1UserStr = GetUserWideString();
Это просто, удобно и понятно. Ты можешь вписать в неё фильтры или слегка модифицировать, чтобы передавать фильтры в параметрах - и всё.
2) Фигачит в консоль - это же очевидная затычка. Вставь вместо этого вызов любой своей функции обработки ошибки.
3) Цикл не бесконечный, условие выхода есть. Хочешь ограничить пользователя конечным буфером ввода? Для этого есть функции стандартной либы, задача же этой функции как раз в том, чтобы ограничивать только размером доступной свободной памяти. Упрекать функцию в том, что она не решает задачу, которая перед ней изначально не ставилась?
Поведение остальных программ - это проблема остальных программ и ОС, которая распределяет ресурсы. В моей функции утечки памяти нет, если использующий её программист не полный додик.

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


Речь не столько о распознавании, сколько о взаимодействии госструктур и общенациональных базах данных.

Весь код ядра линукса проходит ревью. 100%. И тем не менее уязвимости находят только в путь. Очередной не мамкин программист допустил двойное освобождение.

Ага, я подписан на чувака, видел это видео. Кроса...ги, чо. Тоже небось не вставили проверки, чтобы не увеличивать цикломатическую сложность.

s1b
Про турстов - очен сомневаюсь, а вот постоянно там живущие русские знакомые постоянно ноют, что их белые рожи на отрез отказывается распознавать. Хотя они там ВНЖ имеют и все документы.

Ну не всё идеально конечно. И всё же огромный разрыв по сравнению с РФ.

Социальный рейтинг есть, но не в таком виде, в котором его туристы описывают обычно. У нас, в США, тоже есть "социальный рейтинг", только называется не "социальный", а "кредитный". Если его пролюбить - даже нормальное жилье хрен снимешь.

Грят, сейчас в Европах вводят не менее, если не более, жёсткий контроль и социальный рейтинг. ЕМНИП особенно на Скандинавию жалуются. Но это не точно.
А кредитный в США - это вообще беспредел, если судить по описанию одного человека с другого форума, с которым я общался на эту тему. Натуральное финансовое рабство.
s1b
Member
1368/7756 ответов, #3 в рейтинге
2 года на iXBT, с апреля 2022
Чаще пишет в "Общий" (38%)
США, AZ
Web-страница
Инфо Ответить
s
s1b Member
12 месяцев назад / 28 марта 2024 23:38
1kvolt
s1b занят

Не, мы ж уже выяснили, я просто не умею ничего. Я даже половину терминологии на русском (и других яхыках, которыми практически не пользуюсь) не знаю.

А если серьезно - вполне себе пишу, только не в опенсорс. За деньги - да. Собственно, прошлый год у меня почти весь прошел за написанием либ и драйверов, в основном под FreeRTOS писал.


А кредитный в США - это вообще беспредел, если судить по описанию одного человека с другого форума, с которым я общался на эту тему. Натуральное финансовое рабство.

Если оплачивать все вовремя - вообще никаких проблем и появляется целая куча всяких бонусов. Если пользоваться деньгами в долг и не гасить долги - и на телефон нормальный тариф не подключить, и нормальное жилье не арендовать, и вообще куча проблем. На мой взгляд - это совершенно правильно.
Hance
Member
1585/35290 ответов, #1 в рейтинге
24 года на iXBT, с февраля 2001
108 фото на iXBT.photo
Чаще пишет в "Политика" (51%)
Ватикан
Инфо Ответить
Hance Member
12 месяцев назад / 29 марта 2024 00:10
1kvolt
а что ты хочешь - опиши в виде стори, юзкейсов, ФТ, НФТ

Добавление от 29.03.2024 00:10:

зачем тебе вообще массив, когда есть строка?

01#include <iostream>
02#include <string>
03#include <conio.h>
04using namespace std;
05  
06string readWideChars() {
07    string input;
08    char charIn;
09    while (true) {
10        charIn = _getch();
11        switch (charIn) {
12            case '\r': // Enter
13                return input;
14            case '\x1B': // ESC
15                input = "";
16                return input;
17            case '\b': // Backspace
18                if (!input.empty()) {
19                    cout << "\b \b";
20                    input.pop_back();
21                }
22                break;
23            default:
24                if (isalpha(charIn)) {
25                    cout << charIn;
26                    input.push_back(charIn);
27                }
28                break;
29        }
30    }
31}
32  
33string getUserWideString() {
34    string input = readWideChars();
35    return input.empty() ? "" : input;
36}
37  
38int main() {
39    string userInput = getUserWideString();
40    cout << "\nUser Input: " << userInput << endl;
41    return 0;
42}
1kvolt
Member
307/517 ответов, #5 в рейтинге
8 лет на iXBT, с марта 2017
Чаще пишет в "Общий" (27%)
Россия, Мурманск
Инфо Ответить
1kvolt Member
12 месяцев назад / 29 марта 2024 00:21
s1b
За деньги - да. Собственно, прошлый год у меня почти весь прошел за написанием либ и драйверов, в основном под FreeRTOS писал.
Ну я и говорю - занят. Кто вообще знает, что это за зверь - FreeRTOS?

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

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

Добавление от 29.03.2024 00:21:

Hance
зачем тебе вообще массив, когда есть строка?

Выглядит как С++. Я пока останусь с С, спасибо.
И разве строка в С++ - это не сладкая сахарная обёрточка вокруг того же массива?

а что ты хочешь - опиши в виде стори, юзкейсов, ФТ, НФТ

Я не понял вопроса, извини. Что именно описать? И что это за страшные слова?
Hance
Member
1586/35291 ответов, #1 в рейтинге
24 года на iXBT, с февраля 2001
108 фото на iXBT.photo
Чаще пишет в "Политика" (51%)
Ватикан
Инфо Ответить
Hance Member
12 месяцев назад / 29 марта 2024 00:29
01#include <iostream>
02#include <cstdlib>
03#include <conio.h>
04using namespace std;
05  
06char* readWideChars() {
07    const int initialBufferSize = 100;
08    int bufferSize = initialBufferSize;
09    char* buffer = (char*)malloc(bufferSize * sizeof(char));
10    int bufferIndex = 0;
11    char charIn;
12    while (true) {
13        charIn = _getch();
14        switch (charIn) {
15            case '\r': // Enter
16                buffer[bufferIndex] = '\0';
17                return buffer;
18            case '\x1B': // ESC
19                buffer[0] = '\0';
20                return buffer;
21            case '\b': // Backspace
22                if (bufferIndex > 0) {
23                    bufferIndex--;
24                    cout << "\b \b";
25                }
26                break;
27            default:
28                if (isalpha(charIn)) {
29                    if (bufferIndex == bufferSize - 1) {
30                        buffer = twiceBuffer(buffer);
31                        bufferSize *= 2;
32                    }
33                    buffer[bufferIndex] = charIn;
34                    cout << charIn;
35                    bufferIndex++;
36                }
37                break;
38        }
39    }
40}
41  
42char* twiceBuffer(char* buffer) {
43    int currentSize = strlen(buffer);
44    int newSize = currentSize * 2;
45    char* newBuffer = (char*)realloc(buffer, newSize * sizeof(char));
46    if (newBuffer == nullptr) {
47        free(buffer);
48        cout << "Memory reallocation failed." << endl;
49        exit(1);
50    }
51    return newBuffer;
52}
53  
54char* getUserWideString() {
55    return readWideChars();
56}
57  
58int main() {
59    char* userInput = getUserWideString();
60    cout << "\nUser Input: " << userInput << endl;
61    free(userInput);
62    return 0;
63}

Добавление от 29.03.2024 00:29:

тебе прям Си...

01#include <stdio.h>
02#include <stdlib.h>
03#include <conio.h>
04#include <ctype.h>
05  
06char* readWideChars() {
07    const int initialBufferSize = 100;
08    int bufferSize = initialBufferSize;
09    char* buffer = (char*)malloc(bufferSize * sizeof(char));
10    int bufferIndex = 0;
11    char charIn;
12    while (1) {
13        charIn = _getch();
14        switch (charIn) {
15            case '\r': // Enter
16                buffer[bufferIndex] = '\0';
17                return buffer;
18            case '\x1B': // ESC
19                buffer[0] = '\0';
20                return buffer;
21            case '\b': // Backspace
22                if (bufferIndex > 0) {
23                    bufferIndex--;
24                    printf("\b \b");
25                }
26                break;
27            default:
28                if (isalpha(charIn)) {
29                    if (bufferIndex == bufferSize - 1)
30                        twicebuffer(buffer, &bufferSize);
31                    buffer[bufferIndex] = charIn;
32                    printf("%c", charIn);
33                    bufferIndex++;
34                }
35                break;
36        }
37    }
38}
39  
40void twiceBuffer(char* buffer, int* bufferSize) {
41    bufferSize *=2;
42    char* newBuffer = (char*)realloc(buffer, bufferSize * sizeof(char));
43    if (newBuffer == NULL) {
44        free(buffer);
45        printf("Memory reallocation failed.\n");
46        exit(1);
47    }
48    return;
49}
50  
51int main() {
52    char* userInput = readWideChars();
53    printf("\nUser Input: %s\n", userInput);
54    free(userInput);
55    return 0;
56}

Исправлено: Hance, 29.03.2024 08:47

1kvolt
Member
308/518 ответов, #5 в рейтинге
8 лет на iXBT, с марта 2017
Чаще пишет в "Общий" (27%)
Россия, Мурманск
Инфо Ответить
1kvolt Member
12 месяцев назад / 29 марта 2024 00:46
Hance

Не пойму, чего ты пытаешься добиться? Переписать МОЮ функцию, используя ЧатГПТ? Чтобы что?

Добавление от 29.03.2024 00:44:

Кстати, isalpha() не работает нормально с wchar_t. Пичалька, надо самому фильтр писать, если надо.

Добавление от 29.03.2024 00:46:

Hance
char* getUserWideString() {
    return readWideChars();
}


А вот это зачем? В чём глубинный смысл обернуть вызов функции в другую функцию?
areex
Member
1942/45695 ответов, #2 в рейтинге
23 года на iXBT, с февраля 2002
Чаще пишет в "Юмор" (50%)
Инфо Ответить
areex Member
12 месяцев назад / 29 марта 2024 01:04
1kvolt
И какие же именно проблемы обходятся дополнительными условиями? Можно немного конкретики?
Да вся твоя функция это обход очередной проблемы очередной проверкой.

Ты не учитываешь, что я любитель - я пишу что-то не для того, чтобы побырому срубить денег, а потому что мне это доставляет
Да ради бога, мне все равно уже эта тема надоела. Если тебе все нравиться, то и ок.

1) Тут нужно знать меру ИМХО. Да, разбитие на функции для конкретных задач - хорошая идея. Но ровно до тех пор, пока она не становится плохой идеей.

Эта фраза не имеет смысла.

Грят, сейчас в Европах вводят не менее, если не более, жёсткий контроль и социальный рейтинг.
1kvolt
Member
309/519 ответов, #5 в рейтинге
8 лет на iXBT, с марта 2017
Чаще пишет в "Общий" (27%)
Россия, Мурманск
Инфо Ответить
1kvolt Member
12 месяцев назад / 29 марта 2024 01:10
areex
Да вся твоя функция это обход очередной проблемы очередной проверкой.

И всё же? Какая проблема?

Эта фраза не имеет смысла.

Эта фраза имеет смысл.
Hance
Member
1587/35292 ответов, #1 в рейтинге
24 года на iXBT, с февраля 2001
108 фото на iXBT.photo
Чаще пишет в "Политика" (51%)
Ватикан
Инфо Ответить
Hance Member
12 месяцев назад / 29 марта 2024 09:29
1kvolt
Переписать МОЮ функцию, используя ЧатГПТ? Чтобы что?
Ты не понимаешь разницу?
Твоя функция создаёт высокую ментальную нагрузку когда её читаешь. Про метрики тебе уже сказали. По нарушение принципа единой ответственности тоже

Добавление от 29.03.2024 08:17:

Увеличение массива на 1 будет часто приводить к копированию его в свободное место. Тогда лучше выделять место с запасом.
Или использовать не malloc а new но это уже c++

Добавление от 29.03.2024 08:19:

1kvolt
isalpha() не работает нормально с wchar_t.
#include <wctype.h>
#include <locale.h>

setlocale(LC_ALL, ""); // Установка локали для корректной работы с широкими символами

Добавление от 29.03.2024 08:27:

1kvolt
char* 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
1943/45696 ответов, #2 в рейтинге
23 года на iXBT, с февраля 2002
Чаще пишет в "Юмор" (50%)
Инфо Ответить
areex Member
12 месяцев назад / 29 марта 2024 09:57
Cognitive Complexity
15 (все остальные языки)
25 (семейство C-языков)
Это чё? Численное доказательство, что все си-подобные языки говно?
1kvolt
Member
310/520 ответов, #5 в рейтинге
8 лет на iXBT, с марта 2017
Чаще пишет в "Общий" (27%)
Россия, Мурманск
Инфо Ответить
1kvolt Member
12 месяцев назад / 29 марта 2024 13:05
Hance
#include <wctype.h>
#include <locale.h>

setlocale(LC_ALL, ""); // Установка локали для корректной работы с широкими символами


Я знаю про локали и, конечно же, установил её как надо. Тем не менее isalpha() не обрабатывает корректно некоторые буквы русского алфавита. Во всяком случае, у меня так.

Твоя функция создаёт высокую ментальную нагрузку когда её читаешь. Про метрики тебе уже сказали. По нарушение принципа единой ответственности тоже

Не создаёт. И принцип не нарушает. Есть задача, функция её выполняет.
Что действительно создаёт высокую ментальную нагрузку, так это неуёмная страсть к разбиению всего и вся на мелкие функции без всякой надобности.
Про метрики я уже ответил.
Hance
Member
1588/35295 ответов, #1 в рейтинге
24 года на iXBT, с февраля 2001
108 фото на iXBT.photo
Чаще пишет в "Политика" (51%)
Ватикан
Инфо Ответить
Hance Member
12 месяцев назад / 29 марта 2024 14:56
1kvolt
тебе нельзя работать команде
код ревью не пройдешь попросту
1kvolt
Member
311/521 ответов, #5 в рейтинге
8 лет на iXBT, с марта 2017
Чаще пишет в "Общий" (27%)
Россия, Мурманск
Инфо Ответить
1kvolt Member
12 месяцев назад / 29 марта 2024 15:14
Hance
тебе нельзя работать команде
код ревью не пройдешь попросту


И кто же мне запретит (гипотетически) работать в команде?

Про код ревью я уже всё написал areex. Если код-ревью состоит из оценки "Это индусский спагетти-код, потому что ятакщетаю, и потому что я ниacилил два маллока и один маленький свитч", то невелика потеря, польза такого код-ревью равна нулю.
Hance
Member
1589/35297 ответов, #1 в рейтинге
24 года на iXBT, с февраля 2001
108 фото на iXBT.photo
Чаще пишет в "Политика" (51%)
Ватикан
Инфо Ответить
Hance Member
12 месяцев назад / 29 марта 2024 15:21
1kvolt
польза такого код-ревью равна нулю.
Тогда вычеркиваю
areex
Member
1944/45697 ответов, #2 в рейтинге
23 года на iXBT, с февраля 2002
Чаще пишет в "Юмор" (50%)
Инфо Ответить
areex Member
12 месяцев назад / 29 марта 2024 15:39
1kvolt
И кто же мне запретит (гипотетически) работать в команде?
Потому что, если ты работаешь в команде, то ты просто не сможешь физически выполнить мерж, пока не получишь одобрение ревьювера. Ты можешь считать пользу от ревью нулем, ты можешь считать свой код гениальным, а всех м......., но в конечный продукт твой код не попадет.
1kvolt
Member
312/522 ответов, #5 в рейтинге
8 лет на iXBT, с марта 2017
Чаще пишет в "Общий" (27%)
Россия, Мурманск
Инфо Ответить
1kvolt Member
12 месяцев назад / 29 марта 2024 16:12
areex
Потому что, если ты работаешь в команде, то ты просто не сможешь физически выполнить мерж, пока не получишь одобрение ревьювера. Ты можешь считать пользу от ревью нулем, ты можешь считать свой код гениальным, а всех м......., но в конечный продукт твой код не попадет.

Зависит от команды, ревьюера и разных других факторов. Правильно было бы всё же написать "Тебе нельзя работать в НАШЕЙ команде", а не обобщать на все команды вообще. То, что Hance вычеркнул меня из своей команды, отнюдь не означает, что я не найду другую. Или даже не создам свою с блэкджеком и шлюхами.
areex
Member
1945/45698 ответов, #2 в рейтинге
23 года на iXBT, с февраля 2002
Чаще пишет в "Юмор" (50%)
Инфо Ответить
areex Member
12 месяцев назад / 29 марта 2024 16:41
1kvolt
Зависит от команды, ревьюера и разных других факторов.
Разумеется. Если пойдешь к панде, там может даже кодревью не будешь проходить, я его там понял по крайней мере. Вопрос хорошо это или плохо каждый уже решает сам.
Ваш ответ:

Нет значка Нет значка Вот тут! Лампочка Восклицание Вопрос Класс! Улыбка Злость Огорчение Поговорим? Краснею Подмигивание Ругаю ОдобряюBIUdelSxsupxsuboffsp spoilerqurlimgvideo• list1. list1 codeprecenter-hr-rusQWE→ЙЦУ
файлыочистить
Ваше имя: Авторизуйтесь Предпросмотр В полную форму
вставить выделенную цитату в окно ответа
Если Вы считаете это сообщение ценным для дискуссии (не обязательно с ним соглашаться), Вы можете поблагодарить его автора, а также перечислить ему на счет некоторую сумму со своего баланса (при отзыве благодарности перечисленная сумма не будет вам возвращена).
Также вы можете оценить сообщение как неудачное.
В течение суток можно 20 раз оценить сообщения разных участников (купите Premium-аккаунт, либо оплачивайте оценки сверх лимита).
Если Вы считаете это сообщение ценным для дискуссии (не обязательно с ним соглашаться), Вы можете поблагодарить его автора, а также перечислить ему на счет некоторую сумму со своего баланса (при отзыве благодарности перечисленная сумма не будет вам возвращена).
Также вы можете оценить сообщение как неудачное.
В течение суток можно 20 раз оценить сообщения разных участников (купите Premium-аккаунт, либо оплачивайте оценки сверх лимита).
Страницы:Кликните, чтобы указать произвольную страницу123456666768далее