北京华夏安泰技术论坛

 找回密码
 立即注册

扫一扫,访问微社区

QQ登录

只需要一步,快速开始

只需一步,快速开始

搜索
热搜: 活动 交友 discuz
楼主: 王健

展示你的样板代码-提高代码质量活动第一期

[复制链接]

12

主题

86

帖子

371

积分

内部工作人员

积分
371
发表于 2017-9-22 11:00:33 | 显示全部楼层 |阅读模式
本帖最后由 王健 于 2017-9-22 16:17 编辑

因为开发人员能力、经验、习惯、责任心等等诸多方面的原因,在多人协作开发的项目中,代码质量一直是一个无法回避的问题!
为提高代码质量,每个公司都会有一些措施,诸如代码规范、Review等都是比较常见的方式。

我们也有代码规范文档,但大家可以试问自己一句:代码规范哪怕仅仅是编码风格,你在自己的任何代码中都遵守了吗?
我们也不止一次要求开发人员进行 Review,但都没有真正的执行,在项目进度比较赶的情况下,大家会觉得每天半小时的review不如多改一个bug实在。
对于这一点,其实是一个偷懒的借口,半小时不够干什么,用这半小时review的同时也可以放松下精神小小的休息一下。但review的确存在一个问题是,除非对彼此做的模块都比较熟悉,否则短时间的review 只能是在代码规范的层次,很难深入到代码逻辑。

我们也有要求特定的项目管理人员或有经验的开发,对所有开发的代码进行审查!问题依旧,让某一个人去审查所有人的代码,要想深入审查到逻辑是一个极其枯燥耗时、且不可能完成的工作,而如果仅仅停留在代码表面,实在是浪费资源!

针对上述问题,这里我提出一个活动,每个人提交自己的样板代码,这个活动的目的是,首先至少让你自己知道合格的代码长啥样,其次把审查代码的工作分担到每个人,参与这个活动相当于至少你要对自己提交的样板代码审核并互相审核别人提交的代码。
这个活动也不会给大家造成什么额外负担,因为,如果你平时的代码都是合格的,那么你随便找一部分代码提交上来即可,切图发帖最多需要10分钟!如果反之,那么你只能花时间整理一份样板代码,为自己以前的编码行为买单吧!
另外,这不仅仅是一个任务,其实也可以是展示自己的一个机会,不用谦虚,拿出你的得意代码,把你未被领导和同事发现的能力show出来-It is your show time!


审查方面:
编码规范、注释、日志、逻辑
编码规范和逻辑是必须审查项,注释和日志根据情况并不是必须!

活动时间:
从今天(09-22)开始,每周五提交一次(暂定至少4周),也就是说今天你就需要提交一次样板;周六、周日为两天缓冲时间,有特殊情况周五未提交的,可在这两天提交;
周一为上周活动截止日;

审查方式:
在下一个周一至周五(上周活动截止日之后),要求所有开发人员抽时间浏览其他人提交的样板代码;
这个审查方式目的是让大家都参与进来,除了提交自己的样板代码,也学习其他人的代码或互相指出问题,可在帖子内进行点评和讨论;
原则上无特殊需要,不进行全员的点评,帖子的方式足够了,学习和讨论可以在自己感觉空闲的任何合适的时间进行,既不占用公共时间,又有一个记录;另外,除了自愿的点评和讨论之外,每周视情况很可能要求必须点评某一个人的代码或者指定两两组队点评;

提交方式:
本帖内跟帖,每人只能跟帖一次!在当周活动所有人提交完成之前,禁止评论及其他任何非样板代码帖(为保持好队形)!
不要使用帖子的“插入代码”功能(排版有问题),请切图提交(一屏切不下就多切几个图,要求图是连接的)

代码要求:
提交的代码中,你自己书写的行数基准是至少50行,如果不是全部自己编写,那么需要指明自己编写的代码行;
可以多个文件;
需要指明切图来自什么项目,及完整文件路径;
如果需要额外的文字说明,可以在切图下注明;

参与人:全体开发人员!对于已经有多年经验的开发,这里不是检查你,(如果你有这个自信)是让你的代码给大家一个榜样。我个人也会参加,同样的,我也不保证我的代码就是没有问题的,互相指出一起学习!


这也是一个试行,随后视活动情况随时可能调整规则,另外,有想法和建议都可提出来;
回复

使用道具 举报

12

主题

86

帖子

371

积分

内部工作人员

积分
371
 楼主| 发表于 2017-9-22 11:33:30 | 显示全部楼层
本帖最后由 王健 于 2017-9-22 15:47 编辑










https://139.129.167.95/svn/projects/mimos/
mimos-core/mimos.security.SecurityProvider

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册  

x
回复

使用道具 举报

4

主题

213

帖子

892

积分

内部工作人员

积分
892
发表于 2017-9-22 17:37:33 | 显示全部楼层
本帖最后由 zhanji 于 2017-9-24 19:10 编辑

合同报销相关处理



报销查看



回复

使用道具 举报

13

主题

214

帖子

884

积分

内部工作人员

积分
884
发表于 2017-9-24 09:30:42 | 显示全部楼层
js 函数  供应商抽取
   1.点击抽取按钮 触发的函数
  

2.抽取方法


3.抽取前数据验证


4.抽取范围



回复

使用道具 举报

10

主题

192

帖子

800

积分

内部工作人员

积分
800
QQ
发表于 2017-9-24 15:12:20 | 显示全部楼层
报销的”采购/合同/资产登记“页签
1. js数据校验


2. 获取表单数据


3. 数据处理保存


4. js工具方法
回复

使用道具 举报

2

主题

90

帖子

385

积分

内部工作人员

积分
385
发表于 2017-9-24 18:30:42 | 显示全部楼层

RE: 展示你的样板代码-提高代码质量活动第一期

业务申请审批意见功能:
弹窗显示时进行金额校验设置必填项

金额适用范围校验方法

费用包干保存数据

费用包干查询数据方法



回复

使用道具 举报

0

主题

4

帖子

358

积分

内部工作人员

积分
358
发表于 2017-9-24 21:12:53 | 显示全部楼层
本帖最后由 于凯奇 于 2017-9-24 21:24 编辑

业务申请查看公共判断页签内容显示js
编写时间:最近
项目路径:/atnk/WebRoot/jsp/expenses/businessapplication/js/businessapplicationview.js

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册  

x
回复

使用道具 举报

2

主题

189

帖子

788

积分

内部工作人员

积分
788
发表于 2017-9-24 23:49:31 | 显示全部楼层
财务月结 路径:/atnk/src/main/java/com/hxat/financal/service/impl/FinMonthServiceImpl.java

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册  

x
回复

使用道具 举报

4

主题

179

帖子

692

积分

内部工作人员

积分
692
发表于 2017-9-25 08:44:58 | 显示全部楼层
国家地区维护页面 /atnk/src/main/java/com/hxat/authority/service/AreaAuthorityService.java


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册  

x
回复

使用道具 举报

3

主题

187

帖子

855

积分

内部工作人员

积分
855
发表于 2017-9-25 09:05:38 | 显示全部楼层
本帖最后由 朱胜志 于 2017-9-25 09:14 编辑

pmt-server\src\hxat\promoter\standard\web\StandardExpendController.java
pmt-server\src\hxat\promoter\standard\service\StandardExpendService.java

https://139.129.167.95/svn/projects/pmt/

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册  

x
回复

使用道具 举报

4

主题

10

帖子

304

积分

内部工作人员

积分
304
QQ
发表于 2017-9-25 09:31:12 | 显示全部楼层
出国经费_费用查询处理:
atnk\src\main\java\com\hxat\expenses\service\impl\PaymentExpensesServiceImpl.java


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册  

x
回复

使用道具 举报

12

主题

86

帖子

371

积分

内部工作人员

积分
371
 楼主| 发表于 2017-9-26 13:39:39 | 显示全部楼层
本帖最后由 王健 于 2017-9-26 14:51 编辑

本期活动(上周)代码提交阶段结束,下期活动(本周)将再单独开帖!本期参与人数12,本期要求必须对楼层(F % 12 + 2)进行评价,其中F为你自己发帖的楼层(沙发2# 板凳3# 地板4# );
例:5#对应评价楼层为 7#,11#需要评价的是13#,13#对应3#,其实简单说就是一个环形的隔层评价!
除上述指定要求,其他交流讨论可以随意自由进行;
回复

使用道具 举报

12

主题

86

帖子

371

积分

内部工作人员

积分
371
 楼主| 发表于 2017-9-27 15:09:26 | 显示全部楼层
本帖最后由 王健 于 2017-9-27 15:44 编辑

抛砖引玉!
从代码风格、规范上,整体上都不错,但同时几乎没有人是一点瑕疵没有的,或多或少都存在:该空格不空格、或一会空格一会不空格的风格不统一、或空两格等等问题。为什么编码风格不影响代码执行结果,但每个公司都要对此有要求?原因我想不仅仅就是为了看着好看!
切一段jdk里的代码大家对比看看,分别来自String和BigDecimal:





着重说一下我的评价楼层:4, zhanji
zhanji提交的java代码部分,从风格上几乎是满分,至少我没发现风格上的问题(只是下面的js代码部分存在同样关键字一会空格一会不空格的情况);
java代码部分,对于复杂的业务逻辑,注释写的用心仔细,完全达到了注释的目的(很容易的对照注释看代码);
代码和注释几乎完全的一致性;

暂时先提两点建议:
1.代码中不停的大量重复的使用了xxx.getXxx,既然注释写明了a,b,c,那么其实可以先取为临时变量(我们一般不建议取a,b,c这样无意义的变量名,但实在不好命名并且注释得当的局部变量可以这么做),当然仍建议尽可能的有意义命名!
2.为了判断“>=”,首先compareTo(xxx) == -1判断“小于”,再套了一层“非”运算,最后达到了“不小于”,为什么不是直接判断>=?

修改后大概是这样子的(伪代码):
a = xxx.getA();
b = xxx.getB();
c = xxx.getC();

判断改为 if (a.compareTo(b) >= 0 && a.compareTo(c) >= 0)
而不是 if (!(xxx.getA().compareTo(xxx.getB()) == -1) && !(xxx.getA().compareTo(xxx.getC()) == -1))
再进一步,可考虑是否有封装为方法的必要,例如一个可选的封装方式可以是这样的(伪代码):
方法 lessThan(a,b) {return a.compareTo(b) == -1;}
判断变为 if (!lessThan(a, b) && !lessThan(a, c)) 这样屏蔽了compareTo返回值的判断

只是lessThan的命名似乎更应该a.lessThan(b) 而不是 lessThan(a,b),于是可以这样:
内部类 InnerBigDecimal {
//组合封装
BigDecimal value;

//构造方法
InnerBigDecimal(value) {this.value = value;}

//扩展方法
boolean lessThan(BigDecaimal other) {
return this.value.compareTo(other) == -1;
}
}

a = new InnerBigDecimal(xxx.getA());
判断变为 if (!a.lessThan(b) && !a.lessThan(c))

还有其他封装方式,是不是需要、如何封装往往要依据实际情况,这里只是一个可考虑的方式!

下面的图片是重复的,不知道如何删除


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册  

x
回复

使用道具 举报

0

主题

4

帖子

358

积分

内部工作人员

积分
358
发表于 2017-9-27 17:18:25 | 显示全部楼层
点评郭珊珊代码:
                          1:注意王哥说的代码的空格规范(我也存在这样的问题);
                          2:见图1;
                          3:见图2。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册  

x
回复

使用道具 举报

4

主题

213

帖子

892

积分

内部工作人员

积分
892
发表于 2017-9-27 17:49:23 | 显示全部楼层
大波的代码 :
1. 数据处理没有做异常处理,可能其他地方有做验证,暂时看不出。
2. 注释能明确的显示出逻辑步骤,很直观,挺好