从哪里开始构建真正的代码库?

时间:2010-07-08 13:01:40

标签: language-agnostic code-reuse code-organization codebase

目前,我有一组或多或少有组织的项目,我工作或工作。有些是重构的,有文件记录和单元测试,有些则没有。

当我想重用我之前编写的代码时,我花了几分钟时间搜索我编写此代码的项目,而不是将此代码复制粘贴到新代码中,重构,记录和单元 - 测试是否需要。

这很难看,因为它需要做额外的工作,记住写的内容和地点,以及(可能是最丑陋的)跨项目复制代码。在没有通用代码库的情况下与其他开发人员合作也是一个问题。

现在,我想创建一个代码库,但我对此一无所知,并且从未在任何公司看到过严重的代码库。

那么从哪里开始?是否有书籍或在线文档解释如何创建此类代码库或描述现有或虚构的代码库,它是如何工作的,如何维护等等?

3 个答案:

答案 0 :(得分:0)

使用版本控制服务,例如Google CodeGitHub。这样您的代码就可以在线备份,如果需要,您可以恢复到旧版本。

答案 1 :(得分:0)

首先,要认识到这是一项重大的工作,需要其他开发人员和管理层的参与。在重新组织代码库时,您可能需要停止处理新功能,这几乎不是管理的选择。即使提到它们也可能很糟糕。 “我们可以把这个关闭,直到重新组织后,”随后是“我们不能做的重新组织,直到这一块做”,并且两个大任务和海誓山盟重新组织的等待。这是管理功能的死锁,而且很难解决。

继续前进,您需要与您的团队坐下来确定您的产品是什么,它们是如何构建的,重叠的位置以及产品如何从这种重复使用中受益。您需要仔细检查产品的构建结构,并重构它以包含您的commons-library(您即将构建的)。

继续前进,您需要隔离依赖关系。不要让公地依赖项目。如果项目(projB)很有可能在将来最终依赖它(projA),那么不要让项目依赖(projA)另一个项目(projB)。循环依赖会导致牙齿的哭泣和咬牙切齿。

答案 2 :(得分:0)

我认为你指的是可重用的库。它有点依赖于语言,因为带有链接器和编译器的语言将删除不用于使可交付成本变小的代码,而实时编译或解释语言则不会因为加载整个库而浪费资源。

它的长短是看你的代码,实现常用的任务和使用的参数。添加一点空间进行更改,并创建一个界面,隐藏所有功能。正确定义界面是最重要的部分。尽量避免函数调用的集合,而是在接口后面创建相关的函数,然后在每个操作任务中创建一个接口 - 您正在尝试将工作拆分为操作。

接口解决方案将解析(重构工作的)实现和使用该接口的工作。这将有助于将公共代码与项目代码分离,从而允许以不同的速率进行开发。

尝试将有关特定作业或任务的所有相关信息分组到界面后面,这样界面就不会相互依赖。

有关接口的一些有用链接。一些链接谈论面向对象的语言,但原则和想法可以应用于任何其他类型的语言。

http://en.wikipedia.org/wiki/Interface_%28computer_science%29#Software_interfaces_in_object_oriented_languages

http://en.wikipedia.org/wiki/Interface_%28computer_science%29#Programming_against_software_interfaces