Это сеньорский код?
От: StandAlone  
Дата: 20.12.21 19:36
Оценка: 9 (1) -1
Возможно, тема для КСВ, если да прошу перенести.
Для начала создам здесь.
Недавно возникло некоторое недопонимание во взаимодействии на проекте. Код естественно под НДА, поэтому показываю очень близкий по стилю и смыслу.

Описание задачи:

Scales are a convenient abstraction for a fundamental task in visualization: mapping a dimension of abstract data to a visual representation. Although most often used for position-encoding quantitative data, such as mapping a measurement in meters to a position in pixels for dots in a scatterplot, scales can represent virtually any visual encoding, such as diverging colors, stroke widths, or symbol size. Scales can also be used with virtually any type of data, such as named categorical data or discrete data that requires sensible breaks.

For continuous quantitative data, you typically want a linear scale. (For time series data, a time scale.) If the distribution calls for it, consider transforming data using a power or log scale. A quantize scale may aid differentiation by rounding continuous data to a fixed set of discrete values; similarly, a quantile scale computes quantiles from a sample population, and a threshold scale allows you to specify arbitrary breaks in continuous data.

For discrete ordinal (ordered) or categorical (unordered) data, an ordinal scale specifies an explicit mapping from a set of data values to a corresponding set of visual attributes (such as colors). The related band and point scales are useful for position-encoding ordinal data, such as bars in a bar chart or dots in an categorical scatterplot.

Все довольно просто, никакого рокетсайенс.
Реализация
https://github.com/d3/d3-scale/blob/9fe496e6d708bf30435c15f03ab9e5ae994ea7be/src/continuous.js

function scale(x) {
    return (output || (output = piecewise(domain.map(transform), range, interpolate)))(+transform(clamp(x)));
  }

  scale.invert = function(y) {
    return clamp(+transform.invert((input || (input = piecewise(range, domain.map(transform), interpolateNumber)))(y)));
  };


Код достался мне на поддержку. Автор доступен, но по поводу своего творения не может сказать ни слова, кроме общих предположений.
Я попытался выяснить, как такое вообще попало в мастер, в ответ услышал — "Этот человек выше чем сеньор, в подробном ревью не нуждается".
"Сеньор всех сеньоров"(с)habr.
Моя точка зрения — написать в одну строку с кучей побочных эффектов способен любой не острый стажер, а вот решить сложное просто, понятно и поддерживаемо как раз способен только опытный разработчик. Встретил полное непонимание.
От людей, которые модифицировали внешние переменные в теле Array.some(), игнорируя результат, и меняли элементы массива в Array.forEach(). Они же в условном button1Click лезли в базу(диспатчили редаксовские экшены) или на сервак прямым Http запросом, в результате код презентационных компонент содержит по 3-4-5-10 тысяч строк кода в попытке охватить треть логики всего UI одним компонентом.
Попытки объяснить, что это нежелательно, про LSP, трехзвенку или SOLID также встречаются полным непониманием.
Люди эти все, конечно, тимлиды и сеньоры, или даже сеньоры всех сеньоров. По происхождению, конечно, из html-программистов, тестировщиков и прочих активных пользователей хабра типа войтивайти. Возможно эти все части паззла как-то связаны.
Что скажет общество?
Как по вашему мнению, такая ситуация в сфере разработки ПО теперь нормальна?
Или это только во фронтенде?
Re: Это сеньорский код?
От: CreatorCray  
Дата: 20.12.21 19:53
Оценка:
Здравствуйте, StandAlone, Вы писали:

SA>Реализация

SA>https://github.com/d3/d3-scale/blob/9fe496e6d708bf30435c15f03ab9e5ae994ea7be/src/continuous.js

SA>
SA>function scale(x) {
SA>    return (output || (output = piecewise(domain.map(transform), range, interpolate)))(+transform(clamp(x)));
SA>  }

SA>  scale.invert = function(y) {
SA>    return clamp(+transform.invert((input || (input = piecewise(range, domain.map(transform), interpolateNumber)))(y)));
SA>  };
SA>


Вай какой дурдом!!!

SA>Автор доступен, но по поводу своего творения не может сказать ни слова, кроме общих предположений.


Не удивительно.

SA>Я попытался выяснить, как такое вообще попало в мастер, в ответ услышал — "Этот человек выше чем сеньор, в подробном ревью не нуждается".

SA>"Сеньор всех сеньоров"(с)habr.

Не, гнать нахрен на мороз таких пейсак. Это не senior, это скорее mumbling elderly.

SA>Моя точка зрения — написать в одну строку с кучей побочных эффектов способен любой не острый стажер, а вот решить сложное просто, понятно и поддерживаемо как раз способен только опытный разработчик.


Совершенно верно.

SA>Как по вашему мнению, такая ситуация в сфере разработки ПО теперь нормальна?

SA>Или это только во фронтенде?

Идиоты нынче лезут везде, увы.
... << RSDN@Home 1.3.110 alpha 5 rev. 62>>
Re: Это сеньорский код?
От: Osaka  
Дата: 20.12.21 20:10
Оценка: +2 :))) :)
SA>Попытки объяснить, что это нежелательно, про LSP, трехзвенку или SOLID также встречаются полным непониманием.
У тебя недостаточный ранг в стае, чтобы спорить с самим Сеньором. Поэтому все твои наукообразные слова — наглые необоснованные претензии на более высокий ранг, чем тебе разрешили, и ничего более.
SA>Люди эти все, конечно, тимлиды и сеньоры, или даже сеньоры всех сеньоров. По происхождению, конечно, из html-программистов, тестировщиков и прочих активных пользователей хабра типа войтивайти. Возможно эти все части паззла как-то связаны.
SA>Что скажет общество?
SA>Как по вашему мнению, такая ситуация в сфере разработки ПО теперь нормальна?
SA>Или это только во фронтенде?
Это в любой кастовой системе. "Сначала поделай как у сеньоров 'принято', и заслужи". (Если засчитают )
Отредактировано 22.12.2021 12:36 Osaka . Предыдущая версия .
Re: Это сеньорский код?
От: ononim  
Дата: 20.12.21 20:33
Оценка: :)

Когда-то жил мастер-программист, который писал неструктурированные программы. Ученик, пытаясь подражать ему, тоже стал писать неструктурированные программы. Когда ученик просил мастера оценить его труд, тот раскритиковал его за написание неструктурированных программ: "Что подходит мастеру, не подходит ученику. Ты должен постичь Дао, прежде чем переступить через структуру"

а вообще это же джаваскрипт, там так и надо
Как много веселых ребят, и все делают велосипед...
Re[2]: Это сеньорский код?
От: bnk СССР http://unmanagedvisio.com/
Дата: 20.12.21 20:48
Оценка: +2
Здравствуйте, CreatorCray, Вы писали:

SA>>https://github.com/d3/d3-scale/blob/9fe496e6d708bf30435c15f03ab9e5ae994ea7be/src/continuous.js

SA>>
SA>>function scale(x) {
SA>> return (output || (output = piecewise(domain.map(transform), range, interpolate)))(+transform(clamp(x)));
SA>> }

CC>Вай какой дурдом!!!


И все же, это код вроде как от создателя небезызвестной D3 и кучи других известных штук?
IMHO такое не подходит для работы в команде, а если он его один видит, почему нет, если у него мозг так устроен
А может если ты привык к такому стилю, такое даже нормально читается и понимается.
Отредактировано 20.12.2021 20:52 bnk . Предыдущая версия . Еще …
Отредактировано 20.12.2021 20:51 bnk . Предыдущая версия .
Re: Это сеньорский код?
От: #John Европа https://github.com/ichensky
Дата: 20.12.21 21:05
Оценка: 3 (1)
Здравствуйте, StandAlone, Вы писали:

SA>Как по вашему мнению, такая ситуация в сфере разработки ПО теперь нормальна?

Обычный код написанный без код-ревью, если пишешь скрипт который решит проблему тут и сейчас какая разница как он написан.
На проекте где налажено код-ревью такой код не пропустят.
Підтримати Україну у боротьбі з країною-терористом.

https://prytulafoundation.org/
https://u24.gov.ua/

Слава Збройним Силам України!!! Героям слава!!!
Re[3]: Это сеньорский код?
От: CreatorCray  
Дата: 20.12.21 22:58
Оценка:
Здравствуйте, bnk, Вы писали:

bnk>И все же, это код вроде как от создателя небезызвестной D3 и кучи других известных штук?

Да пофигу от кого на самом деле.

bnk>IMHO такое не подходит для работы в команде

Не подходит, да.

bnk>А может если ты привык к такому стилю, такое даже нормально читается и понимается.

Ну как бы уже было сказано что даже аффтар сего гм... кода не может внятно сказать "Щито это за хня?!" (tm)
Неудивительно что остальные смотрят на сие как Адептус Механикус на вооружение орков.
... << RSDN@Home 1.3.110 alpha 5 rev. 62>>
Re[2]: Это сеньорский код?
От: StandAlone  
Дата: 20.12.21 23:13
Оценка: +1 :)
Здравствуйте, CreatorCray, Вы писали:

CC>Вай какой дурдом!!!


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

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

CC>Идиоты нынче лезут везде, увы.


Цель создания топика именно здесь была попытка выяснить обстановку по миру. У меня была идея, дескать все это может быть связано с оттоком специалистов, в итоге бизнес призвал под знамена всех способных держать клавиатуру хоть как-то выполнить хотелки кастомера.
Но вот смотрю медиум, стековерфлоу, реддит... Там в посвященных фронтенду разделах прослеживается подобное. В крупных FE OS репозиториях от крупнейших вендоров тоже.
Что происходит? Специалисты не пишут ни статей, ни заметок на SO, ни в репы опенсорс?
Или базовые принципы инженерного дизайна уже девальвировались и устарели?
Re: Это сеньорский код?
От: kaa.python Ниоткуда РСДН профессионально мёртв и завален ватой.
Дата: 21.12.21 01:07
Оценка:
Здравствуйте, StandAlone, Вы писали:

SA>Код достался мне на поддержку. Автор доступен, но по поводу своего творения не может сказать ни слова, кроме общих предположений.


Говницо, да...

SA>Я попытался выяснить, как такое вообще попало в мастер, в ответ услышал — "Этот человек выше чем сеньор, в подробном ревью не нуждается".

SA>"Сеньор всех сеньоров"(с)habr.

Если зайти в профайл автора на GitHub, там, собственно ответ на все вопросы:

Building a better computational medium. Founder @observablehq. Creator @d3. Former @nytgraphics. Pronounced BOSS-tock.


SA>Попытки объяснить, что это нежелательно, про LSP, трехзвенку или SOLID также встречаются полным непониманием.

SA>Люди эти все, конечно, тимлиды и сеньоры, или даже сеньоры всех сеньоров. По происхождению, конечно, из html-программистов, тестировщиков и прочих активных пользователей хабра типа войтивайти. Возможно эти все части паззла как-то связаны.
SA>Что скажет общество?

Почему ты сам до сих пор там?

SA>Как по вашему мнению, такая ситуация в сфере разработки ПО теперь нормальна?


Нет, это не нормальная ситуация. Нормальная ситуация это когда никто не может залить изменения в мастер, пока код не будет одобрен 2-3 другими разработчиками.

SA>Или это только во фронтенде?


Мне кажется, это часть проблемы. Фронтэнд штука довольно специфичная тем, что за ней не стоит каких-то базовых знаний (теория баз данных, теория криптографии, теория распределенных систем, там даже теория алгоритмов особо и не нужна) и каждый год очередной "прорыв" который всем срочно надо внедрить.
Re: Это сеньорский код?
От: Умака Кумакаки Ниоткуда  
Дата: 21.12.21 03:45
Оценка: +1 :))
Здравствуйте, StandAlone, Вы писали:


SA>Реализация

SA>https://github.com/d3/d3-scale/blob/9fe496e6d708bf30435c15f03ab9e5ae994ea7be/src/continuous.js

SA>[php]

SA>function scale(x) {
SA> return (output || (output = piecewise(domain.map(transform), range, interpolate)))(+transform(clamp(x)));
SA> }

я дико извиняюсь, но что не так с этим кодом? Ну, т.е. какой фрагмент конкретно непонятен и вызывает затруднение?
нормально делай — нормально будет
Re: Это сеньорский код?
От: DiPaolo Россия  
Дата: 21.12.21 04:56
Оценка: 21 (4) +5
SA>Все довольно просто, никакого рокетсайенс.
SA>Реализация
SA>https://github.com/d3/d3-scale/blob/9fe496e6d708bf30435c15f03ab9e5ae994ea7be/src/continuous.js

Именно этот код — да, крутого сеньора или даже выше. Для этого надо пойти посмотреть на весь файл целиком, а также понять контекст проекта. А суть там такая: это специальная узкоспециализированная либа-числодробилка (с поправкой на JS). Да, есть ряд областей, где важен именно такой "суровый" код. Человеку со стороны покажется какой-то херней, но человеку в теме все будет понятно. Ну или, при необходимости, новый человек, взявший на поддержку, сможет через какое-то время разобраться.

Тут надо вот что отметить:
— код всего файла выполнен в одном стиле; аккуратный, небольшой по размеру; есть комментарии
— при этом важно: код изменялся буквально 4 раза за 5 лет (https://github.com/d3/d3-scale/commits/9fe496e6d708bf30435c15f03ab9e5ae994ea7be/src/continuous.js); то еть это как раз код из разряда "кака-то базовая хрень, которую написал один раз и крайне редко туда лезешь"
— ко всем проекту есть развернутое ридми с комментариями, туториалами, примерами. Крайне все понятно. НЕ каждый сеньор сможет такое оформить. К вопросу о сеньорстве
— если взглянуть на профиль чувака — он, блин, создал d3 и куча либ вокруг. Думаю многие фронтендеры встречались с этой либой. Крайне популярная и известная штука. То есть он не только код может писать, но и: сопровождать его описанием, документацией, настраивать CI, всю инфраструктуру обвязку, а также находить и координировать людей вокруг этого.

В коде по перекладыванию JSON в базу и обратно, там да — такой код плохо бы смотрелся. Но важен контекст проекта. Для примера: есть еще ряд областей, где код пишут в стиле, чтобы было быстрее или короче текст. Кому надо — поймет. И ничего в этом страшного нет. Пишут такой код вполне себе крутые спецы. Вот например:

static ALWAYS_INLINE void deblock_edge_luma_c( pixel *pix, intptr_t xstride, int alpha, int beta, int8_t tc0 )
{
    int p2 = pix[-3*xstride];
    int p1 = pix[-2*xstride];
    int p0 = pix[-1*xstride];
    int q0 = pix[ 0*xstride];
    int q1 = pix[ 1*xstride];
    int q2 = pix[ 2*xstride];

    if( abs( p0 - q0 ) < alpha && abs( p1 - p0 ) < beta && abs( q1 - q0 ) < beta )
    {
        int tc = tc0;
        int delta;
        if( abs( p2 - p0 ) < beta )
        {
            if( tc0 )
                pix[-2*xstride] = p1 + x264_clip3( (( p2 + ((p0 + q0 + 1) >> 1)) >> 1) - p1, -tc0, tc0 );
            tc++;
        }
        if( abs( q2 - q0 ) < beta )
        {
            if( tc0 )
                pix[ 1*xstride] = q1 + x264_clip3( (( q2 + ((p0 + q0 + 1) >> 1)) >> 1) - q1, -tc0, tc0 );
            tc++;
        }

        delta = x264_clip3( (((q0 - p0 ) * 4) + (p1 - q1) + 4) >> 3, -tc, tc );
        pix[-1*xstride] = x264_clip_pixel( p0 + delta );    /* p0' */
        pix[ 0*xstride] = x264_clip_pixel( q0 - delta );    /* q0' */
    }
}


Вполне аккуратный хороший код. Да, человеку, который впервые его видит и ваще не в теме, будет ничего непонятно. Но ему и не править этот код. А при необходимости — разберется.

Более того, бывает вообще вот такой код:
;-----------------------------------------------------------------------------
; void add8x8_idct8( uint8_t *p_dst, int16_t dct[8][8] )
;-----------------------------------------------------------------------------
%macro ADD8x8_IDCT8 0
cglobal add8x8_idct8, 2,2,11
    add r0, 4*FDEC_STRIDE
    pxor m7, m7
    TAIL_CALL .skip_prologue, 0
cglobal_label .skip_prologue
    SWAP 7, 9
    movdqa  m0, [r1+0x00]
    movdqa  m1, [r1+0x10]
    movdqa  m2, [r1+0x20]
    movdqa  m3, [r1+0x30]
    movdqa  m4, [r1+0x40]
    movdqa  m5, [r1+0x50]
    movdqa  m6, [r1+0x60]
    movdqa  m7, [r1+0x70]
    IDCT8_1D      w,0,1,2,3,4,5,6,7,8,10
    TRANSPOSE8x8W 0,1,2,3,4,5,6,7,8
    paddw         m0, [pw_32] ; rounding for the >>6 at the end
    IDCT8_1D      w,0,1,2,3,4,5,6,7,8,10
    DIFFx2 m0, m1, m8, m9, [r0-4*FDEC_STRIDE], [r0-3*FDEC_STRIDE]
    DIFFx2 m2, m3, m8, m9, [r0-2*FDEC_STRIDE], [r0-1*FDEC_STRIDE]
    DIFFx2 m4, m5, m8, m9, [r0+0*FDEC_STRIDE], [r0+1*FDEC_STRIDE]
    DIFFx2 m6, m7, m8, m9, [r0+2*FDEC_STRIDE], [r0+3*FDEC_STRIDE]
    STORE_IDCT m1, m3, m5, m7
    ret
%endmacro ; ADD8x8_IDCT8


Тоже пишут, поддерживают и работают с ним весьма неглупые люди. Просто тут контекст другой: числодробительный код, для поддержки которого надо глубже понимать тематику.
Патриот здравого смысла
Re: Это сеньорский код?
От: Пофигист Россия  
Дата: 21.12.21 06:03
Оценка: :))) :)
Здравствуйте, StandAlone, Вы писали:

SA>
SA>function scale(x) {
SA>    return (output || (output = piecewise(domain.map(transform), range, interpolate)))(+transform(clamp(x)));
SA>  }

SA>  scale.invert = function(y) {
SA>    return clamp(+transform.invert((input || (input = piecewise(range, domain.map(transform), interpolateNumber)))(y)));
SA>  };
SA>

И что не так? Шикарный код, нифига непонятно. Сразу ясно, что писал крутой спец.
Re[2]: Это сеньорский код?
От: CreatorCray  
Дата: 21.12.21 07:40
Оценка:
Здравствуйте, kaa.python, Вы писали:

KP>Если зайти в профайл автора на GitHub, там, собственно ответ на все вопросы:

KP>Pronounced BOSS-tock.[/q]
Это он объясняет как произносится его фамилия, зовут его Mike Bostock
... << RSDN@Home 1.3.110 alpha 5 rev. 62>>
Re[2]: Это сеньорский код?
От: CreatorCray  
Дата: 21.12.21 07:40
Оценка: 19 (2) +5
Здравствуйте, DiPaolo, Вы писали:

DP>Именно этот код — да, крутого сеньора или даже выше.

Люди с опытом стараются писать просто, тут же местами налеплено в кучу.
Если приходится писать сложно то пишут коммент, что за нафиг и почему так.
По коммитам кстати видно что написано было изначально более просто и наглядно, это потом уже автор "улучшил".
Впрочем да, на фоне другого js что я видел этот довольно таки чистый.

DP>- код всего файла выполнен в одном стиле;

Да? А почему функция bimap в одном стиле, под ней polymap — в другом?

DP>есть комментарии

Ровно один
В других файлах вообще никаких нету.

DP> при этом важно: код изменялся буквально 4 раза за 5 лет

Да вроде как больше раз менялся: https://github.com/d3/d3-scale/commits/main/src/continuous.js

DP>Пишут такой код вполне себе крутые спецы. Вот например:

Круглые скобки странновато расставляет но в целом ок.

DP>Более того, бывает вообще вот такой код:

А вот этому не помешает нормальное оформление

DP>Просто тут контекст другой: числодробительный код, для поддержки которого надо глубже понимать тематику.

Это всё лирика.
Но вот для куска, который привёл ТС, было бы неплохо хотя бы написать комментарий WTF там и зачем.
Ну или разбить это всё на несколько строк, ибо много сущностей в одной строке ухудшают читаемость кода.
... << RSDN@Home 1.3.110 alpha 5 rev. 62>>
Re[3]: Это сеньорский код?
От: bnk СССР http://unmanagedvisio.com/
Дата: 21.12.21 09:13
Оценка: :)
Здравствуйте, CreatorCray, Вы писали:

DP>>Именно этот код — да, крутого сеньора или даже выше.


CC>Люди с опытом стараются писать просто, тут же местами налеплено в кучу.

CC>Если приходится писать сложно то пишут коммент, что за нафиг и почему так.
CC>По коммитам кстати видно что написано было изначально более просто и наглядно, это потом уже автор "улучшил".
CC>Впрочем да, на фоне другого js что я видел этот довольно таки чистый.

Здесь просто печать индустрии жаваскрипта как мне кажется. Трудное детство, деревянные игрушки.
Чувак сделал работу за компилятор.

DP>>Просто тут контекст другой: числодробительный код, для поддержки которого надо глубже понимать тематику.

CC>Это всё лирика.
CC>Но вот для куска, который привёл ТС, было бы неплохо хотя бы написать комментарий WTF там и зачем.
CC>Ну или разбить это всё на несколько строк, ибо много сущностей в одной строке ухудшают читаемость кода.

Да чего тушеваться, код конкретно нечитаемый, невзирая на лица.
Если автор просидел на этой либе последние 10 лет, это его все равно не оправдывает, IMHO можно было более человечный код написать.

Впрочем, вся D3 в стиле юниксовых команд 80-х, с дурацкими сокращениями типа x.classed() ака "class edit".
Такой уж склад мышления у некоторых.
Отредактировано 21.12.2021 9:18 bnk . Предыдущая версия .
Re[2]: Это сеньорский код?
От: Skorodum Россия  
Дата: 21.12.21 09:37
Оценка:
Здравствуйте, Osaka, Вы писали:

O>Это в любой кастовой системе. "Сначала поделай как у сеньоров 'принято', и заслужи". (Если засчитают

Или смени "стаю"
Re[2]: Это сеньорский код?
От: Skorodum Россия  
Дата: 21.12.21 09:40
Оценка:
Здравствуйте, kaa.python, Вы писали:

KP>Мне кажется, это часть проблемы. Фронтэнд штука довольно специфичная тем, что за ней не стоит каких-то базовых знаний (теория баз данных, теория криптографии, теория распределенных систем, там даже теория алгоритмов особо и не нужна) и каждый год очередной "прорыв" который всем срочно надо внедрить.

Есть свежий местный пример: Артемка недавно восхищался реализацией обычной state machine в какм-то веб фреймворке и утверждал что это мега-вау прорыв.
Re[4]: Это сеньорский код?
От: CreatorCray  
Дата: 21.12.21 10:42
Оценка:
Здравствуйте, bnk, Вы писали:

CC>>Но вот для куска, который привёл ТС, было бы неплохо хотя бы написать комментарий WTF там и зачем.

CC>>Ну или разбить это всё на несколько строк, ибо много сущностей в одной строке ухудшают читаемость кода.

bnk>Да чего тушеваться, код конкретно нечитаемый, невзирая на лица.


Ну я в общем то сразу и сказал что там дурдом
Автор: CreatorCray
Дата: 20.12.21

Сейчас уже обсуждаем что можно сделать чтобы стало лучше.

bnk>Если автор просидел на этой либе последние 10 лет, это его все равно не оправдывает

Ну там в истории коммитов он один, так что наверное писал под себя.

bnk> IMHO можно было более человечный код написать.

Можно. Там даже уже было раньше почище написано.
... << RSDN@Home 1.3.110 alpha 5 rev. 62>>
Re[2]: Это сеньорский код?
От: Pavel Dvorkin Россия  
Дата: 21.12.21 11:00
Оценка: 5 (1) +5
Здравствуйте, DiPaolo, Вы писали:

DP>Именно этот код — да, крутого сеньора или даже выше. Для этого надо пойти посмотреть на весь файл целиком, а также понять контекст проекта. А суть там такая: это специальная узкоспециализированная либа-числодробилка (с поправкой на JS). Да, есть ряд областей, где важен именно такой "суровый" код. Человеку со стороны покажется какой-то херней, но человеку в теме все будет понятно. Ну или, при необходимости, новый человек, взявший на поддержку, сможет через какое-то время разобраться.


Совершенно согласен. Просто этот код не для тех, кто привык писать бизнес-приложения, и не им о нем судить. Там другие правила и требования.
With best regards
Pavel Dvorkin
Re: Это сеньорский код?
От: 4058  
Дата: 21.12.21 11:07
Оценка: 9 (1) +1
Здравствуйте, StandAlone, Вы писали:

SA>Все довольно просто, никакого рокетсайенс.

SA>Реализация
SA>https://github.com/d3/d3-scale/blob/9fe496e6d708bf30435c15f03ab9e5ae994ea7be/src/continuous.js

SA>Код достался мне на поддержку. Автор доступен, но по поводу своего творения не может сказать ни слова, кроме общих предположений.


А как Вам такое:

The following code is the fast inverse square root implementation from Quake III Arena, stripped of C preprocessor directives, but including the exact original comment text


float Q_rsqrt( float number )
{
    long i;
    float x2, y;
    const float threehalfs = 1.5F;

    x2 = number * 0.5F;
    y  = number;
    i  = * ( long * ) &y;                       // evil floating point bit level hacking
    i  = 0x5f3759df - ( i >> 1 );               // what the fuck? 
    y  = * ( float * ) &i;
    y  = y * ( threehalfs - ( x2 * y * y ) );   // 1st iteration
//    y  = y * ( threehalfs - ( x2 * y * y ) );   // 2nd iteration, this can be removed

    return y;
}


The algorithm was approximately four times faster than computing the square root with another method and calculating the reciprocal via floating-point division


Источник: https://en.wikipedia.org/wiki/Fast_inverse_square_root#Overview_of_the_code

Если честно, лень разбираться в кишках D3, но есть предположение, что автор занимается своего рода "битовыжиманием" на javascript (для которого язык совсем не предназначен), возможно у него ранее были более очевидные для восприятия реализации, но уступающие по производительности.
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.