`
lvhuiqing
  • 浏览: 258004 次
  • 性别: Icon_minigender_1
  • 来自: 沈阳
社区版块
存档分类
最新评论

关于java代码的参数校验

 
阅读更多
<div>每次项目组代码评审的时候,都会因为这个问题跟大家争论一会儿,自己总结了自己的想法如下:</div>
<div>1,首先要弄清楚参数校验需要校验的是哪些参数。我觉得参数校验仅仅需要校验外来用户输入给我们系统的参数。比如做为车载后装来说,车机给我们的参数,这样的参数校验越严格越好。比如做为金梅华的项目来说,服务器端的校验时不可省略的,页面端的校验不能替代服务器端的校验,即使页面端也是我们自己开发的。</div>
<div>2,要弄清楚为什么要做参数校验。我觉得参数校验的目的有三个:1,安全性的考虑,防止恶意用户输入恶意代码。比如恶意的sql语句有可能把整个数据库down掉。2,性能上的考虑,如果参数校验出错的话,可以立刻给出具体的提示消息,而不是一堆无意义的结果,可加改善用户体验。3,还有一种情况,如果用户没有输入值,或输入错误值的话,我们可以给出默认值,这可以增加程序的强壮性。</div>
<div>3,没有必要的参数校验。我觉得在我们自己工程的内部,参数校验时可以省略的,甚至是必须省略的。比如,我写了一个方法,需要输入五个参数,这个方法是给杨艳用的。这个时候,没有必要对这五个参数进行校验。因为如果参数没有校验的话,杨艳调用我的方法抛出空指针异常,或者其他类型的异常<span style="color: #ff9900;">,</span><span style="color: #ff0000;">这说明杨艳的程序逻辑有问题,这样的错误应该在代码调试阶段避免。</span>这样的问题发现的越早越好。如果我们做了过度的参数校验的话,反而有可能增加代码调试阶段的难度。</div>
<div>4,参数校验不能做什么。无论多么严格的参数校验都不可能避免同事的代码错误(异常的处理也是同样)。</div>
<div>5,不能做参数校验的场合,破坏参数完整性的场合。如果我需要得到同事(而不是用户)的四个参数,那么这四个参数必须同时存在,不能说同事给我输入了三个参数和一个null值,我的程序还能继续执行。这样的执行没有任何意义,而且会把代码逻辑错误掩盖。</div>
<div>6,我觉得我们现在参数校验的目的很多都是源于“自己脆弱的心灵”。那就是不愿意让自己的代码在被别人调用的时候,抛出一大堆异常。因为那样会让我们心情变得糟糕。但是调试阶段发现的问题越多,我们程序强壮性就会越好。因此,我们应该让自己变得坚强。</div>
分享到:
评论

相关推荐

    注解+AOP优雅的实现java项目的接口参数校验(含源码)

    基于Spring boot + maven,以注解+AOP方式实现的java后端项目接口参数校验框架。迄今为止使用最简单、最容易理解的参数校验方案。博客地址:https://blog.csdn.net/weixin_42686388/article/details/104009771

    Java计算校验和源码

    ### Java计算校验和源码知识点解析 #### 一、概述 本文将深入解析一个用于计算十六进制数据校验和的Java方法:`makeChecksum`。该方法主要用于确保数据在传输过程中的完整性和一致性,避免因网络传输等问题导致的...

    java后台注解校验工具类

    总的来说,`java后台注解校验工具类`是Java开发中的一个重要工具,它帮助我们在后端有效地管理数据验证,提高了代码质量和用户体验。正确地使用注解和验证工具类,能够减少因数据问题导致的程序错误,增强系统的健壮...

    JavaCRC校验

    本文详细介绍了Java中实现CRC校验的方法和原理,通过具体的代码示例解析了CRC校验的具体实现过程。理解CRC校验的工作机制对于开发人员来说非常重要,尤其是在处理数据传输和存储的场景下,能够有效地提高系统的稳定...

    带CRC校验功能的串口通信源代码(包含主机和从机源代码和说明文档)

    此外,它还可能提供关于如何在实际项目中集成和使用这些代码的指导。 总的来说,这个资源对于需要实现可靠串口通信的开发者来说非常有价值。通过学习和理解这套源代码,你可以深入掌握串口通信和CRC校验技术,并将...

    Java代码中对IP精确格式的校验

    在`CheckIP.java`文件中,我们可以定义一个静态方法`isValidIP(String ip)`,该方法接受一个字符串作为参数,返回值为布尔类型,表示输入的字符串是否符合IP地址的格式。 ```java public class CheckIP { public ...

    服务端JSR303参数校验md,学习代码

    【标题】"服务端JSR303参数校验md,学习代码"涉及的主要知识点是服务端参数验证,这是Java后端开发中的一个重要环节,确保输入数据的有效性和安全性。JSR303(Java Bean Validation)是Java平台的一个标准,用于进行...

    JAVA验证身份证号码校验码是否正确.zip

    总结来说,Java验证身份证号码校验码是否正确的关键是理解身份证号码的构成规则和校验码的计算方法,然后编写相应的代码进行逻辑判断。通过上述方法,我们可以在Java程序中实现对身份证号码的准确验证,确保处理个人...

    java写的身份证号码校验类

    下面是一段Java代码实现,该代码实现了上述校验码计算逻辑: ```java public class IDCardValidator { /** * 校验身份证号码的最后一位。 * * @param id 身份证号码字符串 * @return 根据身份证号码计算出的...

    java 利用POI对Execel表格的统一导入与校验(利用Hibernate Validator)

    6. **配置驱动**: "所有的都是可配置的"表明该导入校验系统设计得相当灵活,可以通过配置文件或代码参数来设定校验规则和处理逻辑,而无需修改核心代码。这种设计允许快速适应业务变化,降低维护难度。 7. **执行...

    车牌识别java代码

    综上所述,这个Java车牌识别代码项目结合了图像处理和机器学习,为开发者提供了一个实践车牌识别技术的平台,同时也为相关领域的学习者提供了宝贵的参考资料。通过深入学习和理解,我们可以进一步提升自己的技能,并...

    CRC冗余校验系统java代码

    在提供的压缩包中,`crc`文件可能包含了具体的Java源代码,展示了如何实现这些CRC校验。代码通常会包括定义CRC计算的函数,对输入数据进行位操作,以及使用Java的I/O流(如InputStream和OutputStream)进行数据读写...

    组织机构代码效验

    这类函数通常会接收一个九位的字符串作为参数,按照上述校验规则计算并返回校验结果,例如返回true表示有效,false表示无效。 综上所述,组织机构代码是中国机构信息管理中的关键元素,它的正确验证对于数据交换和...

    自定义校验注解框架(validator)

    综上所述,自定义校验注解框架"monkey-validator"可能包括了上述步骤的实现,提供了方便快捷的方式来创建和管理项目特定的参数校验规则。通过学习和使用这个框架,开发者可以更好地理解Java的注解机制以及如何构建...

    excel导入动态校验,自定义注解动态校验

    注解是一种元数据,可以提供有关代码的附加信息,通常用于简化代码并提高可读性。在导入Excel数据时,开发者可以创建自定义注解,这些注解定义了特定列或单元格的数据验证规则。例如,你可以创建一个`@ValidEmail`...

    md5 java 代码

    给定的文件信息提供了一个Java代码示例,用于实现MD5哈希算法,下面将详细解析这段代码,并深入探讨MD5算法在Java中的应用。 ### MD5算法简介 MD5(Message-Digest Algorithm 5)是RSA数据安全公司设计的一种散列...

    Java连接ODPS文档和代码

    Java SDK是ODPS提供的一种编程接口,允许开发者通过编写Java代码来与ODPS进行交互。以下将详细介绍Java连接ODPS的相关知识点。 **1. 安装和配置ODPS Java SDK** 首先,你需要在项目中引入ODPS Java SDK的依赖库。...

    SpringBoot 中使用 Validation 框架实现控制器层参数校验的最佳实践

    适合人群:熟悉 Java 编程语言和有一定 Web 开发经验的技术人员,特别是希望掌握高效参数校验技巧的 SpringBoot 应用开发者。 使用场景及目标:本文不仅有助于开发者理解参数校验的基础概念,还能提升他们在实际项目...

    java代码命名规范.doc

    【Java代码命名规范】 在Java编程中,遵循良好的命名规范是至关重要的,它不仅提高了代码的可读性,还能让团队成员更容易理解彼此的代码。以下是一些关键的Java代码命名规则,这些规则通常适用于文件、类、接口、...

    java累加和校验实现方式16进制(推荐)

    在给出的Java代码示例中,首先通过makeChecksum函数来实现字符串的16进制累加和校验。函数的定义如下: ```java public static String makeChecksum(String data) ``` 参数data是一个字符串,代表需要进行校验的...

Global site tag (gtag.js) - Google Analytics