Я довольно часто сталкиваюсь с возмутительной часто причудливой наглостью в программировании, особенно в онлайне. Я часто остаюсь в положении «это что, шутка»? Это действительно трудно сказать, учитывая, насколько распространен Даннинг Крюгер. Вещи, которые я видел от предполагаемых «старших».

Недавно я наткнулся на эту жемчужину.

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

Я бы не назвал этого человека старшим. Я бы закрепил их примерно на среднем уровне.

У вас есть крошечные функции, экспортированные, по-видимому, для того, чтобы оправдать их индивидуальное тестирование, тогда как кто, черт возьми, будет индивидуально тестировать отдельные строки базового кода, а не функцию из десяти строк, которая их использует? Они также существуют только для того, чтобы удовлетворить интеллектуальную мастурбацию создания оболочки вокруг одного значения, чтобы обеспечить метод отображения для крошечного кусочка синтаксического сахара. Глядя на это, мне страшно подумать, какая производительность пострадает от кодовой базы, сделанной таким образом. В этом уже есть оболочка для JS. Его [].

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

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

Посмотрите на это: https://en.wikipedia.org/wiki/Currying

На первый взгляд выглядит сложно, особенно если вы не знакомы с формальными математическими обозначениями.

Теперь посмотрите на это:

function a(x) {
    return function b(y) {
        return x * y;
    }
}

Вот и все. Функция, которая принимает x и возвращает другую функцию, принимающую y, которая возвращает x, умноженное на y. Гений. IQ 9000. Зарплата выше 9000.

Старший выдал бы что-то вроде этого (есть несколько способов, даже «младший» пример был бы не так уж плох):

export const addPages = ({pages}) => {
    let list = new PagesList(),
        populate = (data, func) => data && func(data);
    populate(pages.foo, data => list.add('foo', data));
    populate(pages.bars, data => data.forEach(bar => list.add(bar.name, bar.data)));
    populate(pages.bazes, data => data.forEach(baz => list.add(customBazParser(baz)));
    return list;
};

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

Если кто-то делает что-то «жестким» или сложным, это нормально, если это имеет смысл и оправдано. Я вижу, что люди усложняют программирование.

Хотя я все равно уверен, что это сарказм.