perl - 我应该如何重组大型 Perl 脚本?

标签 perl refactoring abstraction

我有一个大约 1000 行的大 Perl 脚本。该脚本接受一些参数并直接运行。没有模块,没有功能。该脚本可以分为三个部分,初始化部分,参数解析部分和工作部分,但我不知道该怎么做。一切都必须保存在一个文件中。拜托,谁能给我指导/建议如何构建我的 Perl 脚本?

谢谢。

最佳答案

您在 上寻求建议如何重构你的脚本,但你似乎不理解 为什么重构它。没有 为什么 , 如何不会对你有多大好处。和 为什么 , 如何可能会很自然地脱落。

如果您的脚本运行良好且无需修改,并且您对它所做的一切就是运行它,那么您可能没有理由重构它——我是从鄙视长例程的角度说的。但...

如果它有问题

如果你试图在你的 1000 行程序中找到一个错误,你需要做一些艰苦的工作。问题可能在任何地方。将其分解成更小的部分,以便您可以在不同阶段验证输入和输出 - 理想情况下,为更小的部分编写测试。细粒度的单元测试会告诉你什么不起作用、错误的性质以及错误存在的位置。

如果你需要修改它

如果您需要更改脚本以适应新的图形格式,或者利用多个处理器,或者将其事件记录到日志中 - 如果需要修改或扩展的程序元素更好,您会发现更容易扩展孤立。

如果您想向其他人解释或炫耀

如果将想法分解为离散的方法,您会发现将脚本中的想法传达给其他开发人员会容易得多。

所以,有一些原因为什么您可能会选择重构。如果其中任何一个适用,则进行相应的重构; 如何会自然退出。 Extract Method可能是你最好的 friend 。

关于perl - 我应该如何重组大型 Perl 脚本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3576897/

相关文章:

debugging - 如何避免调试器专用变量?

programming-languages - 泄漏抽象的含义?

bash - 在路径变量中使用带空格的 perl system() 查询

linux - 使用bash替换文本文件中的字符串

perl - 在 Perl 中识别矩阵中的子数组

c# - F# 看不到 C# 可序列化抽象类的抽象属性

haskell - 我如何在 haskell 中抽象这个模式?

perl - 在 Perl 中重新加载模块并重新定义子例程

java - 使用嵌套枚举重构方法

winforms - 将 Form.ShowDialog() 代码重构为 MVP