阅读更多

39顶
1踩

非技术

原创新闻 每个项目最重要的十件事

2008-07-21 17:02 by 资深编辑 ╱/罒呍唲 评论(13) 有16476人浏览
  这是我在做每个项目时的明细表,我强烈建议您也这样做。原因是:(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投资,同样还有picocontainerspring

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

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

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

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

这给您带来了什么好处?您将有快乐和富有成效的开发流程和快乐的顾客,而且可以很容易为你的产品吸引到客户。
39
1
评论 共 13 条 请登录后发表评论
13 楼 linshuyu 2011-09-01 14:51
有几条我认为很在理
12 楼 liuqiang9861020 2011-02-10 15:02
翻译的不是很通顺
11 楼 fengzi2009F 2010-05-24 13:07
不错 学习啊
10 楼 sungechen 2009-02-03 17:46
每个有点过了吧,确实很多方面值得参考。
9 楼 bqw_5189 2008-08-07 07:40
  学习!!!
8 楼 uusin 2008-07-24 11:41
怎么实现啊?
7 楼 starfeng 2008-07-22 19:51
tomcat一样可以以类似于jetty的方式启动.
我一直都这样在eclipse中把我的web做为一个application启动
6 楼 cats_tiger 2008-07-22 11:52
哈哈,我的项目中都有
5 楼 xly_971223 2008-07-22 09:16
引用
a)把主要class放在JAR MANIFAST,这样只要双击就可以加载你的应用。

应该是 main class吧
4 楼 feigme 2008-07-22 08:30
Jetty 和 Derby 都是嵌入式的,组合起来开发使用不错

BTW:很多词都写错了。。。太激动了?
3 楼 alfred.w 2008-07-21 20:56
建议看看maven。有的内容好像是针对某种类型的项目,说每个有点过了。
2 楼 yapi 2008-07-21 18:13
all covered in RoR
1 楼 dennis_zane 2008-07-21 17:56
题目不是很恰当,应该说java项目

发表评论

您还没有登录,请您登录后再发表评论

相关推荐

  • 网页监控更新工具

    python开发的网页监控更新工具,可以对指定的网页进行监控,只要网页内容有变化,就可以给出发生差异的详细结果。运行环境win7+python2.7.3.

  • Web APIs 事件监听(绑定)

    事件监听(绑定) 事件:事件是编程语言中的术语,它是用来描述程序的行为或状态的,一旦行为或状态发生改变,便立即调用一个函数。 例如:用户使用【鼠标点击】网页中的一个按钮、用户使用【鼠标拖拽】网页中的一张图片 事件监听:结合 DOM 使用事件时,需要为 DOM 对象添加事件监听,等待事件发生(触发)时,便立即调用一个函数。 语法:元素对象.addEventListener(‘事件类型’,要执行的函数) 事件监听三要素: 事件源: 那个dom元素被事件触发了,要获取dom元素事件类型:用什么方

  • 浏览器页面操作——实时监控网页变化,读取网页内容

    浏览器页面操作”可以实时监控电商平台的商品价格变动,也可以帮助旅游爱好者了解目的地机票、酒店的价格变动情况,帮助我们及时掌握优惠信息,节省开支。后续,只要保持该流程为开启状态,即可在全国会计资格评价网有新工作动态时,接收到即时的通知提醒,避免信息遗漏。并使用集简云“浏览器插件”元素选择器,XPath,获取网站工作动态/地方频道的首条消息元素路径,并复制。新闻工作者可以监控各大新闻网站的要闻,紧跟时事,有利于加快编写新闻稿件的速度,确保稿件及时发布。为例,演示 “浏览器页面操作” 的使用和流程搭建步骤。

  • 监控网页中元素的事件

    google_ad_client = "pub-2947489232296736";/* 728x15, 创建于 08-4-23MSDN */google_ad_slot = "3624277373";google_ad_width = 728;google_ad_height = 15;//<script type="text/javascript"

  • VC 监视网页中的元素事件

    通过近两个月的学习《Internet Explorer 5.0程序设计》,我终于知道该怎样来挂接一个网页中各元素的事件,现将我解决方法告知如下: 本例利用C++来捕获IE网页中的元素事件. 一、建立一个MFC单文档应用程序,选择视图类为CEditView. 二、新建一个C++类,该类派生于IDispatch接口。例如:(我的类为CIESpyEvent)   #pra

  • 网页元素监视器

    有了它你可以查看网页上你指定位置的元素信息,代码,链接

  • MutationObserver 监听页面的DOM元素是否发生了变化 (调试网页劫持)

    &lt;!DOCTYPE html&gt; &lt;html&gt; &lt;head&gt; &lt;meta charset="UTF-8"&gt; &lt;title&gt;MutationObserver 监听页面的DOM元素是否发生了变化 (调试网页劫持)&lt;/title&gt; &lt;style&gt; bo...

  • js监听页面元素变化window.MutationObserver

    相信前端开发同学都熟悉各种各样的监听事件,比如元素点击事件onClick,鼠标事件onMouseDown、onMouseHover,键盘按键onKeyDown,浏览器窗口改变事件onResize等等。 那我们如何监听页面某个元素的属性变化呢? window.MutationObserver(callback) 该接口用来观察节点变化,MutationObserver是一个构造器,接收一个回调函数c...

  • 如何监控iframe里面页面的点击事件

    根据浏览器同源策略,如果iframe中是一个跨域的页面,那么在父页面中无法监听到iframe页面中的所有行为。 最近在看论坛,发现了一个变通的办法——监听鼠标停留在iframe上这个动作,顺便记录下来: $('iframe').hover( function () {   alert('AD frame!');  ); 顺藤摸瓜,就发现了腾讯团队写的《iframe跨

  • 如何监听页面元素样式的变化

    DOM改变时,如何做到自适应echarts图表出发点如何做到自适应总结 出发点 如何做到自适应echarts,开发两年的我一直以为,自适应只有在屏幕大小发生变化时才需要做自适应,然而最近的项目中发现,对于左侧菜单栏可以展开收缩或者拖拽改变宽度时,window screen的width并没有发生变化,自然,右侧内容区域的echarts实例也没有发生变化。 如何做到自适应 var callback = function(mutations) { mutations.map(function(mutation

  • 自用推荐【浏览器网页监控插件 Distill Web Monitor】

    需求:票据套利需监控各互联网行口价格 使用Distill Web MonitorI. 监控效果II. 提醒方式III. 下载方式 I. 监控效果 II. 提醒方式 插件图标小红点提醒 网页元素变动涂色提醒 桌面推送提醒 声音提醒 以上为免费提醒功能 还有更高级的付费功能 III. 下载方式 谷歌商店搜索,Distill Web Monitor,直接安装在chrome 也可以打包下载后安装在qq浏览器 ...

  • Chrome插件开发--后台监控网页并自动刷新,点击页面元素

    2015年6.17号,在线旅游网站蚂蜂窝出现了抢粽子活动:页面会出现一些粽子,点击粽子,即抢到。很明显,这是一个重复性的劳动,可以代码自动刷新页面,点击页面上的粽子。 本方案中选择了开发一款Chrome浏览器插件进行前台页面刷新,后台点击粽子。   Chrome插件开发。 一、新建目录ChromeAddin-mafengwo。目录下新建名为manifest.json的入口文件。 ma...

  • 【冷知识】获取网页所有的监听事件类型、方法。请认准getEventListeners

    获取事件列表 getEventListeners(window)//获取window绑定的所有监听事件列表 getEventListeners(document.querySelector("选择器"))//获取指定DOM的所有监听事件列表 这里以CSDN为例,F12当前页面在Console选项卡输入getEventListeners(window),回车执行代码后会输出以下对象: 获取事件绑定的方法源码 getEventListeners(window).事件名[0].listene..

  • DOM元素动态监控

    今天遇到一个一直认为很简单的问题,真正接手后才知道这么可怕 大体是这样的,默认动态加载的card应该是自动向下,当card遇到页面最下面应该自动向上渲染。 动态生成的DOM都是根据id来监听获取元素的信息。 坑1:当时数据较少没有考虑到card渲染方向,所以在页面下面的时候card加载到了浏览器之外 进坑1:当我一开始碰到这个bug时,so easy!!!所以加了一个判断条件,在函数@mous...

  • JavaScript触发HTML元素事件

    很简单,你要触发什么事件直接调用那个事件即可,以下代码兼容所有主流浏览器。 &amp;lt;html&amp;gt; &amp;lt;select id=&quot;s1&quot; onchange=&quot;ff(this,5)&quot; onclick=&quot;ff(this,50)&quot;&amp;gt; &amp;lt;option value=&quot;1&quot;&amp;gt;A&amp;lt;/option&amp;gt; &amp

  • 【我不熟悉的javascript】各种监控html元素变化的方法,MutationObserver ,intersectionObserver,resizeObserver

    【我不熟悉的javascript】各种监控html元素变化的方法,MutationObserver ,intersectionObserver,resizeObserver

Global site tag (gtag.js) - Google Analytics