Java 当返回布尔值时,编写彼此相反的方法的最佳实践是什么?
我正在学习条件句,想知道这对于类似的情况是否是一个坏习惯。我应该在不使用isEven的情况下定义isOdd吗Java 当返回布尔值时,编写彼此相反的方法的最佳实践是什么?,java,conventions,Java,Conventions,我正在学习条件句,想知道这对于类似的情况是否是一个坏习惯。我应该在不使用isEven的情况下定义isOdd吗 static boolean isEven(int i) { return i % 2 == 0; } static boolean isOdd(int i) { return !isEven(i); } 这种方法太过分了。只要检查isEven是否返回false,就会告诉您这很奇怪。不,这绝对没问题,并且积极
static boolean isEven(int i) {
return i % 2 == 0;
}
static boolean isOdd(int i) {
return !isEven(i);
}
这种方法太过分了。只要检查isEven是否返回false,就会告诉您这很奇怪。不,这绝对没问题,并且积极鼓励代码重用——当然,如果您确实需要这两种方法的话。这对打电话的人来说真的太难了吗!我甚至。。。?有时为了方便调用方的可读性,这样做是值得的,但我鼓励首先仔细考虑 然而,我不鼓励的是使用if语句,其中body只返回true或false。只需返回条件即可替换: 静态布尔等容i{ 返回i%2==0; }
我不知道有什么具体的惯例
我会选择重用策略,因此您只需维护一个实现,以防修改或改进。而且您或您的继任者不会忘记更新一半的代码…更常见的情况是,当类的实例具有自然顺序,并且可以相互比较时,您可能会遇到这个问题 在Java中,您将实现的compareToT方法,正如注释所说,建议compareTo与equals保持一致。确保并最大化代码重用的一种方法是根据比较定义相等: 最终类MyComparable实现可比较{ /*用于排序的某些字段*/ ... @凌驾 公共int可与之相比{ /*比较this和that的字段,并返回带符号的结果*/ ... } @凌驾 公共整数哈希码{ /*根据用于排序的成员定义哈希*/ ... } @凌驾 公共布尔等式对象obj{ /*重新使用自然顺序的定义来定义相等*/ 返回MyComparable的obj实例&&compareTomcomparable obj==0; } }
在许多情况下,这确实是一种良好的做法。有时候,javaapi源代码可以作为良好实践的一个好例子 在Java8中,Optional类有一个方法isPresent,想要知道对象是否不存在的用户必须使用!我表示
在Java11中,他们添加了Optional.isEmpty,其源代码就是return!iPresent;。添加它是因为在实践中许多用户都喜欢它。没有约定,因为这不是一种常见做法。在实际代码中,您不会为这么一小段代码编写方法。对于更大的代码块,您当然不会编写该方法两次。在我看来,这不是一个现实世界的问题。好吧,我改为最佳实践。那更好吗?我觉得这更有意义。哦,那是真的。这是大项目的常见做法吗?我想乔恩回答了上面这个问题。。。当然,如果你真的需要这两种方法。这对打电话的人来说真的太难了吗!我甚至。。。?有时候,为了方便读者阅读,这样做是值得的,但我建议先仔细考虑一下。好的,谢谢。我以后一定会考虑这个问题的!我懂了。谢谢哇!我没看到,我现在会修改我的代码。哇,谢谢!我现在就去看看