2024Java语言编码规范_第1页
2024Java语言编码规范_第2页
2024Java语言编码规范_第3页
2024Java语言编码规范_第4页
2024Java语言编码规范_第5页
已阅读5页,还剩32页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

Java语言编码规范第第PAGE2NUMPAGES36目录TOC\o"1-2"\h\u25865 51321. 5270222. 514954二、代码风格(Code 5103953.文件组织(File 5280764. 765865. 8259166. 93941 10142887. 118977for语句(for 12266798.空白(White 149914 1464659.命名规范(Naming 1428585三、编程惯例(Programming 17312053. 18114014. 18295745.变量赋值(Variable 18186946. 20131977.为switch语句的每一个case加上 20131998.返回值(Returning 201298211. 211585212. 211221313.覆盖equals()hashCode() 222247515.不使用float和double 223817.尽量减少不必要的 22677018.调用String.equals() 222915820.将数据库表数值类型主键对应的属性定义成Long 23593821.不要使用MD2、MD4、MD5 23211622.使用框架封装的HttpClient 239816四、常见不良习惯(CommonBad 2531663 2588691. 26224672.代码里出现System.out和 2675783.空try/catch/finally 26130364. 26151365. 2651136. 2659577. 27320739. 272846810. 27474111. 272010612.避免在循环体内对队列进行remove 2813569五、性能优化(Performance 29196391. 2951722. 305293.String 30232764.系统 3223226六、RESTful 32100221. 32239523.常见不良习惯(CommonBad 39PAGEPAGE10NUMPAGES36JAVA二、代码风格(Code文件组织(FileJava源文件(JavaSource开头注释(BeginningVersion​​Copyright包和引入语句(PackageandImportpackageimportimport*类和接口声明(ClassandInterface类/接口文档注释的变量(没有访问修饰符,accessmodifier)forinti0irequAcctDtoArr.lengthi行长度(Line尽量避免一行的长度超过150换行(Wrapping我们这样注释(CommentLikejavadoc对类,接口,公用和保护方法,公用和保护类变量使用javadoc注释,必须包括描述,参数,@paramadviceType@paramlangId语言类型@return@throws代码新增:addbyyourname]at2009-03-10for代码修改:modifiedbyyournameat2009-03-10for代码删除:deletebyyournameat2009-03-10forEclipse在Eclipse中window/Perferences/Java/CodeStyle/CodeTemplate中可以配置模板,设置版权\h每行声明变量的数量(NumberPer//indentationlevelintlevel;//sizeoftableintsize;intlevel,intfoo,fooarray[];//indentation //sizeof //currentlyselectedtableentryObjectcurrentEntry;初始化布局voidmyMethod()intint1=0;//beginningofmethodblockif(condition){intint2=0;//beginningof"if"for(inti=0;i<maxLoops;i++){...名:intcount;myMethod()if(condition)intcount0;//类和接口的声明(ClassandInterfaceclassSampleextendsObject{intivar1;intivar2;Sample(inti,intj){ivar1=i;ivar2=intemptyMethod()简单语句(Simpleargv++;//OKargc--;//OKargvargc--;//避免这样复合语句(Compound复合语句是包含在大括号中的语句序列,形如"{语句}"返回语句(returnreturnreturn(size?size: ConnectionconnConnectionFactory.getConnection();if(……){elseif,if-else,ifelse-ifelse语句(ifif-elseifelse-ifelseif(condition)if(condition)elseif(condition)elseif(condition){ifcondition避免这样!for语句(forfor(initialization;condition;update){for(initialization;condition;while语句(whilewhile(condition){whiledo-while语句(do-whiledo{}whileswitch语句(switchswitch(condition){caseABC:/*fallsthrough*/caseDEF:case上面的示例代码中就包含注释/*fallsthrough*/。try-catch语句(try-catchtry{catch(ExceptionClasse){trycatch(ExceptionClasse){finally{空白(White空行(Blank空格(Blankwhile(true)a+=c+a=(a+b)/(c*d);while(d++=s++){printSize("sizeis"+foo+for(expr1;expr2; myMethod((byte)aNum,(Object)x);myMethod((int)(cp+5),((int)(i+3))+1);命名规范(NamingPascalCamel匈牙利命名法(Hungarian属性+类型+具体规范(SpecifiedDAODAODAO业务层方法:建议使用add/mod/del/qry*****JSDKStringBuffersbSql;ArrayListalAcctItemDto;HashMaphmServHistoryDto;intiLen;Dto属性(映射表字段Dto属性(映射表字段Camel有一个例外,loggerpublicstaticfinalZSmartLoggerlogger=避免长型名称(小于15个字符比较合适),巧妙节俭地使用缩写,将标准首字母缩写词CustomerClient三、编程惯例(Programming提供对实例以及类变量的访问控制(ProvidingAccesstoInstanceandClass和获取(gotten),通常这作为方法调用的边缘效应(sideeffect)而产生。引用类变量和类方法(ReferringtoClassVariablesandfunctiongetDimension(){intwidth=0;intheight=////// functionbooleanisSameDataExist=//if(isSameDataExist==true){booleanisExpiry=//return变量赋值(VariablefooBar.fCharbarFoo.lchar'c';//避免这样d(abc)r;//避免这样a=b+c;d=a+if(ab&&cd)//避免这样if((ab&&(cd))//为switch语句的每一个case加上返回值(Returningif(booleanExpression){returntrue;elsereturnreturnif(condition)returnreturnreturn(condition?x:条件运算符前的表达式(Expressionsbefore'?'intheConditional如果一个包含二元运算符的表达式出现在三元运算符的"?"之前,那么应该给表达式(x>=0)?x:-特殊注释(SpecialchannelId=clientContext.params.getStr(SMPPConstants.BSS_CHANNEL_ID,ListsubsList=subsDAO.selectSubsList();if(subsList!=null&&subsList.size()>0){覆盖equals()hashCode()List<String>nameList=new不使用float和double尽量避免在循环体内进行尽量减少不必要的调用String.equals()StringorgName=if(orgName!=null&&orgName.equals(CN_NJ)){//OK调用String.substring()将数据库表数值类型主键对应的属性定义成Long不要使用MD2、MD4、MD5由于MD2、MD4、MD5已被认为是不安全的hash算法,因此应禁止使用它们。建议使用SHA256来对密码进行hash处理。使用框架封装的HttpClientApacheHttpClientSDKCloseableHttpClientCloseableHttpClienthttpclient=HttpClients.createDefault();RequestConfigrequestConfig=RequestConfig.custom()HttpGethttpget1=newHttpGet("\hhttp://localhost/1");trytryHttpEntityentity1=}finallyHttpGethttpget2=newHttpGet("\hhttp://localhost/2");CloseableHttpResponseresponse2=httpclient.execute(httpget2,context);try{HttpEntityentity2=}finally通常我们要关注以下3HttpRequestGetHttpRequestGethttpRequestGet=newHttpRequestGet();Map<String,Object>params=newHashMap<>();params.put("ftf.httpclient.socket-timeout",2000);params.put("ftf.httpclient.connection-timeout",6000);httpRequestGet.execute("https://xxx.xxx.xxx/s",params);\h的最后。同时,在最终事务提交(commit)时内存数据库连接应当被优先处理,以此来保证避建议:返回bool值的方法,方法名能够明确表示检验结果,避免只是一个检SpringJdbcTemplate的setMaxRows\hZSmartCORE(R9)框架的ftf.sql.limit-result-\hZSmartCORE(V8)框架的【强制】用户输入的SQL参数严格使用参数绑定或者METADATA字段值限定,防止SQL注入,禁止字符串拼接SQL访问数据库。注意:ZSMARTV8框架针对like和in的宏处理方式是采用的SQL字符串拼接的方式,会产生四、常见不良习惯(CommonBad建议一个文件里的代码不超过1500代码里出现System.out和空try/catch/finally这是个比较隐蔽的错误,例如if(willDeletetrue)、while(isEndfalse)调用静态的Calendar、出现问题。除SimpleDateFormat类外,还有不少***Format类、***Calendar类等对应方法都是 MacOS Unix Windowsfor(inti=0;i<list1.size();i++){for(i=0;i<list2.size();i++){//do避免在循环体内对队列进行remove思路有偏差。建议循环体内部处理时用新copy的队列进行实际的处理。publicpublicclassUnusedAssignmentDemoprivatestaticfinalZSmartLoggerLOGGER=ZSmartLogger.getLogger(UnusedAssignmentDemo.class);publicstaticvoidmain(String[]args){Stringif("1".equals(String.valueOf(3-2)))greeting="Thislineisunusedgreeting="Helloworld!";对日期的处理应当使用成熟的工具包,例如java.util.Calendar,mons.lang3.time.DateUtils,再拼接的方式会得到2001/02/29,这是一个非法的日期,在某些场景下会导致解析失败。intintyear=//月份从0开始计算,month1表示2月intmonth=1;intdate=intyearAmount=calendar=五、性能优化(PerformanceDynamicDictsupServiceBOnull;//推荐这样for(inti=0;i<size;i++){supServiceBO=(DynamicDict)forinti0;isizeiDynamicDictsupServiceBO=(DynamicDict)finalize尽量避免强制内存回收ArrayListArrayListStringStringtagabc";//这样是OKStringtagavarB Stringtext=for(inti=0;i<size;text ;//另外需要注意的是不要混用StringBuilder/StringBuffer和+操作符StringBuilderbuilder=newStringBuilder(10);for(inti=0;i<size;i++){builder.append("line"+builder.append("line

toCharArray()Doubled=newDouble(“3.67”); Doubled=newDouble(3.67); Stringstrnew Stringstr=系统

I/O六、RESTfulHTTPURLURIGET/zoos:列出所有动物园POSTzoosGETzoos/1PUT/zoos/1:更新某个指定动物园的信息(提供该动物园的全部信息)PATCHzoos/1:更新某个指定动物园的信息(提供该动物园的部分信息)DELETE/z

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论