考虑动作游戏的以下if语句
if (state.isPrimaryJumping && state.timeUntilCanJump == 0 && state.isStartPrimaryJumping && state.jumpIsLoaded && state.primaryJumpsSinceTouchedGround < moveStats.maxJumps) {
// do awesome jumping stuff
}
在这种情况下,六个条件中的每一个都是不同的,没有一个可以删除。但是,该语句包含在页面末尾并且很难理解。
表达一长串重要条件的最明确方法是什么?
由于
答案 0 :(得分:3)
当进入这样的长if语句时,通常用换行符分隔每个条件:
private void xpto()
{
timerScore[0] = new Foo ();
timerScore[0].Name = "test";
timerScore[0].Score = 30;
}
我更喜欢把&amp;&amp;&amp;在该行的末尾,使用条件而不是操作符开始下一行,但两者都可以。这样的东西通常也包含在你的组织风格指南中。
答案 1 :(得分:3)
为了使其更具可读性,我会将您的语句放入一个具有返回bool
的描述性名称的方法中。像这样:
if (CanDoAwesomeJumpingStuff())
{
// do awesome jumping stuff
}
private bool CanDoAwesomeJumpingStuff()
{
return state.isPrimaryJumping &&
state.timeUntilCanJump == 0 &&
state.isStartPrimaryJumping &&
state.jumpIsLoaded &&
state.primaryJumpsSinceTouchedGround < moveStats.maxJumps
}
虽然它可能会添加额外的代码行,但您确切知道检查的条件是什么。
答案 2 :(得分:1)
您应该在&amp;&amp;&amp;&#39;之前列出包含换行符的条件:
if (state.isPrimaryJumping
&& state.timeUntilCanJump == 0
&& state.isStartPrimaryJumping
&& state.jumpIsLoaded
&& state.primaryJumpsSinceTouchedGround < moveStats.maxJumps) {
// do awesome jumping stuff
}