Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/cmake/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 当返回布尔值时,编写彼此相反的方法的最佳实践是什么?_Java_Conventions - Fatal编程技术网

Java 当返回布尔值时,编写彼此相反的方法的最佳实践是什么?

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,就会告诉您这很奇怪。不,这绝对没问题,并且积极

我正在学习条件句,想知道这对于类似的情况是否是一个坏习惯。我应该在不使用isEven的情况下定义isOdd吗

    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;。添加它是因为在实践中许多用户都喜欢它。

没有约定,因为这不是一种常见做法。在实际代码中,您不会为这么一小段代码编写方法。对于更大的代码块,您当然不会编写该方法两次。在我看来,这不是一个现实世界的问题。好吧,我改为最佳实践。那更好吗?我觉得这更有意义。哦,那是真的。这是大项目的常见做法吗?我想乔恩回答了上面这个问题。。。当然,如果你真的需要这两种方法。这对打电话的人来说真的太难了吗!我甚至。。。?有时候,为了方便读者阅读,这样做是值得的,但我建议先仔细考虑一下。好的,谢谢。我以后一定会考虑这个问题的!我懂了。谢谢哇!我没看到,我现在会修改我的代码。哇,谢谢!我现在就去看看