vanyatwo
@vanyatwo
Дизайн, веб-сайты и виртуальные туры

Как лучше писать функции с валидацией?

Есть код, в нем 3 варианта написания функции по порядку валидаций - как вы думаете какая из них лучше?
"use strict";

const logins = ["Mango", "robotGoogles", "Poly", "Aj4x1sBozz", "qwerty123"];

const isLoginValid = function(login) {
  login.split("");
  if (login.length >= 4 && login.length <= 16) {
    return true;
  } else {
    return false;
  }
};

const isLoginUnique = (allLogins, login) => !allLogins.includes(login);

const addLogin = function(allLogins, login) {
  //   _______________
  //  Вариант 1 =====================================
  //   if (isLoginValid(login)) {
  //     if (isLoginUnique(allLogins, login)) {
  //       console.log("Логин успешно добавлен!");
  //       return logins.push(login);
  //     } else {
  //       return console.log("Такой логин уже используется!");
  //     }
  //   } else {
  //     return console.log("Ошибка! Логин должен быть от 4 до 16 символов");
  //   }
  //   ______________
  //   Вариант 2 =====================================
  //   if (!isLoginValid(login)) {
  //     console.log("Ошибка! Логин должен быть от 4 до 16 символов");
  //     return;
  //   } else if (!isLoginUnique(allLogins, login)) {
  //     console.log("Такой логин уже используется!");
  //     return;
  //   }
  //   logins.push(login) && console.log("Логин успешно добавлен!");
  //   __________________
  //   Вариант 3 =====================================
  //  if (isLoginValid(login) && isLoginUnique(allLogins, login)) {
  //   return logins.push(login) && console.log("Логин успешно добавлен!");
  // } else if (!isLoginValid(login)) {
  //   return console.log("Ошибка! Логин должен быть от 4 до 16 символов");
  // } else return console.log("Такой логин уже используется!");
};

// // Вызовы функции для проверки
addLogin(logins, "Ajax"); // 'Логин успешно добавлен!'
addLogin(logins, "robotGoogles"); // 'Такой логин уже используется!'
addLogin(logins, "Zod"); // 'Ошибка! Логин должен быть от 4 до 16 символов'
console.log(logins);
  • Вопрос задан
  • 66 просмотров
Пригласить эксперта
Ответы на вопрос 1
Здравствуйте, первым делом надо начать с того, зачем вы строку в массив преобразуете? У строки также есть свойство length. И вашу функцию isLoginValid легко можно переписать в:
const isLoginValid = (login) => login.length >= 4 && login.length <= 16;


Ну а по addLogin, то:
const addLogin = (logins, login) => {
	if (isLoginValid(login)) {
		if (isLoginUnique(logins, login)) {
			logins.push(login);
			console.log("Логин успешно добавлен!");
        } else {
			console.log("Такой логин уже используется!");
        }
    } else {
		console.log("Ошибка! Логин должен быть от 4 до 16 символов");
    }
}
Ответ написан
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы
от 30 000 до 65 000 руб.
BSSL Москва
от 50 000 до 150 000 руб.
от 60 000 до 90 000 руб.
16 июл. 2019, в 03:05
15000 руб./за проект
16 июл. 2019, в 02:57
5000 руб./за проект
16 июл. 2019, в 00:49
15000 руб./за проект