4J 代码规范1性能级别规范1.1对潜在的业务级异常捕获处理打印日志,参照spring源代码1.2controller或service层需要数据校验,确保系统安全,具体在哪一层校验需确认1.3业务处理代码只能出现于service层,确保事务安全与mvc结构清晰,如jsp,controller都不能有1.4严禁循环中连接数据库,确保一次请求不产生过多的数据库连接1.5使用sql直接进行统计查询等业务复杂度较低的操作,确保java代码的可读性与java内存性能1.6业务复杂的操作会涉及到多次数据库连接,包括多表查询,更新等,这种情况尽量避免,可以将部分业务合并在一个sql中,或者使用存储过程1.7sql语句避免直接使用“*”,除非在外层语句1.8不允许单一的count语句使用orderby,limit,count(*)1.9查询时分组、排序、条件、结果字段影响效率时,应该跟组长或DBA讨论是否需要建立索引1.10Java代码不允许sql参数字符拼接方式,必须使用预编译方式(除非参数绝对不发生变化),确保数据安全与查询效率1.11表间关联字段类型一致,确保索引不会失效1.12mysql中没有函数索引,所以查询时尽量不要有索引列的函数,如substr(create_date, 1, 6) = substr('20110728', 1, 6) 实质是等于某月改写为———————————————————————————————————————————————————————————————- 1 -create _date >=to_char(last_day(add_months(to_date('20110728','yyyymmdd'),-1)) + 1,'yyyymmdd')and create _date <= 该月最后一天1.13编写sql时避免大表的全表扫描,尽量走索引,正确使用left join,right join,join对数据和效率影响2代码基本规范2.1数据库所有字段都为大写,单词之间用_分隔2.2在所有JSP、JAVA代码中,如果是一个数据库字段对应的变量,则名称和数据库字段名称相同2.3在JAVA、JSP中,除了与数据库字段对应的变量以外的所有变量,都以小写字母开头驼峰式命名,变量中各单词之间不要空格,不要有其它字母,例如helloWorld 是正确的HelloWorld 、hello_world 这些都是错误的。
2.4代码提交到SVN时,在提交界面中,请写清修改的原因、事项2.5在处理日期型的数据字段时,注意不要随意书写,要兼容ORACLE的写法2.6在使用GROUP BY语句的时候,要注册兼容ORACLE的写法2.7凡是牵扯到数据持久化的代码都要封装到dao层,切不可以在bean或者其他的层中写操作数据库的代码。
3代码书写原则3.1JSP页面中,尽可能不写或者少写JAVA代码3.2所有JS代码,都写在JSP页面的上方3.3所有JSP代码、JS代码,都要写上完善的注释,因为这部分代码,会被经常改动。
4文件命名规范———————————————————————————————————————————————————————————————- 2 -在日常与客户交流或者写文档时,请不要随意的写一个文档名称,随意的文档名称,会导致文档的无序、混乱,不易管理与查找。
同时,在发与客户文档时,一个好的文档名称,也有助于客户理解与奠定好的客户印象。
文档、文件夹,命名的大体格式为:日期_客户(可选)_主题_补充(可选)_版本(可选)注意:各主题之间用下划线隔开日期:两位年两位月两位日。
例如:101128客户:客户名称或者项目名称。
例如:IT报修平台主题:能够说清文档的主题、内容。
例如:解决不显示按钮的BUG。
首页设计。
测试报告补充:对特殊事宜的补充说明。
例如:更新了首页。
增加了栏目页面。
IE8。
1024分辨率。
WEBSPHERE。
ORACLE。
版本:定义系列事件的版本,如2.1,大变化个位加一,小变化小数加一。
在版本号前加上V,例如V1.0 V0.2文档名称中的各数据,他们的优先级为:日期> 客户> 主题> 补充> 版本也就是说,如果文档标题中,即有主题与补充时,应该先写主题,再写补充。
以此类推。
更新包要尽量做到只更新有效的文件,别什么都往里放———————————————————————————————————————————————————————————————- 3 -5开发注意事项5.1希望删除项目中的文件时,一定要在eclipse中进行,不要在外面删除,在外面删除会导致版本库同步失败5.2不要经常去在eclipse中部署应用,正常的开发,一年都不用去部署一次,只要第一次部署后,后面跟SVN同步,然后页面不显示直接整体刷新工程,或者清除tomcat缓存。
而重新部署则会导致一些代码的丢失5.3请务必使用Dreamweaver编辑网页文件、JS文件,不要直接在eclipse中编辑。
因为在DW中编辑,可以更有效的保证网页的设计视图不会代码破坏!在使用DW编辑时,可以使用DW的同步功能,将项目指向eclipse主工程,同时同步到tomcat中。
这样修改了文件,2边都会进行修改6添加、修改、注释代码6.1注释包括复杂逻辑代码段、业务代码段、不容易理解的变量、方法、类6.2在原有的代码基础上添加某一个方法或者某一段代码,除了要写上代码的注释外还有把添加人以及当前的日期写上;除此之外还要写上添加这段代码或者方法的目的。
6.3在原有的代码中修改某一个方法或者某一段代码,除了要写上代码的注释外还有把修改人以及当前的修改日期写上;除此之外还要写上修改这段代码或者方法的目的。
6.4在原有的代码中发现有错误或者是与当前的代码不吻合,不要把别人的代码删除了。
可以注释,注释后要写上当前日期以及注释人和注释的目的。
6.5所有页面JS,都尽量写在页面的上部,并且要写上完整的注释———————————————————————————————————————————————————————————————- 4 -7整洁的代码7.1定义有意义的变量名、方法名,做到望文生义,一目了然。
杜绝int id1 = 0; public String init()…之类的代码。
id1和init()都不能告诉读者这是干嘛用的7.2命名类,方法,变量慎用简写,除非大家都公认,而且名字尽量包含业务信息而不是逻辑概念,如返回人员列表时,使用userList而不是result7.3禁止大段的、层次过深的if…else…代码。
每段if语句块一屏之内必须结束。
不能出现超过3层的if判断。
———————————————————————————————————————————————————————————————- 5 -7.4每个方法尽量只做一件事,杜绝瑞士军刀式的方法,方法有很多功能,但是用法复杂,并且大多数人不知道怎么用。
7.5不要通过传type的方法让一个方法有两种功能。
如果确实需要,则要在此方法之上重构几个方法,分别实现type参数的意义,例如:public void setQueueState(int ID, int STATE) throws DataAccessException { //设置状态public void setQueueStateFail(int ID){ //设置失败状态STATE=-1public void setQueueStateSuccess(int ID){ //设置成功状态STATE=1读者在实际调用的时候不需要去理会STATE参数的含义,通过方法名即可直达此方法的含义。
7.6杜绝boolean型参数的方法,如果确实需要则必须重构,表明此boolean参数的含义。
不要在思考此参数的含义上花费时间。
7.7没用的代码段不要注释,直接删除。
我们有版本控制,不需要注释保留代码7.8代码中不要乱换行。
换行的意思是隔断不同语义的代码,合理的换行可以帮助读者理解你的代码,不合理的则会帮倒忙。
例如:———————————————————————————————————————————————————————————————- 6 -每一步操作之间换行,增加方法的步骤感觉———————————————————————————————————————————————————————————————- 7 -7.9写清晰、合理、不废话、不误导的注释7.10在代码中发现不合理的地方但当时没有时间修改的,可以先写一个注释”//@pd”,然后跟上要怎么修改和添加人。
日后批量搜索” @pd”表示,并统一评估7.11该缩进的地方必须缩进,不该缩紧的地方不缩进8代码的复用与重构8.1请不要在两个地方出现完全相同的代码8.2拆分大的类,大的方法,如果您的类有一万行,如果您的方法有一千行,我真的会恐惧,是恐惧———————————————————————————————————————————————————————————————- 8 -。