Задать вопрос
@vanyproduction

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

Есть код, в нем 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);
  • Вопрос задан
  • 121 просмотр
Подписаться 1 Простой Комментировать
Пригласить эксперта
Ответы на вопрос 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 символов");
    }
}
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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