




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
Java编码规范修订历史记录日期版本说明作者审核人2023-7-110.0.1对Java代码风格、注释、命名、声明等规范进行描述黎建宁2023-8-50.0.2根据征询意见对Java编码规范进行修订黎建宁、冯彬杰、张史沛、李思行2023-8-0.0.对规范中出现模糊定义的地方进行细化描述黎建宁2023-0.0.4根据编码的约定情况,对注释、声明部分进行了补充黎建宁、李思行2023-0.0.5对方法的声明顺序进行补充黎建宁、李思行一简介1目的本规范的目的是使开发人员以标准的、规范的方式编写代码,养成良好的编码风格和习惯,形成公司内部编码约定,提高程序的可读性,可维护性以及一致性,同时减少项目组成员间技术沟通成本,提高团队开发效率。2范围1、本文档基于Java1.5的语法描述编码规范。2、本文档从代码风格、注释、命名、声明以及异常处理等五个方面对Java编码进行约定。3、本规范适用于所有运用Java技术的软件项目、产品。4、本规范适用的文件类型包括但不限于Java源文件、JSP文件、XML文件、HTML文件、JS文件以及AS文件。5、本规范建议采用统一的CodeStyle以及Formatter风格,通过IDE进行配置。3读者范围1、软件过程改进领导小组以及工作小组所有人员;2、所有运用Java技术的软件项目、产品的相关领导、项目负责人、设计人员、开发人员以及测试人员。3、所有涉及运用Java技术的软件项目、产品的相关人员。二代码风格1缩进1、使用空格代替Tab缩进,避免各种编辑器中看到不一样的代码格式。【注:强制执行,Eclipse可辅助排版】2、代码按层级缩进,每层级缩进4个字符(对于特定格式文件,可以按照实际进行调整,如XML文件可缩进2个字符),所有“{}”块内容都应该进行缩进。【注:强制执行,Eclipse可辅助排版】参考例子:2括号1、除数组的初始化定义外,“{}”中的语句应单独作为一行。。【注:强制执行,Eclipse可辅助排版】2、左括号“{”可根据开发习惯是否换行存放,如果换行存放,必须与其前导语句首字符对齐,右括号“}”必须作为单独一行存放并且与匹配行对齐(即左括号前导语句首字符)。。【注:强制执行,Eclipse可辅助排版】3、在项目内部,相同类型的文件,其括号的风格必须统一。。【注:强制执行,Eclipse可辅助排版】参考例子:3空格1、操作符两端必须带有空格符。【注:强制执行,Eclipse可辅助排版】参考例子: 2、各并行元素(如函数参数)间以空格符隔开,空格符放在逗号后方。参考例子:【注:强制执行,Eclipse可辅助排版】3、无特别要求,括号“{}”、“[]”、“()”左右方尽量不要增加无必要性的空格符。【注:强制执行,Eclipse可辅助排版】参考例子:4空行1、同一个编译单元间(包定义、导入声明、类)应以空行相隔。参考例子:【注:强制执行,Eclipse可辅助排版】2、类定义内部各元素间(字段定义、方法)应以空行相隔。参考例子:【注:强制执行,Eclipse可辅助排版】3、同一方法内实现不同的功能之间应以空行相隔。【注:强制执行】4、不能无理由出现大片空行。【注:强制执行】5控制语句1、对于循环控制等元素块,不管是否带有body,都应该以{}包含。参考例子:【注:强制执行】6行宽1、每行代码尽量控制行宽在100字以内,当超出100字时候,代码应当进行缩进。【注:非强制执行,属加分项】2、方法的缩进应当保证参数对齐。【注:非强制执行,属加分项】参考例子:3、对于过长的SQL/HQL语句,则采用关键字对齐方式,具体可通过PL/SQL等工具进行代码的格式化。【注:非强制执行,属加分项,附带《sql规范》一并考核】参考例子:7类、函数1、每个函数的代码长度应尽量控制在50行以内(不包含注释),如果函数功能过于庞大,可把独立的功能段单独抽取出来作为子函数。【注:非强制执行,属加分项】2、每个类的代码长度应尽量控制在1000行以内(不包含注释),如果类功能过于庞大,可通过组合的方式来分解类。【注:非强制执行,属加分项】三注释1基本原则1、注释目的在于增加代码清晰度,使代码易于被其他开发人员理解。【注:强制执行】2、保持注释简洁,禁止为了注释而注释。【注:强制执行】3、注释除带有代码功能外,还应带有描述上下文意图,具体描述其原因。4、除变量定义等较短语句的注释可用行尾注释外,其他注释当避免使用行尾注释。5、对描述较长的注释,应当使用HTML标记进行格式化,便于生成的Java易阅读和理解。【注:强制执行】2文件、包1、文件、包头部应当带有注释,描述其功能、作用、作者、创建时间、修改历史等信息。【注:非强制执行,属加分项】参考例子:3类、接口1、对类、接口的注释应当符合Java规范。【注:强制执行】2、类、接口定义必须标记功能、作用、作者、时间。【注:强制执行】3、当代码基线定义后,后续维护中新增的方法或字段在类、接口声明头部中应当添加修订记录,注明时间、原因以及作者。【注:非强制执行,属加分项】参考例子:4方法1、对方法的注释应当符合Java规范。【注:强制执行】2、方法定义应带有功能、作用、执行条件(如果有)、参数,对于复杂功能的方法,应当带有例子描述。【注:功能、作用、执行条件(如果有)、参数属强制执行;例子描述属非强制执行,属加分项】3、每个方法中含有的参数以及返回值应当描述其类型、作用、值的范围,对方法的影响。【注:强制执行】4、当方法抛出自定义的受控异常(CheckedException,不含工具、框架抛出的异常)时,必须对异常产生的原因进行描述,便于调用者捕捉。【注:强制执行】参考例子:5、对规范中约定的方法,如回调方法、getter/setter方法,只要遵守其命令约定,均不需要编写注释。【注:非强制执行】参考例子:6、如果方法内部涉及复杂的算法、关键步骤或难以理解的语句,应当添加注释标明其含义。【注:非强制执行,属加分项】7、对于超过一行注释,必须采用“/**/”进行标注,而单行注释可采用“//”标注。【注:强制执行】5变量1、全局变量、静态变量、类中的字段应当带有注释。【注:强制执行】参考例子:2、对规范中约定的变量,如注入对象(如Service、DAO),通讯对象(如RemoteObject),只要遵守其命令约定,均不需要编写注释。【注:非强制执行,属加分项】参考例子:3、对于方法内部产生的临时变量,应当尽量添加注释,标明其中的作用。四命名1基本原则1、文件,类,函数,变量,命名必须采用可准确表达其意义的英文单词。2、命名不能和关键字相同。【注:强制执行】3、尽量避免使用出现误解的词汇。4、不允许使用拼音命名,全部使用英文单词或缩写命名。【注:强制执行】2文件、包1、文件名第一字母应大写。【注:强制执行】2、文件名应尽量描述该文件作用。【注:非强制执行,但采用拼音命名需扣分】3、文件名应使用名词或形容词+名词。【注:强制执行】4、包名一般以项目或模块名进行命名,采用小写。【注:强制执行】5、包名组成规则[基本包].[项目名].[模块名].[子模块名]...【注:强制执行】参考例子:6、禁止把类直接定义在默认包下。以下行为必须禁止:【注:强制执行】3类、接口1、类、接口名第一字母应大写。【注:强制执行】2、类名应尽量描述该类作用。【注:强制执行】3、类名应使用名词或形容词+名词。【注:强制执行】4、如果需要用到多个单词表达其意义,每个单词第一个字母必须用大写标识。【注:强制执行】参考例子:5、类名不使用下划线。【注:强制执行】6、如果用到某些特定名词作为类名,应保持该特定名词,如“ADOHelper”。【注:强制执行】7、接口的第一个字母应为“I”,其他命名规则与普通类名相同。【注:强制执行】8、对于DAO类,其命名规则为:名词+“DAO”,对于应用服务类,其命名规则为:名词+“Service”。【注:强制执行】9、如果类为持久类,需要与数据库表进行绑定的,其命名在忽略前缀以及下划线等特殊字符的情况下,应与数据库表名保持一致。【注:强制执行】以下行为必须禁止:4字段1、字段名第一字母应小写。【注:强制执行】2、字段名应尽量描述该字段的作用。【注:强制执行】3、字段名应使用名词或形容词+名词。【注:强制执行】4、如果需要用到多个单词表达其意义,除第一个字母外,每个单词第一个字母必须用大写标识。【注:强制执行】5、如果字段所在类为持久类,需要与数据库表进行绑定的,其命名在忽略前缀以及下划线等特殊字符的情况下,应与数据库字段名保持一致。【注:强制执行】5方法1、方法名第一字母应小写。【注:强制执行】2、方法名应尽量描述该方法的作用。【注:强制执行】3、方法名应使用“动词+名词”形式命名。【注:强制执行】4、如果需要用到多个单词表达其意义,除第一个单词外,其他单词第一个字母必须用大写标识。【注:强制执行】5、对于常用的DAO查询方法,方法应当表明方法出处、数据的来源以及查询依据。如getOrderListByCustomer方法根据顾客获取订单列表,此方法由Order模块提供而不是Customer模块。【注:(1)强制执行,但条件定义为非强制执行,即getOrderListByCustomer中的ByCustomer为非强制执行】6、回调方法应使用“Callback”作为方法后缀,如非特殊回调方法,可采用“调用方法+Callback”命名规则,如login方法回调,其方法命名为loginCallback。【注:强制执行】7、Flex各种事件,采用“on”作为方法前缀命名,如非特殊事件,可采用“on+方法名”命名规则,如createComplete事件中,其方法命名为onCreateComplete,如果存在多个相同的事件,采用“on+组件ID+方法名”命名规则。【注:强制执行】6变量1、变量名第一字母应小写。【注:强制执行】2、变量名应尽量描述该变量的作用。3、变量名一般使用“形容词+名词”或单个名词,布尔变量应使用含有“判断意义的单词+名词”,例如判断是否已关闭的变量:booleanisClosed,禁止声明类似aaa、bb无法定义、理解的变量。【注:强制执行】4、如果需要用到多个单词表达其意义,除第一个单词外,其他单词第一个字母必须用大写标识。【注:强制执行】5、用于for循环的局部变量可使用i等单个字母。【注:非强制执行】7常量1、常量名应尽量描述该常量的作用。【注:非强制执行,但采用拼音命名需扣分】2、常量名一般使用“形容词+名词”或单个名词。【注:强制执行】3、如果需要用到多个单词表达其意义,单词间应通过“”分割。【注:强制执行】参考例子:8组件变量1、组件变量符合变量命名规则。【注:强制执行】2、组件变量名一般采用组件前缀+变量名命名。【注:强制执行,表单内的组件变量非强制执行】3、一般情况下,组件前缀可采用组件缩写(见本章第9节Flex命名约定表)或全名表示,但对于过长的组件命名,建议采用缩写标识。(新增的必须执行)【注:强制执行,因考虑其对旧项目的改动性太大,故该考核只针对新增的代码模块,其中Flex命名约定表里的组件若需要缩写标识,则必须是Flex命名约定表中对应的缩写标识】4、对于某些显示数据库字段的控件,其变量名应对应数据库字段名。【注:强制执行】9附Flex命名约定表组件全名组件名称缩写Controls类:AdvancedDataGridadgAlertalButtonbtnCheckBoxchkColorPickercrpComboBoxcmbDataGriddgDateChooserdcDateFielddfHSliderhslHorizontalListhorlstImageimgLabellblLinkButtonlnkbtnListlstNumericSteppernsOLAPDataGridodgPopUpButtonpubPopUpMenuButtonpumbProgressBarprgRadioButtonrdoRadioButtonGrouprdogRichTextEditorrtxSWFLoaderswflTexttxTextAreatxaTextInputtxiTileListtltTreetreVSlidervslVideoDisplayvdpLayout类:ApplicationControlBaracbCanvascvsControlBarctbFormfmFormHeadingfmhGridgdHBoxhbHDividedBoxhdbHrulehrModuleLoadermdlPanelpnlSpacerspcTiletilTitleWindowtilwVBoxvbVDividedBoxvdbVRulevrNavigators类:AccordionaodButtonBarbtnbLinkBarlkbrMenuBarmnbTabBartabTabNavigatortbnToggleButtonBartbbViewStackvskCharts类:AreaChartarecBarChartbarcBubbleChartbubcCandlestickChartcancColumnChartcolcHLOCCharthloccLegendlgdLineChartlincPieChartpiecPlotChartploc自定义组件根据基础组件进行自定义组合注意:基于约定优于配置原则,若规范中定义的命名规则与组件约定的规则存在冲突,以组件约定的规则为优先。参考例子:五声明1类、接口1、可见性必须显式声明。【注:强制执行】2方法1、可见性必须显示声明。【注:强制执行】2、尽可能减少类与类之间耦合,尽量限制成员函数的可见性(不要扩大其可见范围)。【注:非强制执行,属加分项】3、如果存在多个参数,按照功能的相似性,应放到一齐。【注:强制执行】4、对于同样可见性的方法,按照功能的相似性,应放到一齐。(如as中应当将事件、回调方法、引用方法区分存放)。【注:强制执行】5、对于重载的方法,按参数的个数,从少到多排序。【注:强制执行】6、方法按照其属性以及可见性,按以下顺序排序:构造方法、静态公共方法、静态私有方法、受保护方法、私有方法、以及继承自Object的方法(as代码按照实际情况进行调整)。【注:强制执行】7、方法的声明顺序按照以下优先级声明:功能相似性---》可见性---》参数个数列子:publicvoidsaveUser(Useruser)
publicvoidsaveUser(Useruser,LongorgId)
publicvoidsaveUsers(List<User>user,LongorgId,LongstationId)
privatevoidsaveUsers(List<User>user)【注:强制执行】3字段1、不要把字段声明为公有,应当设置为私有,通过getter以及setter访问(仅针对Java)。【注:强制执行】2、非同级变量不能使用一样或者相近的名字。如five、fine。【注:强制执行】3、变量按照其属性以及可见性,按以下顺序排放:常量、类变量、实例变量、公有字段、受保护字段、私有字段、可以将私有变量声明在类或接口的最后(as代码按照实际情况进行调整)。【注:强制执行】4、字段应通过this、super显式调用。【注:强制执行】4变量1、方法中的变量在声明时必须带有初始值,对于无法初始化的变量,可定义为null(不含字段)。【注:强制执行】2、变量应在其使用时进行定义,减少变量作用域以及作用范围,禁止变量定义后没有使用。【注:非强制执行,但出现定义的变量没有使用这种情况,需要扣分】六异常处理1、凡涉及到创建实例,使用数据库对象,使用事务对象,使用COM+对象,使用线程对象,操作网络连接等代码,均应使用“try-catch”对或throws命令。【注:强制执行】2、凡涉及代码可能抛出异常的,均应使用“try-catch”对或throws命令。【注:强制执行】3、捕捉CheckedException类异常(直接集成自Exception)时,必须输出详细错误信息,如堆栈信息,并进行日志记录。【注:强制执行】
社会实践报告系别:班级:学号:姓名:作为祖国未来的事业的继承人,我们这些大学生应该及早树立自己的历史责任感,提高自己的社会适应能力。假期的社会实践就是很好的锻炼自己的机会。当下,挣钱早已不是打工的唯一目的,更多的人将其视为参加社会实践、提高自身能力的机会。许多学校也积极鼓励大学生多接触社会、了解社会,一方面可以把学到的理论知识应用到实践中去,提高各方面的能力;另一方面可以积累工作经验对日后的就业大有裨益。进行社会实践,最理想的就是找到与本专业对口单位进行实习,从而提高自己的实战水平,同时可以将课本知识在实践中得到运用,从而更好的指导自己今后的学习。但是作为一名尚未毕业的大学生,由于本身具备的专业知识还十分的有限,所以我选择了打散工作为第一次社会实践的方式。目的在于熟悉社会。就职业本身而言,并无高低贵贱之分,存在即为合理。通过短短几天的打工经历可以让长期处于校园的我们对社会有一种更直观的认识。实践过程:自从走进了大学,就业问题就似乎总是围绕在我们的身边,成了说不完的话题。在现今社会,招聘会上的大字报都总写着“有经验者优先”,可还在校园里面的我们这班学子社会经验又会拥有多少呢?为了拓展自身的知识面,扩大与社会的接触面,增加个人在社会竞争中的经验,锻炼和提高自己的能力,以便在以后毕业后能真正真正走入社会,能够适应国内外的经济形势的变化,并且能够在生活和工作中很好地处理各方面的问题,我开始了我这个假期的社会实践-走进天源休闲餐厅。实践,就是把我们在学校所学的理论知识,运用到客观实际中去,使自己所学的理论知识有用武之地。只学不实践,那么所学的就等于零。理论应该与实践相结合。另一方面,实践可为以后找工作打基础。通过这段时间的实习,学到一些在学校里学不到的东西。因为环境的不同,接触的人与事不同,从中所学的东西自然就不一样了。要学会从实践中学习,从学习中实践。而且在中国的经济飞速发展,又加入了世贸,国内外经济日趋变化,每天都不断有新的东西涌现,在拥有了越来越多的机会的同时,也有了更多的挑战,前天才刚学到的知识可能在今天就已经被淘汰掉了,中国的经济越和外面接轨,对于人才的要求就会越来越高,我们不只要学好学校里所学到的知识,还要不断从生活中,实践中学其他知识,不断地从各方面武装自已,才能在竞争中突出自已,表现自已。在餐厅里,别人一眼就能把我人出是一名正在读书的学生,我问他们为什么,他们总说从我的脸上就能看出来,也许没有经历过社会的人都有我这种不知名遭遇吧!我并没有因为我在他们面前没有经验而退后,我相信我也能做的像他们一样好.我的工作是在那做传菜生,每天9点钟-下午2点再从下午的4点-晚上8:30分上班,虽然时间长了点但,热情而年轻的我并没有丝毫的感到过累,我觉得这是一种激励,明白了人生,感悟了生活,接触了社会,了解了未来.在餐厅里虽然我是以传菜为主,但我不时还要做一些工作以外的事情,有时要做一些清洁的工作,在学校里也许有老师分配说今天做些什么,明天做些什么,但在这里,不一定有人会告诉你这些,你必须自觉地去做,而且要尽自已的努力做到最好,一件工作的效率就会得到别人不同的评价。在学校,只有学习的氛围,毕竟学校是学习的场所,每一个学生都在为取得更高的成绩而努力。而这里是工作的场所,每个人都会为了获得更多的报酬而努力,无论是学习还是工作,都存在着竞争,在竞争中就要不断学习别人先进的地方,也要不断学习别人怎样做人,以提高自已的能力!记得老师曾经说过大学是一个小社会,但我总觉得校园里总少不了那份纯真,那份真诚,尽管是大学高校,学生还终归保持着学生的身份。而走进企业,接触各种各样的客户、同事、上司等等,关系复杂,但我得去面对我从未面对过的一切。记得在我校举行的招聘会上所反映出来的其中一个问题是,学生的实际操作能力与在校理论学习有一定的差距。在这次实践中,这一点我感受很深。在学校,理论的学习很多,而且是多方面的,几乎是面面俱到;而在实际工作中,可能会遇到书本上没学到的,又可能是书本上的知识一点都用不上的情况。或许工作中运用到的只是很简单的问题,只要套公式似的就能完成一项任务。有时候我会埋怨,实际操作这么简单,但为什么书本上的知识让人学得这么吃力呢?这是社会与学校脱轨了吗?也许老师是正确的,虽然大学生生活不像踏入社会,但是总算是社会的一个部分,这是不可否认的事实。但是有时也要感谢老师孜孜不倦地教导,有些问题有了有课堂上地认真消化,有平时作业作补充,我比一部人具有更高的起点,有了更多的知识层面去应付各种工作上的问题,作为一名大学生,应该懂得与社会上各方面的人交往,处理社会上所发生的各方面的事情,这就意味着大学生要注意到社会实践,社会实践必不可少。毕竟,很快我就不再是一名大学生,而是社会中的一分子,要与社会交流,为社会做贡献。只懂得纸上谈兵是远远不及的,以后的人生旅途是漫长的,为了锻炼自己成为一名合格的、对社会有用的人才.很多在学校读书的人都说宁愿出去工作,不愿在校读书;而已在社会的人都宁愿回校读书。我们上学,学习先进的科学知识,为的都是将来走进社会,献出自己的一份力量,我们应该在今天努力掌握专业知识,明天才能更好地为社会服务。实践心得:虽然这次的实践只有短短的几天,而且从事的是比较简单的服务工作,但是通过与各种各样的人接触,还是让我学会了很多道理。首先是明白了守时的重要性。工作和上学是两种完全不同的概念,上学是不迟到很多时候是因为惧怕老师的责怪,而当你走上了工作岗位,这里更多的是由于自己内心的一种责任。这种责任是我学会客服自己的惰性,准时走上自己的岗位。这对我以后的学习生活也是一种鞭策,时刻牢记自己的责任,并努力加强
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年齐齐哈尔货运从业资格证考试一共多少题
- 安全文明游戏
- 人参订购合同标准文本
- 停车场共用合同标准文本
- 代理销售合同范例范例
- 激发幼儿园小班的艺术潜能展示创意天地计划
- 强化仓库装卸作业的安全管理计划
- 公装安全合同标准文本
- 公司出资管理合同标准文本
- 2025零售业劳动合同样本(合同版本)
- 建筑节能新路径:严寒地区老旧建筑改造
- 2024年宁波枢智交通科技有限公司招聘考试真题
- 数学丨湖北省八市2025届高三下学期3月联考数学试卷及答案
- 2024年贵州省普通高中学业水平选择性考试地理试题
- 2024年山东轻工职业学院招聘笔试真题
- 2024年中国工商银行远程银行中心招聘考试真题
- 护理查房实践报告
- 2025年文化节庆活动赞助商合作协议书
- 2025年医学类单招试题及答案
- 3.1《中国科学技术史序言(节选)》教学设计-【中职专用】高二语文同步讲堂(高教版2024拓展模块上册)
- 连乐铁路指导性施工组织设计
评论
0/150
提交评论