根据维基百科的说法,该术语最初是由数据库专家Joe Celko在1982年创造的,这里引用his 1997 article来揭示他的意思:“标准[结构化编程]解决方案是用嵌套的IF-THEN-ELSE语句和开关替换GOTO,这些语句和层次结构如此之深并且具有如此多的冗余,以至于您的控制路径看起来就像是一盘烤宽面条。“
然而,The same Wikipedia entry对术语的定义不同,明确指的是多层应用程序:“......不同的子系统,例如...... Web应用程序代码,业务逻辑和关系数据库。 “随着程序员开发出新的方法和架构,术语的含义也随之发展。
我可以想到“烤宽面条代码”的两个现代定义:
这个词显然意味着批评(就像你可能通过称之为“意大利面条代码”来批评我的东西)。但这对你来说意味着什么,你何时会使用它?
答案 0 :(得分:9)
对我来说,这意味着layered for no good reason。
答案 1 :(得分:6)
GOTO太多== Spaghetti Code
太多IF-THEN-ELSE / Switch == Lasagna Code
:)
答案 2 :(得分:2)
Lasagna代码是一种程序结构,其特点是几个明确定义且可分离的层,其中每层代码通过定义良好的接口访问下面层中的服务。
该术语与意大利面条代码相比较,将程序结构与面食进行比较。这个比喻源于烤宽面条的分层结构,
其中不同的成分(肉,酱,蔬菜或奶酪)各自被意大利面条隔开。
答案 3 :(得分:1)
一个做得很好的烤宽面条,我的妻子做的那种,很好的分层和整洁,另一方面,意大利面是一个混乱的混乱,所以我认为后者将是一种侮辱,而前者只是一种方式描述在隔离层中开发的代码。我猜MVC会被认为是编程的一种烤宽面条,但听起来很傻,我永远不会使用它。此外,如果你告诉一个胖胖的程序员,他写了烤宽面条应用程序,那你冒着冒犯这个可怜人的风险。
它也可以参考意大利人写的代码我想:)
答案 4 :(得分:0)
我之前从未听说过烤宽面条代码,但首先想到的是“意大利面条代码”。我的猜测是它的一部分都到处都是,但大多数是一个有凝聚力的单位。意大利面条代码也不错,但还不够好,不会被叫出来。