我一直在写Perl几年了,这是我首选的文本处理语言(许多遗传学/基因组学问题我很容易被减少到文本处理问题)。 Perl作为一种语言可以非常宽恕,可以在Perl中编写非常差的但功能强大的代码。只是在另一天,我的朋友说他称Perl是一种只写的语言:写一次,理解一次,从来没有试过回去修复它。
虽然我有时会犯错误的脚本,但我觉得我也在Perl中写了一些非常清晰和可维护的代码。但是,如果有人问我什么使代码清晰可维护,我将无法给出自信的答案。
什么使Perl代码可维护?或者更好的问题是什么使Perl代码难以维护?让我们假设我不是唯一一个维护代码的人,像我这样的其他贡献者不是专业的Perl程序员,而是具有编程经验的科学家。
解决方法
什么使Perl代码不可维护?几乎任何使任何其他程序不可维护的东西。假设除了用于执行明确定义的任务的短脚本之外,还有以下几个方面:
>全局变量
缺乏分离的问题:单片脚本
>不使用自我记录标识符(变量名称和方法名称)。例如。你应该知道一个变量的目的是从它的名字。 $ c坏$ count更好。 $ token_count好。
>拼写标识符。程序大小不再是首要考虑。
>一个称为doWork的子例程或方法不说什么
>可以轻松地从另一个包中找到符号的来源。使用显式包前缀,或明确导入使用MyModule qw(导入列表)使用的每个符号。
> Perl特定:
过度依赖短期和模糊的内置变量
>滥用子程序原型
>不使用严格而不使用警告
>重建轮子,而不是使用已建立的图书馆
>不使用一致的缩进样式
>不使用水平和垂直的空白来引导读者
等等等
基本上,如果你认为Perl是-f>@+?*<.-&'_:$#/%!
,而且你希望在生产代码中写这样的东西,那么是的,你会有问题。
人们往往会混淆Perl程序员的乐趣(例如,JAPH,高尔夫等等)与Perl程序应该是什么样的东西。