【发布时间】:2013-08-21 18:56:50
【问题描述】:
我对“意大利面条代码”的理解是一个代码库,它从一个代码块跳转到另一个代码块,没有逻辑和清晰的目的。最常见的违规行为似乎是 GOTO 语句。
我目前正在阅读/参考 Clean Code: A Handbook of Agile Software Craftsmanship 的功能章节。作者虽然承认自己,但对函数的大小非常严格。我理解保持函数较小的想法,但是,他建议它们应该在 5 行左右。虽然类当然变得更加清晰易读,但我害怕通过编写更小的函数来创建意大利面条式代码。较小的函数似乎也无意中创建了更高的抽象。
什么时候代码变成意大利面条代码? 太抽象有多抽象?任何答案都会很有帮助。
顺便说一句,尽管这是我第一次发布问题,但我是 Stack Overflow 的长期追随者,因此也欢迎对我的帖子提出任何建议。
非常感谢!
【问题讨论】:
-
这在程序员交流而不是堆栈上可能会更好。我会投票给你,尽管你即将被投票下地狱。
-
作者给你一个经验法则。但是,没有硬性规定。您可能正在处理需要超过 5 行的算法。但是,当您看到自己重复代码或无法重用现有功能时,是时候进行重构并可能拆分一些功能了。
-
@AMR 感谢您的支持。看了程序员交流之后,我必须同意你的看法。这绝对是一个概念性问题。我很抱歉没有事先弄清楚差异。
-
@Tarik,感谢您的回复。当我阅读这些类型的书籍时,“没有硬性规则”对我来说很快变得显而易见。感谢您的建议,我会牢记重用和重复。
-
在生活中,你总是需要权衡取舍。您可以在设计应用程序时考虑重用,并创建复杂的 API 以确保无论如何,您都可以轻松插入下一个案例。这需要更多的时间来设计和实施。很难让你的经理相信你正在工作,但没有快速交付那个简单的应用程序。在另一个极端,你编写了一个可以完成这项工作但很难更改的单片代码。你的经理很高兴,你很快就把那个软件弄出来了。然而,当需要对其进行修改或添加功能时,它会变得越来越难。
标签: function coding-style refactoring abstraction