最终每个对象、每个函数都是可信任的。数据、对象在创建的时候保证合法,就无需每次使用前都判断一次了。世界清静了
参数约定越严格越好,并且被调用函数需要尽量考虑到每种情况(如:List类型中的元素是否允许为空)
id: 没有任何修饰,默认一定不为空 type: Optional修饰,可能为null value: 必须不为空,且里面不允许存在空元素。 (语言层面无法限制,推荐用注解说明,函数注释说明也可以) 返回值:Optional修饰,可能为null public Optional<Integer> fun(Integer id, Optional<Integer> type, @AllNoneNull List<Integer> value) { }