LINUX.ORG.RU

Разыскивается говнокод

 , , ,


0

4

Привет ЛОР!

Разыскивается безобразный код на С/С++!

Вот прям чтоб мозг взорвался при чтении!

Желательно, - под микроконтроллеры или embedded linux.

Приветствуются:

  • магические числа прямо в коде, без определения константы,
  • операции с правкой i внутри цикла for (i=0;…),
  • прямые (не через колбэк) вызовы функций верхнего уровня из нижнего,
  • переполняющиеся буфера,
  • программмирование копипастой,
  • китайский и индусский код,
  • любые другие антипаттерны!

Ответ на: комментарий от moonmadness

Наткнулся недавно на статью про «лучший вопрос (задачу) для собеседования» (как раз про C). По-моему, не самый плохой вариант.

Дядечка сам решил очень костыльно. Впендюрил mult в фунцию под названием add. С его, как он говорит, 25-минутной готовностью мог бы и получше постараться, время же было. К чему были все эти его дефирамбы про атомарность, локи и потоки? — вообще не ясно, в его решении оно совсем не пригождается. В общем, для подрочить соискателя пойдёт, не более.

For the authentic 2013 experience, let’s bypass the GitHub repo and untar a contemporary source distribution: curl -O https://memcached.org/files/memcached-1.4.15.tar.gz

Если кто-то всё же захочет себя проверить, то имейте в виду, что в той версии 2012-года, которую он колупает, нет большой части файлов, которые есть в современной. В новой версии есть прокси и LUA-интерфейс, на которые искомые функции тоже завязаны. А ещё дядя в задаче пишет, что на решение даётся 2 часа, а в решении — что 3.

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

И вообще не факт что этот пункт – антипаттерн.

Наоборот так и надо писать. Обвешивать всё классами и шаблонами – зло.

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

Наоборот так и надо писать. Обвешивать всё классами и шаблонами – зло.

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

dimgel ★★★★★
()
Ответ на: комментарий от shkolnick-kun

Буэ! Suckless на них нет!

Жесть! Про сустюмД я всякого наслышался, но чтоб такое...

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

Наоборот так и надо писать. Обвешивать всё классами и шаблонами – зло.

Этого парня ПОСЛУШАЙТЕ, он правильно сказал!

У кого в голове ТУМАН, тот и в код ТУМАНА напускает много …

Владимир

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

@X512 много раз Вас хвалил.
Почему бы профессионала и не поддержать?
А вот говнюкам всегда говорил кто они …

Что касается технологий программирования и какой код хороший, то у меня так

 -  не скажу, что tempate, классы и иные способы напускания ТУМАНА в код совсем НЕ НУЖНЫ.  
    Весьма редко можно и этот ТУМАН использовать.  
    CPU ныне весьма ШУСТРЫЕ и любой ГОВНОКОД на них работает хорошо.   
    Но абстрация над абстракцией, завернутая в абстракцию это НИ КАК не от профессионализма, а от "ГОРЕ ОТ УМА".  
    Хотя еще раз акцентирую на то, что способы создания объектов и работы с ними много и class один из них и ИМХО - НЕ МОЕ /достаточно struct .../.  

 -  Разработка API, использующего метаданные /компиляторы БЕЗРАБОТНЫ!/, по существу является иным от class и struct способе  
    создания объектов.   
    У меня имеется свой struct, но он лишь внешне похож на struct СИ, а по существу содержит метаданные согласно которых в e=run-time можно создать объект и работать с ним.  
    Например для каждое поле и объект могут иметь СВОЙСТВА любой сложности /семантика/.  
    Скажем ссылка является не Си-шной ссылкой, а ссылкой на любой тип сложного объекта /в т.ч. файлы, гиперссылки, ../  
    ...   

    Для чего об этом рассказал?  
    Лишь для того, чтобы обратить внимание на то, что ИМХО нынешние технологии разработки /как бы это сказать/ ЗАКОСТЕНЕВШИЕ В СПОСОБАХ РАБОТЫ С ДАННЫМИ И МНОГО БОЛЕЕ ..

    ИМХО отсюда и проекты и технологии разработки таковы какие они есть.
   
    - ...

    -  Тема весьма ОБШИРНА!

С Богом!

Владимир

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

. Типа отправить файл/ссылку и попросить найти недостатки.

Ты адекват вообще? Или цель найти специфического человека. Тебе бы сунули с https://www.govnokod.ru/ ссылку с просьбой найти недостатки в коде ты бы это как воспринял? Наверняка так же как и выражение твоей аватарки ))))))))))

LINUX-ORG-RU ★★★★★
()
Ответ на: комментарий от LINUX-ORG-RU

Я - да.

Если человек, которого я даже отсобеседовать не могу, т.к. работаю с ним «через прокладку», отказывается показать любой свой кусок кода, то мне нужны альтернативные способы оценки его клавификации:

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

Есть ещё варианты?

shkolnick-kun ★★★★★
() автор топика
Последнее исправление: shkolnick-kun (всего исправлений: 3)
Ответ на: комментарий от shkolnick-kun

… то мне нужны альтернативные способ проверки его клавификации

Сложная тема.
У меня так

ДУРАКА, видно ИЗДАЛЕКА ...

Тех кто по духу разработчик всегда было мало.
ВЫСОКОУМНЫХ всегда было МНОГО! …

Владимир

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

Ясненько тогда смотри код Фабриса Белларда хоть tcc хоть quickjs хоть что угодно мужик хоть и умный, упёртый упоротый, но код пишет крайне специфический. (Я давно давнным смотрел репу чесал то макушку то бровку то залысину) тяжело читать его код, порой очень если в первый раз.

LINUX-ORG-RU ★★★★★
()

Разыскивается говнокод

Шутка

Эврика!
Предложите собеседуему разработать именно ГОВНО КОД.
Если он это сделает УМЕЛО, то делайте ВЫВОДЫ! …

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

В треде Длинный синтаксис std::sort привели код

std::vector<int> v = {7, 1, 4, 0, -1};
std::ranges::sort(v);

Вай, Вай, Вай куда я попал!
Это лишь в двадцатом стандарте.

У меня так:

В метаданных любое поле и объект могут иметь несколько индексов /в т.ч. сложных/!  

Не ходи Владимир в Африку гулять! …



anonymous
()
Ответ на: комментарий от LINUX-ORG-RU

смотри код Фабриса Белларда

Говнокода особого я там не вижу. А вот переводы строки товарищ экономит и очень любит goto. С точки зрения читаемости, - следовало бы в некоторых местах выделить функции, а не городить goto not_obj;

Но это-вкусовщина.

Интересует именно говнокод: если человек сказал, что «вроде все норм», то ну его на фиг.

shkolnick-kun ★★★★★
() автор топика
Последнее исправление: shkolnick-kun (всего исправлений: 2)
Ответ на: комментарий от shkolnick-kun

Код некоторых драйверов гомно, по крайней мере когда-то видел. Написан китайцами в их стиле. Скопипасщены с других драйверов или примеров, не потерев и исправив названия и референсы.

xDShot ★★★★★
()

Разыскивается говнокод

Шутка

Трудная у вас работа …

от ты из-за одного Иночкина хлопочешь.
А у меня таких Иночкиных двести шестьдесят три.
Понятно говорю? - Понятно.
Компоту хочешь? - Нет.
Все.

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

Эшо …

Когда я был маленьким, я тоже использовал Си.
Нам тогда приходилось туго.
Спали в самодельных векторах, готовили код в Нортон редакторе, сами таскали воду, сами стирали.
Очень были неустроены в разработке.

А теперь? Оглянитесь вокруг. 
Какие вам стандарты понастроили!
Какие tepmlate, лямбды в невычисленных контекстах,  
cтроковые литералы как параметры шаблона ... разбили!
Дети, вы - хозяева C++.
Вы.

От вас что требуется, друзья мои?
Дис-ци-пли-на!

Владимир

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

Шутка

Человеку много ль надо -
Надо, чтобы Си был рядом,
Песня чтоб была на случай,
Случай любой.

Чтобы ресурсы освободить не забыли,
Чтобы следом письма плыли,
Чтобы в этих строчках кода были,
Не было бы ТУПНЯКА.

Ла-ла-ла-ла-ла,
Ла-ла-ла-ла-ла,
Ла-ла-ла-ла-ла-ла.
Ла-ла-ла,
Ла-ла-ла-ла-ла,
Ла-ла-ла-ла-ла,
Не было бы ТУПНЯКА.

Владимир

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

Тема весьма ОБШИРНА!

Сделано пока лишь малая часть от планируемого API.
Эта технология разработки будет бесплатна в бинарном проекте.
Исходные коды пока публиковать не буду.
Зачем мне корпорациям на ХАЛЯВУ дарить хороший API?
Если разработаю все запланированное API, то это будет уже новая ТЕХНОЛОГИЯ! Да и денег мне от них тоже НЕ НАДО! …

PS: Разработка выполнена лишь процентов на десять … /даже нынешний API более функционален чем стандарты C++/

Владимир

anonymous
()

Поищи на каких-нибудь форумах по программированию, куда студенты выкладывают свои шедевры с просьбой пофиксить. Вот отличный образец https://www.sql.ru/forum/1269897/delaem-arhivator



int fjkn,g=0,bn,gl=0;
int number;
string bin,bytesrd;
char holder=' ';
char holder2='\0';
char getch,getchr;
char hjhi;
char getchrt1,getchrt2,getchrt3,getchrt5,getchrt6,getchrt7,getchrt8,getchrt9,getchrt10;
char getchrt11,getchrt12,getchrt14,getchrt15,getchrt16,getchrt17,getchrt19,getchrt20;
char getchrt21,getchrt22,getchrt24,getchrt25,getchrt26,getchrt27,getchrt29,getchrt30;
char getchrt31,getchrt32,getchrt34,getchrt35,getchrt36,getchrt37,getchrt39,getchrt40;
char getchrt41,getchrt42,getchrt44,getchrt45,getchrt46,getchrt47;
int r, l;
int j=0;
int bnhj=1;
int dfgh=0;

stringstream ss, ssh, sshl;
char buffer[5];
string buffert1,buffertj,buffert2,buffert3,buffert4,buffert5,buffert6,buffert7,buffert8,buffert9,buffert10,buffert11,buffertyu;
string getchrvbn1,getchrvbn2,getchrvbn3,getchrvbn4,getchrvbn5,getchrvbn6,getchrvbn7,getchrvbn8,getchrvbn9,getchrvbn10;
ifstream readfilet("times.txt");
              readfilet>>fjkn;

		  ifstream readfiletg("times.txt");
              readfiletg>>number;
		  number=number-1;   
	
while(number!=0)
{
holder=number%2+'0';
bin=holder+bin;
number/=2;
}
SZT ★★★★★
()
Последнее исправление: SZT (всего исправлений: 1)

Из моего старого комментария о musl (pthreads, С11 threads, musl и зависимые от glibc либы (комментарий)):

			if (0) {
		case 'o':
			a = fmt_o(arg.i, z);
			if ((fl&ALT_FORM) && p<z-a+1) p=z-a+1;
			} if (0) {
		case 'd': case 'i':
    unsigned char *d = dest;
    const unsigned char *s = src;
    size_t *wd, k;
    const size_t *ws;

    c = (unsigned char)c;
    if (((uintptr_t)s & ALIGN) == ((uintptr_t)d & ALIGN)) {
        for (; ((uintptr_t)s & ALIGN) && n && (*d=*s)!=c; n--, s++, d++);
        if ((uintptr_t)s & ALIGN) goto tail;
        size_t k = ONES * c;
        wd=(void *)d; ws=(const void *)s;
        for (; n>=sizeof(size_t) && !HASZERO(*ws^k);
             n-=sizeof(size_t), ws++, wd++) *wd = *ws;
        d=(void *)wd; s=(const void *)ws;
    }
    for (; n && (*d=*s)!=c; n--, s++, d++);
tail:
    if (*s==c) return d+1;
    return 0;

Там такого хватает. Второй кусок эта версия memccpy() с багом, который потом исправили (хз как им это вообще удалось).

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

Поищи на каких-нибудь форумах по программированию, куда студенты выкладывают свои шедевры с просьбой пофиксить.

Или курсы по программированию, где предлагают за 1-24 часа познать дзен крестов.

Баян конечно, но чё-то вспомнилось - «Папа может в си».

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

Откопал всё же несколько позже, но таки да, запомнилось. С тех пор более противоестественного кода не встречал.

PhysShell ★★
()

@shkolnick-kun, а ведь профессионалами не рождаются …
Хотя конечно речь не о БАОБАБАХ …

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

Высокоумных тоже полно.

Здесь все просто - обсуждают те вопросы в которых не разбираются.
А результат получается - НЕ ОЧЕНЬ.

У меня строгий контроль по отношению к себе и в те темы где БАОБАБ не публикую посты.

Не к тому об этом сказал, что все мои посты ПРАВИЛЬНЫЕ, но хоть говорю о том, в чем разбираюсь …

Владимир

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