Opened 23 hours ago

#1468 new улучшение

translateCode(): плохо читаемый код javascript

Reported by: alx Owned by: Denis_N
Priority: minor Component: БД изделий АДС
Keywords: Cc:

Description

Предисловие: этот тикет является не столько конкретным предложением по изменению кода конкретной функции translateCode(), сколько советом по изменению стиля кодирования вообще.

В r488/base я обнаружил такую функцию:

function translateCode(dictName, rawValue) {
    if (rawValue === undefined || rawValue === null || rawValue === '') return '';
    const dict = DICTS[dictName];
    if (!dict) return rawValue;
    const key = String(rawValue);
    return Object.prototype.hasOwnProperty.call(dict, key) ? dict[key] : rawValue;
}

На мой взгляд, код этой функции написан не очень хорошо - мысли сформулированы очень сложно и многословно, функция плохо читаема. Как-то не по-javascript'овски, как будто это какой-нибудь C (как будто иностранец писал на неродном ему языке). :) У меня ушло больше минуты чтобы прочитать и понять, что этот код делает...

Предложу свой вариант кода:

const translateCode = (dictName, rawValue) => DICT[dictName]?.[rawValue] ?? rawValue ?? '';

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

Надеюсь, что этот тикет окажется чем-то полезен.

Change History (0)

Note: See TracTickets for help on using tickets.