Perl模块开发与使用指南
1. 声明式导出
在Perl中, Exporter 模块多年来一直为开发者服务,但它存在一些缺陷。
- 接口问题 :其接口不美观且难以记忆,导致开发者常进行不规范的复制粘贴操作。该接口依赖于存储在包变量中的字符串形式的子程序名,这不仅带来了使用包变量的固有问题,还涉及符号引用的问题。
- 冗余问题 :每个子程序至少需要命名两次,一次在声明时,另一次在一个或多个导出列表中。而且存在拼写错误的风险,可能导致子程序未被正确导出。
- 变量导出问题 : Exporter 允许从模块中导出变量,但将变量作为接口的一部分是不良实践。导出的变量会忽略 use strict ,可能掩盖代码中的其他问题,还会暴露模块的内部状态,使其容易在未明确指定模块名的情况下被修改。
为了设置一个具有完整导出功能的模块,包括默认导出、按需导出和标记导出集,需要编写大量的基础代码,这可能会掩盖实际要实现的功能。
例如,使用 Exporter 设置一个模块的导出功能:
package Test::Utils;
use base qw( Exporter );
our @EXPORT = qw( ok );
# Default export
our @EXPORT_OK = qw( skip pass fail );
# By explicit r
超级会员免费看
订阅专栏 解锁全文
704

被折叠的 条评论
为什么被折叠?



