我已经写了几年Perl了,它是我文本处理的首选语言(我工作的许多遗传学/基因组学问题很容易减少到文本处理问题)。 Perl作为一种语言可能非常宽容,并且可以在Perl中编写非常差但功能强大的代码。就在前几天,我的朋友说他称Perl是一种只写的语言:写一次,理解它一次,并且永远不会尝试回去并在它完成后修复它。
虽然我有时会编写糟糕的脚本,但我觉得我还在Perl中编写了一些非常清晰且可维护的代码。但是,如果有人问我是什么使代码清晰可维护,我将无法给出自信的答案。
什么使Perl代码可维护?或者更好的问题是什么使得Perl代码难以维护?让我们假设我不是唯一一个维护代码的人,而且像我这样的其他贡献者不是专业的Perl程序员,而是具有编程经验的科学家。
解决方法
是什么让Perl代码无法维护?几乎任何使其他程序无法维护的东西。假设除了用于执行定义良好的任务的短脚本以外的任何内容,它们是:
>全局变量
>缺乏关注点分离:单片脚本
>不使用自我文档标识符(变量名称和方法名称)。例如。你应该知道变量的目的是什么。 $ c坏。 $数量更好。 $ token_count好。
>拼出标识符。程序规模不再是最重要的问题。
>一个名为doWork的子程序或方法没有说什么
>可以轻松地从其他包中找到符号来源。使用显式包前缀,或通过使用MyModule qw(导入列表)显式导入使用的每个符号。
> Perl特定:
>过度依赖捷径和晦涩的内置变量
>滥用子程序原型
>不使用严格而不使用警告
>重新发明轮子而不是使用已建立的库
>不使用一致的缩进样式
>不使用水平和垂直空白来指导读者
等等等
基本上,如果你认为Perl是-f>@+?*<.-&'_:$#/%!
,并且你渴望在生产代码中写这样的东西,那么,是的,你会遇到问题。
人们倾向于混淆Perl程序员为了娱乐而做的事情(例如,JAPH,高尔夫等)以及Perl程序应该看起来的样子。