a.t*_*.t. 3 excel vba compiler-errors excel-vba
在模块的特定子例程中找到"大过程"错误后,我正在重构模块中的代码.我很好奇重构在减少编译代码大小方面的效果.
所以我想知道是否有办法在Excel 2016模块中查看子程序的编译代码的大小?
到目前为止,我的尝试仅限于在线搜索确定VBA中已编译模块或子例程大小的方法.
它使我达到了这里列出的VBA限制.它没有提到一种方法来查看编译过程的大小,也没有提到这是否(实际上)可行.
(正如在评论中提到,编译程序的当前最大大小是64K的规定在这里.)
Disclamer - 我很清楚我正在修改的旧代码的缺点.写得不好,我认为比尔盖茨的这句话很好地说明了这一点:
通过代码行测量编程进度就像按重量测量飞机构建进度一样.
我认为重构,并在较短的子程序中打破代码是适当的第一步.为了监控这个过程,结合VBA提出的硬瓶颈,因为Procedure too long- 错误引发了我这个问题.
Mat*_*don 12
不,你做不到.VBA在几个阶段编译,它是部分p代码,部分解释,并且在一天结束时,编译过程的kb大小不是你需要处理的.
你需要紧急阅读有关抽象的内容.触发此编译器错误的过程超过10K行代码.在适当的抽象级别上的健康过程可能比那个小500到千倍(不是开玩笑) - 编译代码的大小绝对没有意义.
如果你担心编译代码的大小,你就不会为人类编写代码.
代码不是为编译器编写的,而是为了运行而运行的运行时环境.代码是为人类维护者编写的,用于阅读,理解,跟踪,调试,修改,扩展等.在没有任何抽象级别的情况下,代码是一个无聊的,令人难以忍受的令人烦恼的一系列可执行语句,总是冗余,低效和烦人容易出错.
您可以使用第三方工具来分析VBA代码.MZ-Tools 3.0是免费的,但最新版本不是.它有一个功能,可以告诉你每个模块的每个过程中有多少行代码,有多少代码被注释掉,是否有未使用的变量等.
Rubberduck是免费的开源,正在积极开发中(免责声明:我拥有项目的存储库),并且具有代码度量功能(不同于代码检查),可以帮助您识别问题最严重的区域(尽管解析10K-衬管模块可能需要一段时间):

行是你的"代码行"度量; Cyclomatic Complexity是代码中不同可能的执行路径的粗略指示(度量在模块级聚合中产生的多少意义是有争议的); 最大嵌套也是"箭头形状"代码可能有多严重的指标.
这些指标中的高值表示您可能需要提取方法.
| 归档时间: |
|
| 查看次数: |
657 次 |
| 最近记录: |