我是总部位于东北一所大学的学术联盟的唯一开发者。我的所有开发工作都涉及内部工具,大部分是 Java 工具,因此没有任何内容向公众发布。现在,我觉得我的开发工作流程非常“业余爱好者”,与您在经验丰富的软件开发公司看到的完全不同。我倾向于说这并不重要,因为无论如何我是唯一的开发人员,但做出一些改变也没什么坏处,如果没有其他原因,除了让我的工作更轻松一点并获得一些我的简历上有更多技术。现在我的工作流程是这样的:

  • 我的大部分开发工作都是在笔记本电脑上的 Eclipse 中完成的。所有内容都保存在我的笔记本电脑本地,我不使用 VCS,也没有真正备份我的代码(除了偶尔通过电子邮件发送给自己,以便我可以在另一台计算机上看到它 - 是的,我告诉过你我的开发环境需要工作)。

  • 当我完成一个项目并想要部署它或者只是想测试它时,我使用 Eclipse 中的内置 Jar 工具来制作项目的可执行 .jar。如果我使用外部 .jar 库,我会使用 Fat-Jar 插件将这些 .jar 包含在我的可执行 .jar 中。

  • 创建 .jar 后,我通过 SFTP 手动将其上传到服务器并使用类似的内容进行测试 java -jar MyProject.jar.

哦,是的,我有没有提到我不进行单元测试?

我想首先解决的最明显的问题是缺乏源代码控制。我喜欢 git,因为它具有分布式特性,但它似乎与 Eclipse 集成得不太好,而且我听说它在我的主要开发操作系统 Windows 上运行得不太好。所以,我倾向于 SVN,我对此确实有一些经验。我确实有自己的个人服务器,我想我会用它来进行源代码控制,因为我宁愿成为自己的管理员,也不愿与大学官僚机构打交道。我以前在设置 SVN 时遇到过一些麻烦,但我会再试一次。也许我还会安装 Trac 或 Redmine 之类的东西来进行错误跟踪、待办事项列表等?

构建和部署怎么样?必须有一种比使用 Fat-Jar 并手动将我的 jar 上传到服务器更好的方法。我听说过 Ant 和 Maven 等工具 - 这些是否适用于我想做的事情?我怎样才能开始使用它们?

我想我最终也想将单元测试与 JUnit 集成。尽管可能应该如此,但这不是我现在主要关心的问题,因为到目前为止我的应用程序还不是很复杂。我现在真的很想致力于简化和精简我的工作流程,然后我将轻松进行单元测试。

抱歉问了这么长的问题。我想我的问题归结为,对于一个单独的开发人员来说,我可以/应该使用哪些工具和方法不仅可以让我的工作更轻松,而且还可以让自己接触到一些技术,这些技术是专门开发中所需要的必要知识房子?


编辑:感谢迄今为止的精彩回答。我并不是说我想让我的工作流程“企业化”只是为了这样做,而是为了让我的工作更简单,并掌握一些通常在企业开发环境中使用的技术。这就是我的意思。

有帮助吗?

解决方案

在我看来,您实际上非常清楚自己需要做什么。

必须使用 Subversion(或其他 VCS)。尽管为与工作相关的代码设置一个单独的 SVN 存储库而不是使用个人存储库可能是明智之举。

您可以使用 Subclipse 之类的插件将 Subversion 与 Eclipse 集成,我发现该插件效果很好。

我肯定会使用 Ant 或 Maven - 我更喜欢 Ant,因为它更灵活,而且我认为它比 Maven 更适合您的开发风格。但您可能还想了解一下 阿帕奇常春藤, ,它处理依赖管理。

基本上,您设置了一个运行编译、构建和部署步骤的 ant 任务 - 这样,当您创建最终的 JAR 包时,您可以确保它已经过单元测试,因为它是 ant 脚本的一部分。开始使用 ant 的最佳方法是查看一些示例,并通读 手动的.

至于单元测试 - 您可以逐渐建立单元测试。我建议将 JUnit 与代码覆盖率工具结合使用,例如 科贝尔图拉 (易于设置)-它将帮助您了解测试覆盖了多少代码,并且是测试有效性的指标。

设置像 Trac 这样的东西也可能是值得的 - 能够跟踪错误很重要,而且 wiki 对于文档来说非常有用。

换句话说,所有这些听起来似乎您都在正确的路线上,您只需要开始使用其中一些工具即可!

其他提示

如果您确实对分布式源代码控制感兴趣,我建议您查看 市场. 。其类似 GIT 的分布式源代码控制是围绕执行非常高质量的合并而设计的。开箱即用,它适用于包括 Windows 在内的所有平台,并且它们具有 乌龟BZR 客户。

但实际上,任何源代码控制总比没有好。如果您是唯一的开发人员,那么就不需要比 SVN 更复杂的东西了。大公司和项目一直使用 SVN,几乎没有什么问题。

就单元测试而言,您应该熟悉 联合单元. 。事实上,您了解单元测试并且知道您应该这样做,但仍然比大多数临时开发人员领先几步。

使用版本控制。时期。SVN有 伟大的 与 Eclipse 和 Windows 集成。获取适用于 Windows 的 TourtisSVN 客户端,并在 Eclipse 中使用 subclipse 插件。

我建议您购买一个外部硬盘或使用您公司的一台服务器来放置您的存储库并经常进行备份。Subversion 也非常适合部署和升级。只要学会如何去做,你就永远不会回头:)

至于单元测试,有些人会说这是可行的方法,但我还没有找到足够的证据来自己开始实践。如果有人在这个问题上能够说服我,那么请这样做!

另外,不要试图“企业化”你的工作流程——而是要让它变得更好。适用于大型团队和公司的实践可能并不适合您。我自己几乎是唯一的开发人员,并且了解您所处的情况。尝试一切,并在一段时间后只保留感觉自然的东西。

但请务必尝试一下 SVN!如果您的公司有一个带有 apache 的 LINUX 服务器,请查看是否可以使用 DAV-SVN 在那里设置您的服务器。

:)

我想你回答了你自己的大部分问题。

  • 源头控制:选择 SVN - 安装方便,与 Eclipse (subclipse) 集成良好。
  • 使用 Ant 构建项目并部署它(SCP/SFTP 任务)
  • 将所有设置(Eclipse 项目设置、构建 xml 等)保留在 SVN 中。
  • 使用 Bugzilla 跟踪您的错误/问题/请求/想法。

开始使用版本控制将非常有益。现在就开始吧,不要拖延!Git 的发展速度非常快,并且已经有一个 TortoiseGit 正在开发中。SVN 仍然是一个很好的使用标准。我还没有使用过 Mercurial,但这是另一个值得研究的 VCS。

除此之外,我不明白为什么你的工作流程必须是有进取心的。它必须高效且舒适。也就是说,我认为您应该尝试使用简单的文本编辑器并从命令行进行编译。世界上大多数最好的程序员仍然使用它而不是 IDE,它将帮助您了解您最喜欢的 IDE 下的流程。

看看务实的程序员 实用的入门套件.

它向您传授大学/等机构所教授的软件开发的重要基础知识。似乎放弃了,比如版本控制、单元测试和项目自动化(按顺序),并且以一种非常平易近人的方式进行。

它将为您提供继续前进的坚实基础。

看看@Matt Raible 的Appfuse。

它结合了 Maven 和单元测试。

http://raibledesigns.com/rd/tags/appfuse

虽然你把它作为最后一件事,但我认为你应该立即开始使用 jUnit。

究其原因,大概是 最简单的 您已经确定的目标,并且这些工具几乎肯定已经内置到您的 Eclipse 构建中。

在项目中创建一个名为“jUnit”的新文件夹。

假设您有一个 Employee 类,其中包含 setAnnualSalary() 和 getMonthlySalary() 方法。

右键单击jUunit文件夹,新建->“jUnit测试用例”。这将创建一个新类。称之为 TestEmployee。像往常一样,Eclipse 会为您生成样板文件。

添加一个名称以“test”开头的 void 方法:

public void testSalaryCalc() {
    Employee emp = new Employee("John Doe");
    emp.setAnnualSalary(12000);
    assertEquals(1000,emp.getMonthlySalary());
}

右键单击“运行方式”->“jUnit 测试”。(第一次 Eclipse 可能会提示您为项目进行一些设置。按照它说的做就行了。)

如果员工工作正常,您将看到一个绿色条。破坏 Employee 类,再次运行测试,您将看到一个红色条,以及告诉您失败原因的输出。

恭喜:你正在单元测试!

右键单击父目录并选择“Run as jUnit test”将运行该目录中的每个 Testcase 类。稍后您可以将 jUnit 合并到您的构建过程中,但现在不用担心。

自动完成将向您显示所有变体 assert() 您可以使用。您可以阅读它,并瞄准在通过测试用例的实现之前编写测试用例的实践。但只要做上述简单的事情就会给你带来很大的好处。

一旦您设置了版本控制和一些单元测试,我会考虑一个持续集成服务器(您想要企业化,对吧?)。

即使您是并且仍然是唯一的开发人员,这也可能会帮助您发现一些错误。您忘记签入的事情或类似的事情。CI 服务器定期检查您的所有源代码,进行干净的构建并运行您的所有测试。如果出现错误,它还会与您联系。

这可以保证您(或任何其他人)能够检查您的代码并构建/运行您的项目。

我建议看一下 哈德逊

正如其他人所说,您已经清楚地知道自己需要做什么。VCS 是必须的,CI 或错误跟踪可能有点过分(对于单个开发人员来说,电子表格可能足以进行错误跟踪)。

可能对您大有裨益的一件事是保持有组织的产品待办事项列表。在单独开发中,我发现保持专注于高优先级功能并避免功能蔓延是我最大的挑战之一。保持积压工作有很大帮助。它不必只是按优先顺序列出的功能列表以及有关每个功能范围的一些注释。在我的工作场所,我们将这些信息保存在 Trac 中,但在这里,您可能只需要电子表格即可。

我想添加一个用于单元测试的插件,特别是测试驱动开发(TDD)。 肯特·贝克的书 是一个很好的起点。我发现 TDD 帮助我保持诚实并专注于我真正需要做的事情,特别是在没有 QA 的单一开发人员项目上。有时,代码看起来就像是自己编写的。

您得到了一些非常可靠的答案,所以在简短的文章中添加了一篇关于测试驱动开发的文章的链接,这是一种敏捷实践,在您的简历中看起来很不错。时分双工

如果您正在运行 Windows Server,并且想要在其中放置 SVN 服务器,请使用 可视化SVN 作为服务器。它的设置和使用非常简单,它支持基本身份验证和 Windows 身份验证。它也是免费使用的。

Eclipse 有相当多的模块可以与 SVN 服务器集成,因此请使用其中之一,或者已经建议的 Tortoise SVN。

之前的所有评论几乎涵盖了您可能需要的所有内容:-)

我想添加另一种关于如何开发的方法(开发工作流程)。

我建议您阅读以下文章,尽管这是一个 git 工作流程,但您可以将相同的想法用于您可能使用的任何其他工具。

http://nvie.com/posts/a-successful-git-branching-model/

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top