文档章节

每个项目最重要的十件事 转帖

韭菜根
 韭菜根
发布于 2011/04/13 11:48
字数 1629
阅读 1145
收藏 14

1,版本控制,推荐git

2,db,推荐hsqldb

3,web server 推荐 jetty

4,ssh推荐nutz

5,项目管理推荐jira

6,持续build 推荐ant

7,其他的 如:持续集成服务器,代码测试和覆盖率,schema 自动模式 hibernate(??),还有简易的安装模式

除第七条外,其他的都在做。

下一步就是学学 第七条里面所有的内容


 这是我在做每个项目时的明细表,我强烈建议您也这样做。原因是:(1)新的开发者很快的就能够加快这个项目的进程,(2)用户能够容易的安装你的产品,而且也很容易去维护。 


   1.版本控制:应该说您需要有某种形式的版本控制系统。如今的版本控制系统应该选择Subversion ,您只需要一台服务器主机。开放源代码的项目时,我使用code.google.com    ,商业项目时我使用Hosted-Projects 。[url= http://hosted-projects.com]Hosted-Projects[/url],每月只需几美元,你在网上有一个备份。您需要检查你的repository,也包括所有的依赖库。 

  2.命令行编译脚本:我大部分的时间都在用Eclipse,他可以为我做所有的编译,单元测试和代码覆盖(EclEmma  )。不过您需要命令行脚本去不断的build(通常是使用Ant   脚本)。你的脚本应分为: 
          1. 编译代码 
            2.编译测试 
            3.生成javadoc 
          4.运行测试与代码覆盖:我使用Emma   或cobertura 。 
            5.生成报告:测试的通过/失败和覆盖 
            6.建立一个分布的JAR。 

  3.连续Build:我见过很多项目,由于储存库的头部并没有被编译,导致无休止的生产力损坏。始终有一个规则,无论如何至少要让存储库编译(通过测试更为理想的)。使用持续集成服务器,例如cruisecontrolHudson。我宁愿选择[url= https://hudson.dev.java.net/]Hudson[/url],因为安装它很简单,而且功能非常强大,为您的上层管理提供了很多很好的图形显示。您要连续获得JARs,javadoc ,测试报告,覆盖面的报告它能提供生成的脚本。对于code-base的状态基本上没有疑议,如果你的老板想尝试最新的代码,他可以下载继续Build。 

  4.自动分级推动:设置连续Build,如果测试通过就自动的将代码转到分级服务器。我通常会使用Tomcat 服务器,只需要更新Web-INF目录与最新的代码,[url= http://tomcat.apache.org]Tomcat[/url] 就会自动的告知新的文件和刷新。这给了人们展示产品的平台。您可以让您的QA使用这个服务器,也可以使用单独的一个。我经常会有很多的自动化测试,所以我将网站直接给客户,并告诉他们这是“Alpha”服务器。这是非常有用的,当您的工作的一项功能完成,客户得到这一部分,对该功能的意见能给你正面的推动,如果到最后客户才能看到,项目就很难进行改变。 

5.测试和覆盖:即使您是新的自动化测试和单元测试,我仍建议你还是要按照清单上来做。自动化的测试个给下个阶段带来了整体的进步。您从自动化的测试得到的好处是巨大的,并且关于测试的介绍也出版了书籍,所以我们不在这里详细的讲解。 

6.默认的嵌入式Web服务器 :如果您正在建设一个Web应用程序,我推荐Jetty 作为您的Web容器。 Jetty 最酷的地方是您可以在您的main函数中新建服务。使用Tomcat 时,你要导入一个war文件,并将它添加到Tomcat  的目录中,然后等待Tomacat “安装” ,这样就会比较麻烦。但使用Jetty 您可以通过一个main函数开始您的应用(就像一个正常的桌面APP )并通过你的main函数来启动Jetty 。您的开发者更容易去开发/调试,您的客户也更容易去部署。 

7.默认情况下嵌入式数据库 :没有什么比一个复杂的数据库安装说明更复杂。所以我使用一个嵌入式数据库,例如HSQLDB 。 在开发和测试中,我让系统采用一个内存数据库,然后我才使用这个数据库的硬盘版本。 但在这两种情况下客户/开发做的没有不同,这是最重要的。如果生产环境需要大负载,我再提供命令行选项,切换到外部数据库如Oracle数据库。 

8.自动安装模式 :应用程序启动的第一件事就检查schema是否安装。 如果没有它会自动安装模式。 我通常使用的Hibernate ,如果需要他会为我做所有的事,升级架构,以较新的版本。所以在数据库中我从来没有担心过架构问题。 

9.guice 依赖注入 :如果您想要一个可维护性,可测性和容易理解的code-base,您需要使用依赖注入 ( DI    )作为一个设计模式。一个自动化的DI框架,使您的工作更轻松。我使用guice我想这是最先进的DI投资,同样还有picocontainer 和spring 。 

10.易于安装/运行 :现在考虑的是让顾客更容易的去尝试你的产品。 我喜欢给我的客户看一个JAR文件,并告诉他们“双击”来启动JVM , Web服务器,数据库,安装架构,并推出网络浏览器(基于本地)。或您的应用通过Java Web Start   开始,这样你就可以在web页面中一键式安装,这样就不需要安装手册了。 

    a)把主要class放在JAR MANIFAST,这样只要双击就可以加载你的应用。 

    b)把所有的JAR依赖放在主要的JAR文件中,使用JarJar   或者One-Jar-Classloader     。 

    c)给应用提供:内存数据;安装schema; 加载Web的容器; 安装自动提供一个admin用户等等…… 

这给您带来了什么好处?您将有快乐和富有成效的开发流程和快乐的顾客,而且可以很容易为你的产品吸引到客户。

© 著作权归作者所有

共有 人打赏支持
韭菜根

韭菜根

粉丝 73
博文 27
码字总数 12032
作品 1
海淀
程序员
私信 提问
加载中

评论(3)

韭菜根
韭菜根

引用来自“窦培源”的评论

云里雾里, 技术都挺新的。合适做项目么

当然适合做项目,这技术都不新了,再不学都要被淘汰了
韭菜根
韭菜根
当然适合做项目,这技术都不新了,再不学都要被淘汰了
窦培源
云里雾里, 技术都挺新的。合适做项目么
参加工作后你们还会这样每天做工作日志吗?

上学时候养成了记日记的习惯,工作后虽然工作日志像流水账,但真的感到好脑子不如烂笔头,某年某月某日自己做了哪些工作或者有过什么事件,只需打开日记便一目了然,回忆的碎片逐渐清晰起来。...

明哥聊求职
2018/03/18
0
0
时间管理的三个敌人: 遗忘、拖延、分不清主次,该如何应对?

我把它称为时间日志,其实说白了,就是好记性不如烂笔头。 时间管理有三个最大的敌人: 一, 遗忘; 二, 拖延; 三, 分不清主次。 有效的解决方法就是:写下来! 我在电脑的桌面上,建了一...

明哥聊求职
2018/06/10
0
0
CNNIC公布中国互联网十件大事

新浪科技讯 4月20日下午消息,中国互联网络信息中心(CNNIC)刚刚公布由其发起的“中国互联网发展十件大事”的网民票选结果,“网民规模世界第一”、“5·12震灾报道”等2008年重大事件入选。 ...

红薯
2009/04/20
441
0
北京尚学堂|关于编程,大学没有传授的十件事

北京尚学堂 关于编程,大学没有传授的十件事 编辑删除转载2016-11-06 10:28:44 标签:javait北京尚学堂编程程序员 我依然记得当年完成学业时,深信自己已经准备好进入任何一家软件公司,并开...

SXTkaifa
2016/11/06
3
0
编程初学者必须知道的十件事

本文转载自CSDN论坛, 原文地址: http://topic.csdn.net/u/20090608/17/526def98-1214-48c5-8f40-bbc9c3cf9a69.html?94431 看到好多老师写的非常好,总结了几条觉得最精华的,加上了我自己的一...

长征2号
2017/10/11
0
0

没有更多内容

加载失败,请刷新页面

加载更多

手把手教你运用深度学习构建视频人脸识别模型(Python实现)

本文将展示如何使用开源工具完成一个人脸识别的算法。 引言 “计算机视觉和机器学习已经开始腾飞,但是大多数人并不清楚计算机在识别一张图片的时候,它到底看到了什么。”——麦克.克里奇 ...

孟飞阳
12分钟前
0
0
阿里的Spring框架面试题到底有多难?这五大问题你又掌握了多少!

前言 还在机械地打代码?我们很多开发者在开发 Spring 的程序的时候,很多的情况下,都是被动的接受了前辈们为我们做好的 Spring 特性案例。这样以来,确实在很大的程度上减少了我们开发的成...

java知识分子
15分钟前
1
0
Node 框架接入 ELK 实践总结

本文由云+社区发表 作者:J2X 我们都有过上机器查日志的经历,当集群数量增多的时候,这种原始的操作带来的低效率不仅给我们定位现网问题带来极大的挑战,同时,我们也无法对我们服务框架的各...

腾讯云加社区
16分钟前
1
0
matlab-线性代数 判断 两矩阵是否相同

  matlab : R2018a 64bit     OS : Windows 10 x64 typesetting : Markdown    blog : my.oschina.net/zhichengjiu    gitee : gitee.com/zhichengjiu   code clearclca=[1 1;2......

志成就
22分钟前
0
0
轻松在Linux上发送邮件,经验证接收可靠

1. 安装mailx,使用mail命令直接发送 yum install mailx 2、编辑配置文件 在126邮箱中申请开通客户端协议权限 如下图: vim /etc/mail.rc set from=xxxx@126.com set smtp=smtp.126.com set...

echx
32分钟前
0
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部