|
1
7
我发现换行符和空白区做得很好,实际上:
诚然,它对我的(不受欢迎的)支撑样式(上面没有显示)更有效,但即使有上面的效果,如果你把关闭和打开的支撑放在它们自己的线上,它也可以很好地工作(所以它们不会在最后一个条件结束时丢失)。 我有时甚至会评论个别的部分:
如果你真的想把事情说出来,多个
…任何优化的编译器都会崩溃。不过,对我来说,可能有点过于冗长了。 |
|
|
2
11
您可以使用早期返回(从方法)来实现相同的效果: [应用了一些修复程序]
|
|
|
3
6
如果你的目标是可读性,为什么不简单地打断这些行并添加注释呢?
|
|
|
4
2
booleanExpression类型似乎没有足够的用处,不能独立地成为主类之外的类,它也为您的应用程序增加了一些智力负担。我只需编写适当命名的私有方法来运行所需的检查。简单多了。 |
|
5
2
必须执行变量赋值 内部 IF的。
翻译为
不管怎样,这样做通常是有益的,因为它命名了您要测试的概念,正如您在示例代码中清楚地演示的那样。这提高了可读性。 |
|
|
6
1
您的第一个解决方案适合这种复杂性。如果条件更复杂,我将为您需要运行的每个检查编写私有方法。类似:
|
|
|
7
1
这个问题是从2009,但在未来(Java 8),我们将能够使用lambda表达式,可能是这个上下文就像布尔表达式,但你可以使用它,所以他们只需要评估时。
您可以用Java 5/6进行同样的操作,但是它效率低,而且更难用匿名类编写。 |
|
|
8
0
已经有了一些好的解决方案,但这是我的变体。在所有(相关的)方法中,我通常将空检查作为最顶层的保护子句。在这种情况下,如果我这样做,它只会在随后的if中留下长度和相等检查,这可以被认为是复杂性的充分减少和/或可读性的提高?
|
|
9
0
将它分割成一个单独的函数(以提高main()的可读性)并添加一个注释(这样人们就能理解您要完成的任务)
eta:我也喜欢Itay在argumentsarevalid函数中使用早期返回来提高可读性的想法。 |
|
|
10
0
您的第一个解决方案在许多情况下都不起作用,包括上面给出的示例。如果args为空,则
短路的一个优点是可以节省运行时间。另一个优点是,它允许您进行早期测试,以检查是否存在导致后期测试抛出异常的条件。 就我个人而言,当测试单独地很简单,而让测试变得复杂的是测试中有许多测试,我会投票赞成简单的“添加一些换行符和注释”解决方案。这比创建一系列附加函数更容易阅读。 我唯一一次将事物分解成子例程是在单个测试很复杂的时候。如果你需要出去读一个数据库或者执行一个大的计算,那么当然,把它滚到一个子例程中,这样顶级代码就很容易读取了。
编辑: 我将如何打破你给出的更复杂的例子。 当我真正得到如此复杂的条件时,我尝试将它们分解成嵌套的ifs,以使它们更具可读性。就像…不好意思,如果下面的例子与你的例子不完全相同,我不想为了这样一个例子而过于仔细地研究括号(当然括号是很难阅读的原因):
这对我来说似乎是可读的。在这个例子中,“顶层”条件显然是位置与最小值和最大值的关系,所以在我看来,打破这个关系确实有助于澄清问题。 事实上,上面的方法可能比把它们全部塞进一行更有效,因为其他方法可以减少比较的次数。 就我个人而言,当把一个复杂的条件放在一条线上是一个好主意时,我会很挣扎。但是,即使你理解了这一点,也很可能下一个人不会来。即使是一些相当直截了当的事情,比如 返回s==空?-1:s.长度(); 我有时会告诉自己,是的,我明白了,但别人不会,也许最好还是写下来。
|
|
|
11
-1
第一段代码真的没什么问题,我觉得你在想太多了。 这是另一种方式,虽然冗长,但很容易理解。
|
|
|
user29759326 · 如何返回递归函数中的最后一个值? 1 年前 |
|
|
malife89 · 将java中的字符串读取为正确的日期格式 1 年前 |
|
|
Tim · 在java中,有没有更快的方法将字节数组写入文件? 1 年前 |
|
|
rudraraj · java中未声明最终变量 1 年前 |
|
|
Bala Ji · 以下BFS的实施效率如何? 1 年前 |