如何有效地管理Perl模块以进行代码重用?

时间:2008-12-16 09:07:00

标签: javascript perl code-reuse module-management

我的公司使用mod_perl,axkit和apache的组合开发Web应用程序。 我们在unix操作系统中都有大量的Perl模块,javascripts等。

每当我需要编写一个新函数时,我都会尝试重用代码,但事情就是所有的Perl模块和javascripts分散在各个文件夹中。

我讨厌稍后才编写一些代码,发现已经有一个函数做了同样的事情,我当前的方法是尝试grep表名,看看是否有冗余函数,但除此之外,我是几乎只会放弃并编写一个新功能,因为我不想花太多时间搜索并找不到任何东西。

有更好的方法吗?或者甚至更好,我可以安装免费软件工具,它可以帮助我正确管理所有功能和模块,甚至允许开发人员记录评论等。

修改

使用工具检测c ++上的代码重复有this discussion,对于unix平台中的perl代码我们有这样的东西吗?

感谢 〜史蒂夫

5 个答案:

答案 0 :(得分:6)

整理您的源目录,以便每个功能只有一个位置,并且很容易找到。

确保共享命名约定以防止重复。

设计您的模块,以便他们只做一件事 - 并且做得很好。

审核代码以确保名称和位置正确无误。

基于代码索引器提供高效的搜索引擎,以便在已经有功能执行特殊任务时很容易查看。

不要低估概括现有组件的时间,以便可以有效地重复使用它。

文档模块,API文档和/或单元测试。

在团队中进行沟通,以便每个人都能很好地掌握已经编写过的内容,谁拥有或知道谁可以使用/使用模块。

答案 1 :(得分:1)

我相信你有某种形式的版本控制软件(svnMercurial,git,无论VSS是什么,但不是什么?如果你现在没时间得到一个并开始使用它。这样,您至少可以了解您正在使用哪些模块以及代码所在的位置。您还可以使用ctags-like索引已编写(或正在使用)的所有模块。

IDE(尽管我不喜欢这些)也可以帮助查找代码和重构。

答案 2 :(得分:0)

我曾经在一家使用过Perl的公司工作,并遇到过类似的问题。我们提出的解决方案是重新组织文件中的函数,考虑到3层架构(表示,业务和持久性)以及被操纵的元素。

因此,我们在数据库中的每个主表上都有一个perl文件,每个实体都有一个perl文件来操作它们的业务操作,等等......有了这个,很容易避免代码重复,因为你确切知道寻找一个给定的功能。

答案 3 :(得分:0)

这是我非常感兴趣的事情。

使用像svn,git或bazaar这样的简单版本控制软件并不是我想要的。除了这样的系统之外,VCS是强制性的,但它不是这个系统。经过一些研究,我被告知要研究包装才能实现这一目标,我认为,某种包装系统是可行的方法。

如果你想要一个包装系统的例子,请看看debian APT。每个包都有版本描述和源代码的依赖关系,并给出了一个良好的包装系统,你可以像“魔术搜索集方程式修复点”,魔术包装系统将找到一个解决问题的模块。如果您在源代码中包含该包,它还会添加所有缺少的依赖项,例如可能是图形等。

然而,在我的笔记本电脑硬盘死亡之前不久就开始研究,这推迟了进一步的研究和实际结果,但也许你能找到一些有趣的东西(告诉我 nudge,nudge

HTH, Tetha

答案 4 :(得分:0)

如果您的模块包含POD documentation并且安装在公共目录或目录集下,则使用pod2html生成HTML文档应该相对容易。获得HTML文档后,请输入全文搜索索引(带有fts3,MySQL,Lucene,KinoSearch等的SQLite)和一个简单的搜索表单应用程序(CGI或mod_perl),然后就可以开始了。

如果你正在使用trac,那么会有plugin来创建.pod和.pm文件中的trac wiki页面,再次使你的文档易于搜索。