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(), но и остальной код проекта тоже, поэтому рекомендую по возможности несколько поработать над стилем - в результате читать код станет легче не только другим, но и тебе самому тоже.
Надеюсь, что этот тикет окажется чем-то полезен.
![[MC-04 logo]](/mc-04/chrome/site/logo.png)