﻿id	summary	reporter	owner	description	type	status	priority	component	resolution	keywords	cc
1468	translateCode(): плохо читаемый код javascript	alx	Denis_N	"//Предисловие: этот тикет является не столько конкретным предложением по изменению кода конкретной функции `translateCode()`, сколько советом по изменению стиля кодирования вообще.//

В r488/base я обнаружил [source:/base/js/main.js@488:33-39#L30 такую функцию]:

{{{#!javascript
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 (как будто иностранец писал на неродном ему языке). :) У меня ушло больше минуты чтобы прочитать и понять, что этот код делает...

Предложу свой вариант кода:

{{{#!javascript
const translateCode = (dictName, rawValue) => DICT[dictName]?.[rawValue] ?? rawValue ?? '';
}}}

Предлагаю проанализировать и сравнить это с исходным вариантом - на мой взгляд это намного более ясный и лаконичный код, на то чтобы прочитать и понять его потребуется намного меньше времени (секунды). Предполагаю, что излишней сложностью и многословностью страдает не только функция `translateCode()`, но и остальной код проекта тоже, поэтому рекомендую по возможности несколько поработать над стилем - в результате читать код станет легче не только другим, но и тебе самому тоже.

Надеюсь, что этот тикет окажется чем-то полезен."	улучшение	new	minor	БД изделий АДС			
