为什么要用jupiter在代码中的作用
code review 有助于尽早发现代码中的问题,协调并逐渐统一各个编程人员的代码规范和习惯,以常用的Jupiter为例.
Jupiter里,代码评审(code review)分为4个流程:
Configuration(配置):review发起者设置“Review ID”,指定要评审的代码,参与代码评审的人员,要讨论的问题等
Individual review(个人评审):每个人独自审查代码,把可能出现问题的代码加入checklist
Team review(团队评审):大家在一起讨论之前检查出的问题代码,并决定如何处理
Rework:开发人员根据之前评审的结果,对代码进行修复
流程
Configuration
由评审发起者(代码作者、team leader或者PM)进行配置。打开项目属性->Review选项页。点击“New...”,设置相应的ReviewId和description:
接着添加本次要评审的代码和文件
Iterator模式是用于遍历集合类的标准访问方法。它可以把访问逻辑从不同类型的集合类中抽象出来,从而避免向客户端暴露集合的内部结构。
例如,如果没有使用Iterator,遍历一个数组的方法是使用索引:
for(int i=0; i<array.size(); i++) { ... get(i) ... }
而访问一个链表(LinkedList)又必须使用while循环:
while((e=e.next())!=null) { ... e.data() ... }
以上两种方法客户端都必须事先知道集合的内部结构,访问代码和集合本身是紧耦合,无法将访问逻辑从集合类和客户端代码中分离出来,每一种集合对应一种遍历方法,客户端代码无法复用。
更恐怖的是,如果以后需要把ArrayList更换为LinkedList,则原来的客户端代码必须全部重写。
为解决以上问题,Iterator模式总是用同一种逻辑来遍历集合:
for(Iterator it = c.iterater(); it.hasNext(); ) { ... }
奥秘在于客户端自身不维护遍历集合的"指针",所有的内部状态(如当前元素位置,是否有下一个元素)都由Iterator来维护,而这个Iterator由集合类通过工厂方法生成,因此,它知道如何遍历整个集合。
客户端从不直接和集合类打交道,它总是控制Iterator,向它发送"向前","向后","取当前元素"的命令,就可以间接遍历整个集合。
呵呵,借点别人的东西,希望对你有用
Jupiter里,代码评审(code review)分为4个流程:
Configuration(配置):review发起者设置“Review ID”,指定要评审的代码,参与代码评审的人员,要讨论的问题等
Individual review(个人评审):每个人独自审查代码,把可能出现问题的代码加入checklist
Team review(团队评审):大家在一起讨论之前检查出的问题代码,并决定如何处理
Rework:开发人员根据之前评审的结果,对代码进行修复
流程
Configuration
由评审发起者(代码作者、team leader或者PM)进行配置。打开项目属性->Review选项页。点击“New...”,设置相应的ReviewId和description:
接着添加本次要评审的代码和文件
添加参与代码评审的人员
接下来设置各种缺陷类型、严重性之类的。然后就是指定存放评审数据的目录。这个目录是相对于项目根目录的。如下图:
设置完成后,Jupiter将在项目根目录下生成“.jupiter”文件,把此文件存入CVS。现在评审发起者可以通知大家进行代码评审了。可以通过发邮件的方式进行通知,通知的内容最好有以下部分:
即:
项目名称、Review ID、参与评审人员名单。
被评审代码的描述信息,如功能,需求等等
新增加和删除的文件
受影响但没有在Configuration中指定的组件
通知完毕后,各成员即可正式进行代码评审。
Individual review
从CVS取出最新的代码和.jupiter文件,在eclipse里->窗口(Window)->打开透视图(Open Perspective)->Review。然后选择Individual Phase:
选择项目名称,Review ID和Reviewer ID(评审者ID),然后就可以开始查看代码了。
在代码评审过程中,发现有问题的代码,即可在上面点击右键菜单->Add Review Issue...把问题添加到Jupiter中,指定问题类型、严重性和描述信息,点击保存。
完成个人的代码评审后,把Jupiter评审数据目录下的文件传入CVS,就可以一起进行讨论了。
Team review
大家在一起,使用一台电脑或者投影仪,选择Team Phase
现在Individual Phase里检查出的所有的问题都会显示在ReviewTable里,点击Go To就能链接到问题所在代码,然后大家讨论这段代码是否有问题,如何解决等等,把结果写到ReviewEditor里,保存。
所有的问题讨论出结果后,把Jupiter评审数据文件传入CVS,散会,各自回到自己位置,进行下一个步骤
Rework
从CVS取出最新的Jupiter评审数据文件,选择Rework Phase
选择自己的ID后,上一步骤中分配给自己的问题就会显示到ReviewTable里,一个一个地把问题修复吧,修复后把状态置为Resolved。完毕后把Jupiter数据传CVS。
各自的rework完成后,各位评审者取出最新的Jupiter数据,关闭ReviewTable的过滤器,就能查看到本次评审中发现的各种问题,对各种问题进行验证,感到满意后可以把状态置为Closed,或者验证未通过,就置为Re-Opened。
总结
如此,便完成了一次代码评审……
工具仅仅是一种辅助措施,更主要的是如何发挥积极主动性,不断提高编码水平和定制规范.
希腊人和罗马人在人物造像上有何不同
海鲁-拉-哈〔Heru-ra-ha〕:由Ra-Hoor-Khuit 和Hoor-par-Kraat 组成。这个名字在埃及文中意指"Horus and Ra be Praised!"(赞美荷鲁斯及拉)当然,这是不同与言所翻译出来的意义,或许只是因为要进入不同文化所译的。伊姆贺特普〔Imhotep〕:是建筑师,医生,更是第三王朝 Zoser 王的宰相,为 Zoser 王在塞加拉...
想买个合成器,但在Korg Kronos与Roland Jupiter-80中犹豫,各位大大其他...
毫无疑问,是kronos比jupitrt80要好。因为korg kronos确实是目前最好的合成器,无论是编辑功能还是karma模块,音色和音序器功能都在其他合成器之上。korg kronos和下一级的korg m3之间的跳跃跨度大,不再是音色上的波形容量扩展和周边功能增强,而是有质的提高。区别於其他合成器换代的习惯,因为kronos和...
JUP.D注册过商标吗?还有哪些分类可以注册?
JUP.D商标总申请量1件其中已成功注册0件,有1件正在申请中,无效注册0件,0件在售中。经八戒知识产权统计,JUP.D还可以注册以下商标分类:第1类(化学制剂、肥料)第2类(颜料油漆、染料、防腐制品)第3类(日化用品、洗护、香料)第4类(能源、燃料、油脂)第5类(药品、卫生用品、营养品)第6类...
请问student和pupil的区别是什么?
一、含义不同 1、student n. 学生;学者 例句:A student should always be curious to learn.译文:学生应该始终具有强烈的求知欲。2、pupil n. 小学生;弟子 例句:The painting is the work of a pupil of Rembrandt.译文:这幅画是伦勃朗的一位弟子的作品。二、词汇搭配不同 1、student...
希腊字母有哪些?
20 Υ υ upsilon jup`silon 宇普西龙 21 Φ φ phi fai 佛爱 22 Χ χ chi phai 西 23 Ψ ψ psi psai 普西 24 Ω ω omega o`miga 欧米伽 1Ααalpha常用作形容词,以显示某件事物中最重要或最初的。2Ββbeta也能表示电脑软件的测试版,通常指的是公开测试版,提供一般...
希腊字母表中各个字母所代表的含义是什么?
20 、Υ υ upsilon jup`silon 宇普西龙 21 、Φ φ phi fai 佛爱 22 、Χ χ chi phai 西 23 、Ψ ψ psi psai 普西 24 、Ω ω omega o`miga 欧米伽 历史来源 希腊字母源于腓尼基字母,腓尼基字母只有辅音,从右向左写,希腊语言元音发达,希腊人增添了元音字母。因为希腊...
Juparana Arandis岩石特征
suggesting a sense of movement and dynamism that captivates the viewer.As a natural material, Juparana Arandis Granite brings a touch of nature indoors, offering a sense of earthiness and solidity. Its direct and unpretentious style makes it a perfect choice for those seeking a touc...
希腊字母表的顺序
奥密克戎 16, ∏ π pi pai 派 17, Ρ ρ rho rou 肉 18, ∑ σ sigma `sigma 西格马 19, Τ τ tau tau 套 20, Υ υ upsilon jup`silon 宇普西龙 21, Φ φ phi fai 佛爱 22, Χ χ chi phai 西 23, Ψ ψ psi psai 普西 24, Ω ω omega o`miga 欧米伽 ...
JUPMOMAR注册过商标吗?还有哪些分类可以注册?
JUPMOMAR商标总申请量1件其中已成功注册0件,有0件正在申请中,无效注册0件,0件在售中。经八戒知识产权统计,JUPMOMAR还可以注册以下商标分类:第1类(化学制剂、肥料)第2类(颜料油漆、染料、防腐制品)第3类(日化用品、洗护、香料)第4类(能源、燃料、油脂)第5类(药品、卫生用品、营养品)...
数学中代表一般用来向量的那个像蛇的符号怎么读?
20 Υ υ upsilon jup`silon 宇普西龙 位移 21 Φ φ phi fai 佛爱 磁通;角 22 Χ χ chi phai 西 23 Ψ ψ psi psai 普西 角速;介质电通量(静电力线);角 24 Ω ω omega o`miga 欧米伽 欧姆(大写);角速(小写)...
以面盐酸: code review 有助于尽早发现代码中的问题,协调并逐渐统一各个编程人员的代码规范和习惯,以常用的Jupiter为例. Jupiter里,代码评审(code review)分为4个流程:Configuration(配置):review发起者设置“Review ID”,指定要...
西秀区14715968482: 懂javascript的人为什么用Jquery? - ?
以面盐酸: 以我的经历来看,使用了jquery之后,使我的代码量减少了60%-70%.我现在已经难以想象,如果没有jquery,我将有多少时间浪费在写浏览器 兼容性和一些浏览器低级的bug上.对于目前2.0不兼容ie 6 7 8的问题,也很好解决,目前我仍在使用...
西秀区14715968482: JAVA 中为什么 要用STRING - ?
以面盐酸: 你可能学习java没几天,你现在还不明白属性和方法的区别,等你学到简单的MVC模型你就明白了
西秀区14715968482: 使用JSTL到底有什么好处,为什么要用JSTL - ?
以面盐酸: jstl主要用在jsp页面,可以在jsp的html代码中插入JavaScript代码,是一种标签语言.但是增加了js和html的耦合度,因此不建议使用.
西秀区14715968482: java 中 为什么要使用return 方法 - ?
以面盐酸: return不是方法,而是关键词.return的作用是退出当前函数,可以在之前加上条件,如果满足这个条件就退出不执行return后面的代码.一般可以放在for循环里面或者函数最前面进行条件判定,然后将你的满足条件的情况放在它的后面.
西秀区14715968482: jsp开发为什么要把JavaScript代码单独放在js文件中啊? - ?
以面盐酸: js是静态文件,jsp是动态文件,两个都可以用来保存复用函数. 我明白楼主的意思,将某些javascript过程封装成函数放在单独的文件里可以提高复用,事实上我们在项目开发中的确有两种选择,就像楼主所说的一种是放在js文件,而另一种是放...
西秀区14715968482: 为什么Spring推荐使用构造器注入 - ?
以面盐酸: 构造注入的优势: 1)构造注入可以再构造器中决定依赖关系的注入顺序,有限依赖的优先注入.例如,组件中其它依赖关系的注入,常常需要依赖于Datasource的注入.采用构造注入,可以在代码中清晰地决定注入顺序. 2)对于依赖关系无需变化的Bean,构造注入更加有用.因为没有setter方法,所有的依赖关系全部在构造器内设定.因此,无需担心后续代码对依赖关系的破坏. 3)依赖关系只能在构造器中设定,则只有组建的创建者才能改变组建的依赖关系.队组建的调用者而言,组件内部的依赖关系完全透明,更符合高内聚的原则.
西秀区14715968482: 设计模式:Java开发为什么需要UML - ?
以面盐酸: 知道UML造成了怎样的局面大混乱吗?知道什么样的功能是UML拥有但JAVA不具备的吗?知道我们为什么需要除JAVA外的另一种电脑语言吗?UML并不仅仅只是JAVA或者其它什么语言的替代品.UML并不仅仅只是JAVA或者其它什么语言的...
西秀区14715968482: Servlet为什么要用到JSP和模型,有什么好处 - ?
以面盐酸: 好处是把项目中的视图(JSP) 和模型(model)分开,也就是最初的mvc模型控制.这样处理的话,整个项目的结构就很清晰,jsp中不再有大量的java代码,只负责向用户展示结果.模型用于数据提交,封装,servlet(控制器)用来出来业务逻辑.每个只负责自己的事情,便于项目的开发和后期的维护
西秀区14715968482: JDBC为什么要使用PreparedStatement而不是Statement - ?
以面盐酸: 在JDBC应用中,如果你已经是稍有水平开发者,你就应该始终以PreparedStatement代替Statement.也就是说,在任何时候都不要使用Statement 一.代码的可读性和可维护性.虽然用PreparedStatement来代替Statement会使代码多出几行,但这...