物极必反,滥用闭包的结果就是回归结构化编程-阿里云开发者社区

开发者社区> 最美的回忆> 正文

物极必反,滥用闭包的结果就是回归结构化编程

简介:
+关注继续查看

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

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

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
阿里巴巴编程之夏2020入选结果公示
简介: 阿里巴巴编程之夏2020入选学生名单
8779 0
阿里云服务器怎么设置密码?怎么停机?怎么重启服务器?
如果在创建实例时没有设置密码,或者密码丢失,您可以在控制台上重新设置实例的登录密码。本文仅描述如何在 ECS 管理控制台上修改实例登录密码。
10017 0
ASP.NET Core 动作结果 - ASP.NET Core 基础教程 - 简单教程,简单编程
原文:ASP.NET Core 动作结果 - ASP.NET Core 基础教程 - 简单教程,简单编程 ASP.NET Core 动作结果 前面的章节中,我们一直使用简单的 C# 类作为控制器。
832 0
[PeterDLax著泛函分析习题参考解答]第7章 Hilbert 空间结果的应用
1. 对测度是 $\sigma$ 有限的情形证明 Radon-Nikodym 定理.     证明: 设 $\mu,\nu$ 均为 $\sigma$ 有限的非负测度, 则存在分割 $$\bex X=\cup_{i=1}^\infty X_i=\cup_{j=1}^\infty Y_j \eex...
458 0
如何把NMAP扫描结果同步到Elasticsearch?
本文讲的是如何把NMAP扫描结果同步到Elasticsearch?,如果您对信息安全感兴趣,那么您可能熟悉端口扫描工具nmap。扫描器是用于网络发现和安全审计的免费和开源(许可证)实用程序。许多网络管理员也会使用它发现网络以及监视主机或服务正常运行时间等任务。
2047 0
阿里云服务器如何登录?阿里云服务器的三种登录方法
购买阿里云ECS云服务器后如何登录?场景不同,阿里云优惠总结大概有三种登录方式: 登录到ECS云服务器控制台 在ECS云服务器控制台用户可以更改密码、更换系.
13818 0
来之不易的美团面试,结果居然挂了……(附面试答案)
一面 自我介绍 答:自我介绍是面试中唯一的自己主动介绍自己的环节,一定要好好把握好,你数据结构学的号可以手撕一个红黑树你就说我数据结构掌握地很好,反正就是要把自己的优势凸显出来,比如自己对于java的知识较熟悉,我介绍完自己的本科经历以后,我就说我是保...
2701 0
阿里云ECS云服务器初始化设置教程方法
阿里云ECS云服务器初始化是指将云服务器系统恢复到最初状态的过程,阿里云的服务器初始化是通过更换系统盘来实现的,是免费的,阿里云百科网分享服务器初始化教程: 服务器初始化教程方法 本文的服务器初始化是指将ECS云服务器系统恢复到最初状态,服务器中的数据也会被清空,所以初始化之前一定要先备份好。
7344 0
2286
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
《2021云上架构与运维峰会演讲合集》
立即下载
《零基础CSS入门教程》
立即下载
《零基础HTML入门教程》
立即下载