Задать вопрос
@vGrabko99
html, css, js, php, golang, mysql

Как сделать эту функцию не такой страшной?

func dataValid(result []string) bool {
	if v.IsLogin(result[0]) == true {
		if isLoginAvailable(result[0]) == true {
			if v.IsEmail(result[1]) == true {
				if isEmailAvailable(result[1]) == true {
					return v.IsPass(result[2])
				} else {
					return false
				}
			} else {
				return false
			}
		} else {
			return false
		}
	} else {
		return false
	}
}


Какие будут советы по исправлению этого говнокода?
Зарание спасибо
  • Вопрос задан
  • 338 просмотров
Подписаться 1 Оценить 6 комментариев
Решения вопроса 7
@alexxandr
you'll see in memory only 0xDEADFACE
переписать на С :)
if (v.IsLogin(result[0]) && isLoginAvailable(result[0]) && v.IsEmail(result[1]) && isEmailAvailable(result[1])) {
return return v.IsPass(result[2]) }
Ответ написан
mirrr
@mirrr
Программист и просто хороший человек
func dataValid(result []string) bool {
	return v.IsLogin(result[0]) && isLoginAvailable(result[0]) &&
		v.IsEmail(result[1]) && isEmailAvailable(result[1]) &&
		v.IsPass(result[2])
}
Ответ написан
Olej
@Olej
инженер, программист, преподаватель
func dataValid( result []string ) bool {
   if v.IsLogin(result[0]) && isLoginAvailable(result[0]) && v.IsEmail(result[1]) && isEmailAvailable(result[1]) {
      return v.IsPass(result[2])
   } else {
      return false
   }
}
Ответ написан
uvelichitel
@uvelichitel Куратор тега Go
habrahabr.ru/users/uvelichitel
func (data Data) IsValid() bool{
    return v.IsLogin(data[0]) && isLoginAvailable(data[0]) && v.IsEmail(data[1]) && isEmailAvailable(data[1]) && v.IsPass(data[2]) 
}
// fmt.Println(Data(result).IsValid())
Ответ написан
Комментировать
bitver
@bitver
Зачем вообще else? И булевы функции можно подставлять в if без операторов сравнения.
func dataValid(result []string) bool {
  if v.IsLogin(result[0])  {
    if isLoginAvailable(result[0])  {
      if v.IsEmail(result[1])  {
        if isEmailAvailable(result[1])  {
          return v.IsPass(result[2])
        }
      }
    }
  }
  return false
}
Ответ написан
@mantyr
Пишу много Golang кода с удовольствием:)
func dataValid(result []string) bool {
  if v.IsLogin(result[0]) == true {

Вы уверены что там всегда будут прилетать значения в функцию?:) Прилетит что-нибудь пустое и вуаля...
Ответ написан
Или же, если нет желания делать всё в одну строку - простейший вариант с ранними return:
if !v.IsLogin(result[0]) {
  return false;
}
if !isLoginAvailable(result[0]) {
  return false;
}
if !isEmailAvailable(result[1]) {
  return false;
}
return v.IsPass(result[2])
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

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