“烤宽面条代码”这个词对你意味着什么?

时间:2009-07-27 12:49:55

标签: language-agnostic software-quality

根据维基百科的说法,该术语最初是由数据库专家Joe Celko在1982年创造的,这里引用his 1997 article来揭示他的意思:“标准[结构化编程]解决方案是用嵌套的IF-THEN-ELSE语句和开关替换GOTO,这些语句和层次结构如此之深并且具有如此多的冗余,以至于您的控制路径看起来就像是一盘烤宽面条。“

然而,

The same Wikipedia entry对术语的定义不同,明确指的是多层应用程序:“......不同的子系统,例如...... Web应用程序代码,业务逻辑和关系数据库。 “随着程序员开发出新的方法和架构,术语的含义也随之发展。

我可以想到“烤宽面条代码”的两个现代定义:

  1. 软件应用程序的层次过多,过度设计或琐碎(显然)
  2. 缺少单元测试且具有适当隔离的软件应用程序层。开发人员只是通过一次切片和消耗多个层来测试系统。
  3. 这个词显然意味着批评(就像你可能通过称之为“意大利面条代码”来批评我的东西)。但这对你来说意味着什么,你何时会使用它?

5 个答案:

答案 0 :(得分:9)

对我来说,这意味着layered for no good reason

答案 1 :(得分:6)

GOTO太多== Spaghetti Code

太多IF-THEN-ELSE / Switch == Lasagna Code

:)

答案 2 :(得分:2)

维基百科Spaghetti code上的

has this to say参考,

  

Lasagna代码是一种程序结构,其特点是几个明确定义且可分离的层,其中每层代码通过定义良好的接口访问下面层中的服务。
  该术语与意大利面条代码相比较,将程序结构与面食进行比较。

     

这个比喻源于烤宽面条的分层结构
  其中不同的成分(肉,酱,蔬菜或奶酪)各自被意大利面条隔开。

答案 3 :(得分:1)

一个做得很好的烤宽面条,我的妻子做的那种,很好的分层和整洁,另一方面,意大利面是一个混乱的混乱,所以我认为后者将是一种侮辱,而前者只是一种方式描述在隔离层中开发的代码。我猜MVC会被认为是编程的一种烤宽面条,但听起来很傻,我永远不会使用它。此外,如果你告诉一个胖胖的程序员,他写了烤宽面条应用程序,那你冒着冒犯这个可怜人的风险。

它也可以参考意大利人写的代码我想:)

答案 4 :(得分:0)

我之前从未听说过烤宽面条代码,但首先想到的是“意大利面条代码”。我的猜测是它的一部分都到处都是,但大多数是一个有凝聚力的单位。意大利面条代码也不错,但还不够好,不会被叫出来。