2

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

每当我需要编写一个新函数时,我都会尝试做一些代码重用,但问题是所有 Perl 模块和 javascript 都分散在文件夹中。

我讨厌写一些代码,只是后来发现已经有一个函数做了同样的事情,我目前的方法涉及尝试 grep 表名以查看是否有冗余函数,但除此之外,我几乎会放弃并编写一个新函数,因为我不想花太多时间搜索并一无所获。

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

编辑

有关于使用工具检测 c++ 上的代码重复的讨论,对于 unix 平台中的 perl 代码,我们有类似的东西吗?

谢谢~史蒂夫

4

5 回答 5

6

组织您的源目录,使每个功能只有一个位置,并且很容易找到。

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

设计你的模块,让他们只做一件事——并且把它做好。

检查代码以确保名称和位置正确。

提供基于代码索引器的高效搜索引擎,以便轻松查看是否已经有函数在执行特殊任务。

不要低估泛化现有组件以便有效重用它的时间。

使用 API文档和/或单元测试记录模块。

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

于 2008-12-16T10:25:50.407 回答
1

我相信您有某种形式的版本控制软件(svnMercurial、 git 等等,但不是 VSS)?如果你不这样做,现在是时候买一个并开始使用它了。这样,您至少知道您正在使用哪些模块以及代码在哪里。您还可以使用类似ctags 的方法来索引您已编写(或正在使用)的所有模块。

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

于 2008-12-16T10:19:27.737 回答
0

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

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

于 2008-12-16T10:28:53.100 回答
0

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

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

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

然而,对此的研究是在我笔记本电脑的硬盘驱动器死机前不久开始的,这将进一步的研究和实际结果推迟到这个方向,但也许你能找到一些有趣的东西(告诉我轻推,轻推

HTH,特萨

于 2008-12-16T10:37:32.023 回答
0

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

如果您使用 trac,则有一个插件可以从您的 .pod 和 .pm 文件创建 trac wiki 页面,同样,使您的文档易于搜索。

于 2008-12-16T14:47:43.797 回答