@AlexKindGeek

Как улучшить читабельность функции?

Привет. Есть у меня ф-ция, которая обозначает язык вопросов.
defineQuestionDataByLanguage = (question, lang) => {
    let labelLang = "";
    let answerLang = "";
    switch (lang) {
      case 2:
        labelLang = question.swe;
        answerLang = "swe";
        break;
      default:
        labelLang = question.en;
        answerLang = "en";
    }
    return {
      labelLang,
      answerLang
    };
  };

const { labelLang, answerLang } = this.defineQuestionDataByLanguage(
      question,
      q_lang.value
    );


Мне не очень нравится реализация. Возможно её можно сделать более читабельней?
  • Вопрос задан
  • 114 просмотров
Решения вопроса 1
0xD34F
@0xD34F Куратор тега JavaScript
Заменяем switch на таблицу, где будут перечислены все возможные варианты (в данном случае достаточно простого объекта), после этого вся логика выбора нужного значения сведётся к чтению свойства:

const defineQuestionDataByLanguage = (question, lang) => {
  const answerLang = ({
    2: 'swe',
    // ещё какие-то языки, если надо
  })[lang] || 'en';

  return {
    labelLang: question[answerLang],
    answerLang,
  };
};

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

const defineQuestionDataByLanguage = (question, lang) => {
  const answerLang = languages[lang] || languages.default;

  return {
    labelLang: question[answerLang],
    answerLang,
  };
};

А ещё при необходимости внести изменения в список языков трогать код будет не надо.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы