最近看了很多同学的业务代码,发现很多同学的项目中都会出现大量的 if...else
嵌套逻辑,比如:
function demo (a, b, c) {a , b , c) {
if (f( a , b , c)) {
if (g( a , b , c)) {
// ...
}
// ...
if (h( a , b , c)) {
// ...
}
}
if (j( a , b , c)) {
// ...
}
if (k( a , b , c)) {
// ...
}
}
这样的代码又臭又长,俗称 意大利面条代码。
01:什么是意大利面条代码?
所谓的“意大利面代码”在处理复杂业务流程时很常见。它通常具有以下特点:
-
内容冗长
-
结构混乱
-
嵌套深度
我们知道,主流编程语言都有函数或方法来组织代码。对于意大利面代码,我们可以将其视为满足这些特征的函数。根据语言语义的不同,它可以分为两种基本类型:
第一种:if...if
这种类型的代码结构如下所示:
function demo (a, b, c) {a, b, c) {
if (f(a, b, c)) {
if (g(a, b, c)) {
// ...
}
// ...
if (h(a, b, c)) {
// ...
}
}
if (j(a, b, c)) {
// ...
}
if (k(a, b, c)) {
// ...