博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
物极必反,滥用闭包的结果就是回归结构化编程
阅读量:7079 次
发布时间:2019-06-28

本文共 790 字,大约阅读时间需要 2 分钟。

烦透了闭包。目前在修改一个项目,该项目的原始代码中使用了大量的闭包。一个套一个,甚至套了三四层,那函数啊,那局部变量啊,叫一个多啊,那执行流程啊,叫一个乱啊。

下面是个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个。

这不就是最古老最邪恶的结构化编程的变种吗!

对这个函数来说,大量使用闭包,存在三个问题:

·阅读难——执行流程上串下跳的;

·调试难——调用栈结构层次就像天书一样;

·重构难——外部变量太多。

本文转自xiaotie博客园博客,原文链接http://www.cnblogs.com/xiaotie/archive/2010/06/04/1751704.html如需转载请自行联系原作者

xiaotie 集异璧实验室(GEBLAB)

你可能感兴趣的文章
比较使用sql*loader的直接加载方式和传统加载方式的性能差异
查看>>
MongoDB复制集(Replication Sets)介绍
查看>>
javax.persistence.NoResultException: No entity found for query
查看>>
网络常见劫持杂谈
查看>>
Mysql完全备份
查看>>
使用Java窃取sina大片
查看>>
榕树下单身作者大征募!
查看>>
SQL Server T-SQL高级查询
查看>>
Python自省(反射)指南[转]
查看>>
阿里巴巴公布了一份最新的AI成绩单
查看>>
TableCell自适应表格高度
查看>>
Azure ARM (4) 开始创建ARM Resource Group并创建存储账户
查看>>
jQuery学习笔记开篇
查看>>
基于Xcode5的本地化
查看>>
【Linux高级驱动】linux设备驱动模型之平台设备驱动机制【转】
查看>>
Windows Embedded Standard开发初体验(一)
查看>>
与二进制有关的几道面试题
查看>>
这样的程序员创业有戏
查看>>
[翻译]ADO.NET Entity Framework Beta2(八)/快速入门(实体框架)(3)/生成学校实体数据模型...
查看>>
单机最大tcp连接数
查看>>