覆盖布尔值时会发生什么?
What happens when you overwrite a Boolean value?
这个问题是关于布尔值而不是布尔值的(但我很想知道两者的情况是否相同)。假设您有一个函数对数据执行多项检查,并且在每种情况下它都有特定的响应。您希望该函数显示所有无效输入(以及它们无效的原因),因此您想要检查所有输入(不仅仅是一个和停止和 return)。使用单个布尔值(如 Boolean x = isValidEmail(String email))然后处理它是否是一种更好的方法,如果它无效并在以后的检查中重用 x 以便您不分配额外的内存,或者您应该做(布尔 x = isValidEmail(字符串电子邮件),布尔 y = isValidPassword(字符串密码))。我希望这个问题在我提出它的方式中不会太混乱。我已经放了一个我试图实现的代码示例来给你一个想法。
//Checking if email is valid
Boolean isValidEmail = registrationService.emailIsValid(user.getEmail());
if(!isValidEmail) {
model.addAttribute("invalidEmail", true);
}
//Checking if email length is valid
Boolean emailIsValidLength = registrationService.emailIsValidLength(user.getEmail());
if(!emailIsValidLength) {
model.addAttribute("invalidEmailLength", true);
}
如您所见,我创建了单独的布尔值。重用第一个布尔值并执行
是否更好
IsValidEmail = registrationService.emailIsValidLength(user.getEmail());
而不是创建两个独立的布尔实例?
在 javac 和 JIT 有机会优化之后,两种方式的成本都相同。
写最清楚的东西 -- 这意味着使用新变量。
(请注意,这与您不“创建新实例”的方式有关,几乎肯定只是创建对现有对象的引用。)
这取决于你的情况,你稍后会使用布尔值,还是验证是一次性的事情,这不仅仅涉及对象布尔值,
对于单次使用,我通常这样做:
if(!registrationService.emailIsValidLength(user.getEmail());) {
model.addAttribute("invalidEmail", true);
}
//Checking if email length is valid
if(!registrationService.emailIsValidLength(user.getEmail());) {
model.addAttribute("invalidEmailLength", true);
}
如果我以后需要布尔值,我会将结果存储在一个变量中,因为你为什么要再次调用该函数?
如果您想 return 全局错误消息,将结果存储在一个变量中也是有效的。
使用单独的布尔值,完全不会影响 java 性能,如果我是你,我会关注数据结构和时间复杂度。
这个问题是关于布尔值而不是布尔值的(但我很想知道两者的情况是否相同)。假设您有一个函数对数据执行多项检查,并且在每种情况下它都有特定的响应。您希望该函数显示所有无效输入(以及它们无效的原因),因此您想要检查所有输入(不仅仅是一个和停止和 return)。使用单个布尔值(如 Boolean x = isValidEmail(String email))然后处理它是否是一种更好的方法,如果它无效并在以后的检查中重用 x 以便您不分配额外的内存,或者您应该做(布尔 x = isValidEmail(字符串电子邮件),布尔 y = isValidPassword(字符串密码))。我希望这个问题在我提出它的方式中不会太混乱。我已经放了一个我试图实现的代码示例来给你一个想法。
//Checking if email is valid
Boolean isValidEmail = registrationService.emailIsValid(user.getEmail());
if(!isValidEmail) {
model.addAttribute("invalidEmail", true);
}
//Checking if email length is valid
Boolean emailIsValidLength = registrationService.emailIsValidLength(user.getEmail());
if(!emailIsValidLength) {
model.addAttribute("invalidEmailLength", true);
}
如您所见,我创建了单独的布尔值。重用第一个布尔值并执行
是否更好IsValidEmail = registrationService.emailIsValidLength(user.getEmail());
而不是创建两个独立的布尔实例?
在 javac 和 JIT 有机会优化之后,两种方式的成本都相同。
写最清楚的东西 -- 这意味着使用新变量。
(请注意,这与您不“创建新实例”的方式有关,几乎肯定只是创建对现有对象的引用。)
这取决于你的情况,你稍后会使用布尔值,还是验证是一次性的事情,这不仅仅涉及对象布尔值,
对于单次使用,我通常这样做:
if(!registrationService.emailIsValidLength(user.getEmail());) {
model.addAttribute("invalidEmail", true);
}
//Checking if email length is valid
if(!registrationService.emailIsValidLength(user.getEmail());) {
model.addAttribute("invalidEmailLength", true);
}
如果我以后需要布尔值,我会将结果存储在一个变量中,因为你为什么要再次调用该函数?
如果您想 return 全局错误消息,将结果存储在一个变量中也是有效的。
使用单独的布尔值,完全不会影响 java 性能,如果我是你,我会关注数据结构和时间复杂度。