华为Java编程军规,每季度代码验收标准
引言:
这个标准是衡量代码本身的缺陷,也是衡量一个研发人员本身的价值。
军规一:【避免在程序中使用魔鬼数字,必须用有意义的常量来标识。】
军规二:【明确方法的功能,一个方法仅完成一个功能。】
军规三:【方法参数不能超过5个】
军规四:【方法调用尽量不要返回null,取而代之以抛出异常,或是返回特例对象(SPECIAL CASE object,SPECIAL CASE PATTERN);对于以集合或数组类型作为返回值的方法,取而代之以空集合或0长度数组。】
军规五:【在进行数据库操作或IO操作时,必须确保资源在使用完毕后得到释放,并且必须确保释放操作在finally中进行。】
军规六:【异常捕获不要直接catch (Exception ex) ,应该把异常细分处理。】
军规七:【对于if „ else if „(后续可能有多个else if …)这种类型的条件判断,最后必须包含一个else分支,避免出现分支遗漏造成错误;每个switch-case语句都必须保证有default,避免出现分支遗漏,造成错误。】
军规八:【覆写对象的equals()方法时必须同时覆写hashCode()方法。】
军规九:【禁止循环中创建新线程,尽量使用线程池。】
军规十:【在进行精确计算时(例如:货币计算)避免使用float和double,浮点数计算都是不精确的,必须使用BigDecimal或将浮点数运算转换为整型运算。】
军规说明
军规一:【避免在程序中使用魔鬼数字,必须用有意义的常量来标识。】
说明:是否是魔鬼数字要基于容易阅读和便于全局替换的原则。0、1作为某种专业领域物理量枚举数值时必须定义常量,严禁出现类似NUMBER_ZERO的“魔鬼常量”。
军规二:【明确方法的功能,一个方法仅完成一个功能。】
说明:方法功能太多,会增加方法的复杂度和依赖关系,不利于程序阅读和将来的持续维护,无论是方法还是类设计都应符合单一职责原则。
军规三:【方法参数不能超过5个】
说明:参数太多影响代码阅读和使用,为减少参数,首先要考虑这些参数的合理性,保持方法功能单一、优化方法设计,如果参数确实无法减少,可以将多个参数封装成一个类(对象),同时考虑在新的类(对象)中增加相应的行为,以期更符合OOP。
军规四:【方法调用尽量不要返回null,取而代之以抛出异常,或是返回特例对象(SPECIAL CASE object,SPECIAL CASE PATTERN);对于以集合或数组类型作为返回值的方法,取而代之以空集合或0长度数组。】
说明:返回null会增加不必要的空指针判断,遗漏判断也会导致严重的NullPointerException错误。
军规五:【在进行数据库操作或IO操作时,必须确保资源在使用完毕后得到释放,并且必须确保释放操作在finally中进行。】
说明:数据库操作、IO操作等需要关闭对象必须在try -catch-finally 的finally中close(),如果有多个IO对象需要关闭,需要分别对每个对象的close()方法进行try-catch,防止一个IO对象关闭失败其他IO对象都未关闭。推荐做法如下:
Connection jdbcConnection = null;
Statement stmt = null;
try
{
........
}
catch (SQLException e)
{
........
}
finally
{
if (stmt != null)
{
try
{
stmt.close();
}
catch (SQLException e)
{
logger.log(Level.WARNING, "异常说明", e);
}
}
if (jdbcConnection != null)
{
try
{
jdbcConnection.close();
}
catch (SQLException e)
{
logger.log(Level.WARNING, "异常说明", e);
}
}
}
军规六:【异常捕获不要直接 catch(Exception ex) ,应该把异常细分处理。】
说明:catch (Exception ex)的结果会把RuntimeException异常捕获,RuntimeException是运行期异常,是程序本身考虑不周而抛出的异常,是程序的BUG,如无效参数、数组越界、被零除等,程序必须确保不能抛出RuntimeException异常,不允许显示捕获RuntimeException异常就是为了方便测试中容易发现程序问题。
军规七:【对于if „ else if „(后续可能有多个elseif …)这种类型的条件判断,最后必须包含一个else分支,避免出现分支遗漏造成错误;每个switch-case语句都必须保证有default,避免出现分支遗漏,造成错误。】
军规八:【覆写对象的equals()方法时必须同时覆写hashCode()方法。】
说明:equals和hashCode方法是对象在hash容器内高效工作的基础,正确的覆写这两个方法才能保证在hash容器内查找对象的正确性,同时一个好的hashCode方法能大幅提升hash容器效率。
军规九:【禁止循环中创建新线程,尽量使用线程池。】
军规十:【在进行精确计算时(例如:货币计算)避免使用float和double,浮点数计算都是不精确的,必须使用BigDecimal或将浮点数运算转换为整型运算。】
说明:浮点运算在一个范围很广的值域上提供了很好的近似,但是它不能产生精确的结果。二进制浮点对于精度计算是非常不适合的,因为它不可能将0.1——或者10的其它任何次负幂精确表示为一个长度有限的二进制小数。
相关推荐
10. **代码审查**:华为编程军规可能包含代码审查流程,通过同行评审发现潜在问题,提升团队整体编码水平。 以上只是部分基于华为JAVA编程规范的知识点,具体细节需要参考《JAVA编程军规.doc》《JAVA十大低级错误....
华为java编码军规,经典编码风格规范。极大提高你的编码能力
华为 Java 编程军规是衡量代码本身的缺陷,也是衡量一个研发人员本身的价值。该军规共十条,涵盖了编程中的各种细节,旨在提高代码的可读性、可维护性和可靠性。 军规一:避免在程序中使用魔鬼数字,必须用有意义的...
华为JAVA编程规范汇编.pdf
华为JAVA编码规范.pdf是华为公司编写的JAVA编程语言编码规范,旨在提供一个统一的编程风格和代码组织方式,以提高代码的可读性、维护性和可重用性。该规范涵盖了编程语言的基本结构、命名规则、代码组织、注释、编程...
华为Java代码格式format.xml华为Java代码格式format.xml华为Java代码格式format.xml
在编码排版规范方面,华为推荐的Java编程规范强调了使用统一的代码格式来提高代码的可读性。具体规则如下: 1. 缩进风格:程序块应使用4个空格进行缩进,避免使用制表符(TAB)以保证在不同开发环境下的兼容性。 2...
华为JAVA编程规范是华为公司制定的编程规范,旨在提高代码的阅读性和规范性。该规范涵盖了编程风格、命名惯例、编程实践等多方面的内容,旨在提高代码的可读性、可维护性和可扩展性。 1. 排版 华为JAVA编程规范...
华为Java语言编码规范.doc 本文档介绍了华为Java语言编程规范的相关知识点,涵盖...华为Java语言编程规范旨在确保代码的可读性、可维护性和可扩展性,涵盖编程规范、命名规范、注释规范、编码规范、JTEST规则等内容。
华为java安全编码规范考试3.1 血与泪整理除的答案,当前时间保证是最新的,基本所有题都能找到。有几题答案没写出来,但是写了所有的错误答案…………排除法
总的来说,《阿里华为Java编程规范(开发手册)》是一份全面的编程指南,旨在通过统一的编码标准和最佳实践,提升软件开发的效率和质量。开发者应深入学习并遵循这些规范,以打造高质量的Java应用。
《华为Java语言编程规范》是华为技术有限公司制定的一份企业技术规范,旨在为Java程序员提供一套标准的编码规范,以提高代码质量和可读性。这份规范涵盖了排版规范和注释规范等多个方面。 排版规范是Java编程的基础...
这个标题表明了一个参赛者在2018年的华为软件精英挑战赛复赛中使用的Java代码,这是一场面向IT专业人才的比赛,旨在考验参赛者的编程技能、算法理解和问题解决能力。 【描述】提到的“岭回归+均值+去噪预测结合比例...
这套规范不仅适用于Java语言,也可能覆盖其他编程语言,以确保代码的一致性和专业性。 首先,我们要理解“代码模板”。代码模板是一种预定义的代码结构,可以自动加载到文件或类中,以帮助开发者快速编写符合规范的...
Java编程规范是软件开发中的重要指导原则,它旨在提高代码质量、可读性、可维护性和团队协作效率。华为作为全球领先的ICT解决方案提供商,对于Java编程有着严谨的内部规范,以确保其软件产品的稳定性和可靠性。以下...