Java 我应该从一个主方法调用所有方法,还是在当前方法末尾调用下一个方法?
如果我调用方法Java 我应该从一个主方法调用所有方法,还是在当前方法末尾调用下一个方法?,java,methods,coding-style,code-cleanup,Java,Methods,Coding Style,Code Cleanup,如果我调用方法makeDinner(),并且这个方法有子方法prepareTomatos()和prepareMeat(),我应该 a) 从makeDinner()或 b) 调用prepareTomatoes(),然后在该方法的末尾调用prepareMeat() 有没有什么通用的方法?一般来说,我在将代码拆分为不同的方法,并确定哪些仍然属于该方法,哪些不属于该方法方面存在一些问题 编辑:这是一个很糟糕的例子,正如我所看到的,这确实是一个非常情境化的例子。 我的具体情况是,我必须做3项任务——根据健
makeDinner()
,并且这个方法有子方法prepareTomatos()
和prepareMeat()
,我应该
a) 从makeDinner()
或
b) 调用prepareTomatoes()
,然后在该方法的末尾调用prepareMeat()
有没有什么通用的方法?一般来说,我在将代码拆分为不同的方法,并确定哪些仍然属于该方法,哪些不属于该方法方面存在一些问题
编辑:这是一个很糟糕的例子,正如我所看到的,这确实是一个非常情境化的例子。
我的具体情况是,我必须做3项任务——根据健康状况绘制健康栏,如果健康状况=0.0f,则调用died()
,最后绘制健康栏。
我将它扩展为三种方法-我调用了drawHealthBar()
-在这个方法中我调用了paintHealthBar()
-在这个方法中,我调用了Dead()
(当然,如果health==0.0f
)
现在,如果调用drawHealthBar()
,则可以预期该方法还会检查运行状况并以特定颜色绘制运行状况栏。但我担心,如果我要从paintHealthBar()
调用died()
,它会让其他人甚至6个月后的我看代码时感到困惑
这可能比这复杂得多,但即使在“简单”的情况下,我也不知道是否应该调用
paintHealthBar()
,然后调用drawHealthBar()
,然后调用checkDeath()
,所有这些都来自“main”方法,或者是否可以按我的方式(向下)调用它,或者调用draw()
在这个方法中paint()
是可以的,但是我应该从main方法调用checkDeath()
?通常,您希望代码具有良好的可读性,所以这是一个真正基于情况的问题。在您的具体示例中,我个人的意见是将PrepareTomatos和prepareMeat方法放在MakeDinnet方法中
然而,这是非常普遍的,因为如果你需要准备肉,在西红柿烹饪的时候怎么办?这取决于你是否总是在准备西红柿的时候准备肉等等。。。这确实是一种情境
没有一个真正的规则,告诉你做这个或那个。你通常对它有感觉。你通常希望你的方法尽可能具体化,这样你就可以把你的MakeTomatos分成“Cuttomateos”、“CleanTomatos”、“CookTomatos”
但如果在拆分方面走得太远,您将再次失去可读性 通常,您希望代码具有良好的可读性,因此这是一个基于实际情况的问题。在您的具体示例中,我个人的意见是将PrepareTomatos和prepareMeat方法放在MakeDinnet方法中 然而,这是非常普遍的,因为如果你需要准备肉,在西红柿烹饪的时候怎么办?这取决于你是否总是在准备西红柿的时候准备肉等等。。。这确实是一种情境 没有一个真正的规则,告诉你做这个或那个。你通常对它有感觉。你通常希望你的方法尽可能具体化,这样你就可以把你的MakeTomatos分成“Cuttomateos”、“CleanTomatos”、“CookTomatos” 但如果在拆分方面走得太远,您将再次失去可读性 声明您不应该与陌生人交谈,这意味着应该避免像
car.getEngine().turon()
这样的链式呼叫,而carg.turon()
更可取。现在,假设您有一个业务逻辑,允许在汽车没有燃油时打开发动机,并向驾驶员发出警报:
if (car.hasFuel()){
car.getEngine().turnOn();
}else{
car.alertDriver();
}
最好将此逻辑封装到cart.turon()
方法中,而不是在车外。您可以更好地创建单元测试,避免在不检查业务规则的情况下启动汽车的错误。提高代码的可读性 声明您不应该与陌生人交谈,这意味着应该避免像car.getEngine().turon()
这样的链式呼叫,而carg.turon()
更可取。现在,假设您有一个业务逻辑,允许在汽车没有燃油时打开发动机,并向驾驶员发出警报:
if (car.hasFuel()){
car.getEngine().turnOn();
}else{
car.alertDriver();
}
最好将此逻辑封装到
cart.turon()
方法中,而不是在车外。您可以更好地创建单元测试,避免在不检查业务规则的情况下启动汽车的错误。提高代码的可读性 你能提供一个完整的例子而不是描述它吗?虽然我想我知道你的意思,但如果你清楚地提出备选方案,就更容易避免模棱两可。但是,prepareTomatos
调用prepareMeat
听起来非常错误-它并不是说要这么做。如果我想要西红柿而不是肉怎么办?对不起,这是个坏例子。我编辑了我的答案,希望现在答案清楚了@你能提供一个完整的例子而不是描述它吗?虽然我想我知道你的意思,但如果你清楚地提出备选方案,就更容易避免模棱两可。但是,prepareTomatos
调用prepareMeat
听起来非常错误-它并不是说要这么做。如果我想要西红柿而不是肉怎么办?对不起,这是个坏例子。我编辑了我的答案,希望现在答案清楚了@帕克哈洛