zoukankan      html  css  js  c++  java
  • 物极必反,滥用闭包的结果就是回归结构化编程

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

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

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

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

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

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

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

     

  • 相关阅读:
    教师派10
    教师派9
    简单理解socket(AF_INET&SOCK_STREAM,SOCK_DGRAM)
    Deepin安装MySQL(MariaDB)不提示设置密码问题(密码为空)
    经典排序算法-附python代码
    Linux虚拟环境virtualevn
    linux安装虚拟环境
    deepin安装虚拟环境virtualenv
    deepin安装虚拟环境virtualenv
    把握AFNet网络请求完成的正确时机
  • 原文地址:https://www.cnblogs.com/xiaotie/p/1751704.html
Copyright © 2011-2022 走看看