LINUX.ORG.RU

Тебе и после всех этих скобочек непонятно?

t184256 ★★★★★
()

Говнокод — это когда что-то не оптимально написано по производительности, плохо читаемо, структурировано и тому подобное…

Как-то не тянет.

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

раскройте скобки

Компилятор раскроет. Зато так понятнее что проверяется. Претензия может быть только к волшебной константе.

no-such-file ★★★★★
()
Ответ на: комментарий от fornlr

10 тоже магическая. Из этого кода не ясно что это такое, более того, она используется в двух местах. Что будет если надо будет поменять в какой-то момент 10 на 11?

Reset ★★★★★
()
Ответ на: комментарий от no-such-file

Компилятор раскроет.

x86-64 clang 12.0.1

((i+1) < 10)
>>>>
       mov     eax, dword ptr [i]
       add     eax, 1
       cmp     eax, 10
       jge     .LBB0_8
(i < 9)
>>>>
       cmp     dword ptr [i], 9
       jge     .LBB0_8

x86-64 gcc 11.2 в обоих вариантах раскрывает в

>>>>
        mov     eax, DWORD PTR i[rip]
        cmp     eax, 8
        jg      .L4

Или gcc умнее, или clang честнее. )

Toxo2 ★★★★
()
Ответ на: комментарий от no-such-file

Компилятор раскроет

Не факт.

Зато так понятнее что проверяется.

Равносильно.

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

Из этого кода не ясно что это такое

Вообще-то ясно. Глаз, конечно, режет, но это как раз случай, когда константа отлична от единицы, но, при этом, не волшебная.

Что будет если надо будет поменять в какой-то момент 10 на 11

Надо будет просить ящериков, поработивших Землю, не кушать тебя.

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

Количество цифр в повсеместно используемой десятичной системе счисления. Код-то элементарный «Если воркспейс не имеет имени или шортката, сделать шорткатом цифру номера воркспейса». Для воркспейсов с номером больше 9 свободных цифр уже не остаётся, отсюда и сравнение.

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

Без опций оптимизации?

С -O0, конечно.

На godbolt.org смотрел из любопытства. Даже не знал, что gcc действительно таким занимается без спросу. Интересно.

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

Код возможно элементарный, если в него вникнуть. Нормальный программист сделал бы константу DIGITS

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

надо бы как у clang

Так там на godbolt.org все компиляторы x86-64, какие перебирал, делают или add или inc. Т.е. ровно то, что написал программист при -O0. Один только gcc считает себя умнее всех, насколько я понял.

Toxo2 ★★★★
()

аналогичное место чуть выше

А кто сказал, что оно аналогичное? Это видел?

if ((i < wsn_items) && wsn[i] && *(wsn[i]))

Korchevatel ★★★★★
()

Код рабочий хоть и кривоц. Если ехать то сойдет, если поддерживать то перепесать.

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

То есть ещё более непохоже на оригинал.

hummer
() автор топика
Ответ на: комментарий от Toxo2

Один только gcc считает себя умнее всех, насколько я понял.

-O0 на GCC не отключает полностью оптимизации. Она похоже вообще не отключается на GCC полностью.

EXL ★★★★★
()

Обычный код. Ну слегка пованивает, но это норма. Пара кривых строк это вообще ни о чем.

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

Пока не объяснили не понял. Я же говорю, что для понимания надо погружаться и магическая константа не способствует быстрому пониманию.

Reset ★★★★★
()

Типичная сишная портянка. Это всё в пределах нормы. Было бы ревью, то могли обосрать и заставить переписать.

Совет: гитхаб умеет в ссылки на конкретную строчку. Кликни по номеру строки и скопируй новый url из адресной строки браузера.

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

Скорее ты просто ты даже не читал ничего, просто прочёл пост ТС и всё =) Погружаться там не надо достаточно просто глянуть код секунд 5.

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

Разговор был про магические числа про 10 конкретно. А nws строка в которой идёт поиск _ и даже написано сразу ниже In the 1st 10, there is a name, but it doesn't have _ исходя из этого wsn workspace name или workspace number что почти одно и тоже учитывая что именуются они числом, а это предыдущее имя, в котором есть или нет маркера _. Это нет, не за 5 секунд, а за 15~20 где то, ну или суть больше так как надо было снова перейти по ссылке и на всякий случай просканировать глазами функцию целиком ,благо она маленькая.

LINUX-ORG-RU ★★★★★
()
Последнее исправление: LINUX-ORG-RU (всего исправлений: 1)
Ответ на: комментарий от Toxo2
      add     eax, 1
      cmp     eax, 10

Не ну это позорище. Просто ЛОЛ.

PS: давайте ещё циклы в обратную сторону крутить, как в дидовские времена. Судя по всему для шланга актуально.

no-such-file ★★★★★
()
Последнее исправление: no-such-file (всего исправлений: 1)
Ответ на: комментарий от LINUX-ORG-RU

Разговор был про магические числа про 10 конкретно.

Которое непосредственно связано с nws.

А nws строка в которой идёт поиск _ и даже написано сразу ниже In the 1st 10, there is a name, but it doesn’t have _ исходя из этого wsn workspace name или workspace number что почти одно и тоже учитывая что именуются они числом, а это предыдущее имя, в котором есть или нет маркера _. Это нет, не за 5 секунд, а за 15~20 где то, ну или суть больше так как надо было снова перейти по ссылке и на всякий случай просканировать глазами функцию целиком. ,благо она маленькая.

Написано над целой строкой кода, в которой ещё надо понять к чему эти «1st 10» относятся. Короче, совершенно нечитабельный код и так почти любой код на C/C++. Я понимаю, когда в 70-е и 80-е были маленькие мониторы, памяти было мало и длина переменных была ограничена. Но на дворе третье десятилетие 21-го века, компьютеры имеют десятки, а иногда и сотни гигабайт памяти, широкие 4K и 8K мониторы стали обыденностью и у разработчиков их обычно несколько. Но сишный код продолжает быть убогим и нечитабельным.

Я как-то заглянул в исходники Arj и UnArj. Это просто какая-то обфусцированная каша.

hummer
() автор топика
Последнее исправление: hummer (всего исправлений: 1)
Ответ на: комментарий от no-such-file

это позорище

Зато ровно как программист просил. На мой взгляд - это честно.

-------------

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

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

Дружище, это код XFCE. Первая буковка X как бы нам намекает о том, что там сишный код будет адом, как и во многих X-проектах, вроде того же X.Org

Банку пива тебе в руки, дебаггер в зубы и вперёд, выяснять что же такое 10, nws и за каким хером там идёт такая дрочка на _.

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

многократных вызовов функций и арифметических операций

Смотря каких операций. Если тебе надо i+1 и i+2 то дешевле посчитать т.к. оно уже загружено в регистр, чем грузить 3 разные переменные.

На мой взгляд - это честно

Суть в том, что он 2 операции в одну не осилил объединить, даже с константой. Всё равно что считать 2+2 во время выполнения.

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

Не ну это позорище. Просто ЛОЛ.

PS: давайте ещё циклы в обратную сторону крутить, как в дидовские времена. Судя по всему для шланга актуально.

Это -O0, при котором Clang честно отключает подобную оптимизацию. А вот зачем GCC при -O0 что-то там пытается наоптимизировать – большой вопрос.

EXL ★★★★★
()
Ответ на: комментарий от no-such-file

Нормально. Время компиляции — деньги.

Что сказал, то получил.

fornlr ★★★★★
()

В лиспе очень много скобочек, говорили они.

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