gpt4 book ai didi

Java和C#下的参数验证方法

转载 作者:qq735679552 更新时间:2022-09-29 22:32:09 26 4
gpt4 key购买 nike

CFSDN坚持开源创造价值,我们致力于搭建一个资源共享平台,让每一个IT人在这里找到属于你的精彩世界.

这篇CFSDN的博客文章Java和C#下的参数验证方法由作者收集整理,如果你对这篇文章有兴趣,记得点赞哟.

参数的输入和验证问题是开发时经常遇到的,一般的验证方法如下:

?
1
2
3
4
5
6
7
8
9
10
11
12
public bool Register(string name, int age)
{
  if (string.IsNullOrEmpty(name))
  {
   throw new ArgumentException( "name should not be empty" , "name" );
  }
  if (age < 10 || age > 70 )
  {
   throw new ArgumentException( "the age must between 10 and 70" , "age" );
  }
  //...
}

这样做当需求变动的时候,要改动的代码相应的也比较多,这样比较麻烦,最近接触到了Java和C#下2种方便的参数验证方法,简单的介绍下.

Java参数验证:

采用google的guava下的一个辅助类:

?
1
import com.google.common.base.Preconditions;

示例代码:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
public static void checkPersonInfo( int age, String name){
   Preconditions.checkNotNull(name, "name为null" );
   Preconditions.checkArgument(name.length() > 0 , "name的长度要大于0" );
   Preconditions.checkArgument(age > 0 , "age必须大于0" );
   System.out.println( "a person age: " + age + ", name: " + name);
  }
 
  public static void getPostCode(String code){
   Preconditions.checkArgument(checkPostCode(code), "邮政编码不符合要求" );
   System.out.println(code);
  }
 
  public static void main(String[] args) {
   try {
    checkPersonInfo( 10 , "fdsfsd" );
    checkPersonInfo( 10 , null );
    checkPersonInfo(- 10 , "fdsfsd" );
    getPostCode( "012234" );
   
   } catch (Exception e) {
    e.printStackTrace();
   }
  }

当参数不满足要求的时候,抛出异常信息,异常中携带的信息为后面自定义的字符串,这样写就方便多了.

C#参数验证:

采用FluentValidation这个类库,参考地址在下面.

使用方法:

一个简单的Person类:

?
1
2
3
4
5
6
7
8
9
10
11
12
public class Person
  {
   public string Name { set ; get ; }
 
   public int Age { set ; get ; }
 
   public Person( string name, int age)
   {
    Name = name;
    Age = age;
   }
  }

Person的验证类:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
public class PersonValidator : AbstractValidator<Person>
  {
   public PersonValidator()
   {
    RuleFor(x => x.Name).NotEmpty().WithMessage( "姓名不能为空" );
    RuleFor(x => x.Name).Length(1,50).WithMessage( "姓名字符不能超过50" );  
    RuleFor(x => x.Age).GreaterThan(0).WithMessage( "年龄必须要大于0" );
   }
 
   private bool ValidName( string name)
   {
    // custom name validating logic goes here
    return true ;
   }
  }

使用:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
class Program
  {
   static void Main( string [] args)
   {
    Person customer = new Person( null ,-10);
    PersonValidator validator = new PersonValidator();
    ValidationResult results = validator.Validate(customer);
 
    bool validationSucceeded = results.IsValid;
    IList<ValidationFailure> failures = results.Errors;
    foreach (var failure in failures)
    {
     Console.WriteLine(failure.ErrorMessage);
    }
 
    Console.ReadKey();
   }
  }

FluentValidation的使用文档:http://fluentvalidation.codeplex.com/documentation 。

以上就是小编为大家带来的Java和C#下的参数验证方法的全部内容了,希望对大家有所帮助,多多支持我~ 。

最后此篇关于Java和C#下的参数验证方法的文章就讲到这里了,如果你想了解更多关于Java和C#下的参数验证方法的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com