我有一个注册页面,用户必须在其中输入有关自己的个人信息,如果输入的内容无效,则会弹出错误通知
if (!PhoneNumber.startsWith("055") || !PhoneNumber.startsWith("050") || !PhoneNumber.startsWith("056") || !PhoneNumber.startsWith("052")) {
// does not match
contact_number.setError("Please enter a valid phone number");
return;
}
if (TextUtils.isEmpty(password) )
{
VendorRegPassword.setError("Please enter your password");
return;
}
else if (password.length() < 6)
{
VendorRegPassword.setError("Please use more than 6 characters");
return;
}
if (TextUtils.isEmpty(email) || !email.contains("@") )
{
VendorRegEmail.setError("Please enter a valid email address");
}
它们独立工作,但组合在一起时无法正常工作,电话号码错误也无法正常工作,有人可以帮助我吗?
最佳答案
另一个答案是正确的; return
语句只是阻止执行所有检查。在这种情况下,您希望进行所有验证,因为每个验证都有不同方式通知用户问题。
除此之外:从“干净的代码”的角度来看,您应该小心地将所有验证简单地填充到同一个糟糕的方法中。相反:构建您的代码,以便它清楚地表达正在发生的事情,例如:
private void validateAll(PhoneNumber number, Email email, Password password) {
validatePhoneNumber(number);
validateEmail(email);
...
以及单独的助手,例如
private void validatePhoneNumber(number) {
boolean validPrefix = false;
for (String validPrefix : PREFEIXES) {
if (phoneNumber.startsWith(validPrefix) {
validPrefix = true;
}
}
if (!validPrefix) {
contact_number.setError("Please enter a valid phone number");
}
}
例如。请注意 - 我修复了另一个不好的做法(您的想法是简单地对所有有效前缀进行硬编码)。你总是想将这些信息放入一些常量集合/列表中;这样您的代码中就有一个位置知道这些前缀是什么。
关于java - 多个错误通知,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44070907/