Bha*_*rat 2 scripting perl arguments subroutine
我对Perl很新,并且想知道关于子程序的最佳实践是关于Perl的.子程序可以太大吗?
我现在正在编写一个脚本,它可能需要调用另一个脚本.我应该以子程序的形式将旧脚本集成到新脚本中吗?我需要将一个参数传递给脚本并需要一个返回值.
我猜我必须做一些黑魔法才能从原始脚本中获取输出,所以子程序有意义吗?
编写代码时,避免"黑魔法"总是一个好主意.你永远不想跳过箍,并提出一个不直观的黑客来解决问题,特别是如果以后需要支持该代码.诚然,它确实发生了,我们都对此感到内疚.情况可能会严重影响"只是让工作变得艰难".
关键是,最佳做法始终是使代码清晰易懂.请记住,根据我的经验,Perl代码尤其如此,您在几个月前编写的任何代码也可能是由其他人编写的.所以,即使你是唯一需要支持它的人,也要帮自己一个忙,让它易于阅读.
不要坚持广泛的想法,如"赞成更大的文件更大的文件"或"更喜欢较小的方法/子程序而不是更大的文件"等.这些是确定的好指导方针,但应用指南的精神而不是信件的精神.它.保持代码清洁,易懂和可维护.如果这意味着偶尔的大文件或大型方法/子程序,那就这样吧.只要它有意义.
关键的设计目标是分离关注点.理想情况下,每个子例程执行一个明确定义的任务.从这个角度来看,主要问题不在于子程序的大小,而在于它的重点.如果您的程序需要多个任务,则意味着需要多个子程序.
在更复杂的场景中,最终可能会出现逻辑上属于一起的子程序组.它们可以组织成库,甚至更好的模块.如果可能,您希望避免最终需要相互通信的多个脚本的情况,因为一个脚本将数据返回到另一个脚本的常用机制很繁琐:第一个脚本写入标准输出,第二个脚本写入标准输出脚本必须解析该输出.
几年前,我开始从事一项工作,要求我构建大量的命令行脚本(至少,结果如何;最初,我们正在构建的内容尚不清楚).我当时很缺乏经验,并没有很好地组织代码.事后看来,我应该从我编写模块而不是脚本的前提出发.换句话说,真正的工作将由模块完成,并且脚本(用户在命令行上执行的代码)将保持非常小的前端以便以各种方式调用模块.这将有助于代码重用和所有这些好东西.生活和学习,对吗?