这段代码是有效的,但我读它时感觉不太好。我发现重构为更清晰或更简短的内容时遇到了麻烦。将代码分成几个 if-return 在这里似乎没有多大帮助。提示?谢谢!
if t < 0 {
r = 0
} else if t >= 0 && t < 7.5 {
if m >= 0 && m < 0.125 {
r = 1
} else {
r = 2
}
} else if t >= 7.5 && t < 10 {
if m >= 0 && m < 0.125 {
r = 1
} else {
r = 4
}
} else if t >= 10 && t < 20 {
if m >= 0 && m < 0.125 {
r = 1
} else if m >= 0.125 && m < 0.25 {
r = 3
} else {
r = 4
}
} else if t >= 20 && t < 22.5 {
if m >= 0 && m < 0.125 {
r = 7
} else if m >= 0.125 && m < 0.375 {
r = 3
} else {
r = 4
}
} else if t >= 22.5 && t < 27.5 {
if m >= 0 && m < 0.125 {
r = 7
} else if m >= 0.125 && m < 0.625 {
r = 5
} else {
r = 6
}
} else if t >= 27.5 {
if m >= 0 && m < 0.25 {
r = 7
} else if m >= 0.25 && m < 0.625 {
r = 5
} else {
r = 6
}
}
Run Code Online (Sandbox Code Playgroud)
小智 5
简化外部 if / else if / else 去除多余的比较并转换为 switch:
switch {
case t < 0:
r = 0
case t < 7.5:
if m >= 0 && m < 0.125 {
r = 1
} else {
r = 2
}
case t < 10:
if m >= 0 && m < 0.125 {
r = 1
} else {
r = 4
}
case t < 20:
if m >= 0 && m < 0.125 {
r = 1
} else if m >= 0.125 && m < 0.25 {
r = 3
} else {
r = 4
}
case t < 22.5:
if m >= 0 && m < 0.125 {
r = 7
} else if m >= 0.125 && m < 0.375 {
r = 3
} else {
r = 4
}
case t < 27.5:
if m >= 0 && m < 0.125 {
r = 7
} else if m >= 0.125 && m < 0.625 {
r = 5
} else {
r = 6
}
default:
if m >= 0 && m < 0.25 {
r = 7
} else if m >= 0.25 && m < 0.625 {
r = 5
} else {
r = 6
}
}
Run Code Online (Sandbox Code Playgroud)
对内部语句也可以进行类似的修改。编码:
if m >= 0 && m < 0.125 {
r = 1
} else {
r = 2
}
Run Code Online (Sandbox Code Playgroud)
变成:
switch {
case m < 0:
// r not changed
case m < 0.125:
r = 1
default:
r = 2
}
Run Code Online (Sandbox Code Playgroud)