物极必反,滥用闭包的结果就是回归结构化编程
烦透了闭包。目前在修改一个项目,该项目的原始代码中使用了大量的闭包。一个套一个,甚至套了三四层,那函数啊,那局部变量啊,叫一个多啊,那执行流程啊,叫一个乱啊。
下面是个draw函数,730行,把它的结构提取出来,有下面的树:
draw 15变量
function0 1变量
function1 13变量
function11
function12
function13
function14
function141
function142
function15
function151
function1511
function16
function161
function17
function18
function19
function1A
function2
function3 8变量
function31
function32
function4 26变量
function41
function42
function43
function44
function45
function46
function47
function48
如果只看draw作用域,那么draw下的15个变量对于从函数function0-function48来说就是外部变量。而对于function41-function48来说,外部变量就有26+15=31个。
这不就是最古老最邪恶的结构化编程的变种吗!
对这个函数来说,大量使用闭包,存在三个问题:
·阅读难——执行流程上串下跳的;
·调试难——调用栈结构层次就像天书一样;
·重构难——外部变量太多。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义