如何清楚地表达长列表的条件
本文关键字:列表 条件 地表 何清楚 清楚 | 更新日期: 2023-09-27 18:15:50
考虑以下动作游戏的if语句,
if (state.isPrimaryJumping && state.timeUntilCanJump == 0 && state.isStartPrimaryJumping && state.jumpIsLoaded && state.primaryJumpsSinceTouchedGround < moveStats.maxJumps) {
// do awesome jumping stuff
}
在这种情况下,六个条件中的每一个都是不同的,没有一个可以删除。然而,该语句在页面末尾结束,很难理解。
表达一长串重要条件的最清晰方式是什么?
谢谢
当进入像这样的长if语句时,通常用换行符分隔每个条件:
if (state.isPrimaryJumping &&
state.timeUntilCanJump == 0 &&
state.isStartPrimaryJumping &&
state.jumpIsLoaded &&
state.primaryJumpsSinceTouchedGround < moveStats.maxJumps)
{
// do awesome jumping stuff
}
我更喜欢用&&在行尾,以条件而不是运算符开始下一行,但两者都可以。像这样的东西通常也包含在你的组织风格指南中。
为了使其更具可读性,我会将您的语句放入具有描述性名称的方法中,该方法返回bool
。像这样:
if (CanDoAwesomeJumpingStuff())
{
// do awesome jumping stuff
}
private bool CanDoAwesomeJumpingStuff()
{
return state.isPrimaryJumping &&
state.timeUntilCanJump == 0 &&
state.isStartPrimaryJumping &&
state.jumpIsLoaded &&
state.primaryJumpsSinceTouchedGround < moveStats.maxJumps
}
虽然它可能会添加额外的代码行,但您可以确切地知道要检查的条件是什么。
您应该在'&&':
前列出使用换行符的条件if (state.isPrimaryJumping
&& state.timeUntilCanJump == 0
&& state.isStartPrimaryJumping
&& state.jumpIsLoaded
&& state.primaryJumpsSinceTouchedGround < moveStats.maxJumps) {
// do awesome jumping stuff
}