effect java 学习摘要(6) - 方法

本文探讨了在软件开发中如何确保参数的有效性,包括使用注解、保护性拷贝等手段。同时介绍了如何设计清晰且易于维护的方法签名,比如避免过长的参数列表、使用枚举代替布尔值参数等技巧。

检查参数的有效性

  • 可以使用android注解,例如 :

     public <T> void register(@NonNull Class<? extends T> clazz) {
    
    }

必要时进行保护性拷贝

  • 对于构造器的每个可变参数进行保护性拷贝是必要的

    public class Period {
    
        private final Date start;
        private final Date end;
    
        public Period(Date start, Date end) {
            this.start = new Date(start.getTime());
            this.end =  new Date(end.getTime());
        }
    
        public Date start() {
            return new Date(start.getTime());
        }
    
        public Date end() {
            return  new Date(end.getTime());
        }
    }

谨慎设计方法签名

  • 谨慎的选择方法的名称. 遵循标准的命名习惯

  • 不要过于追求提供便利的方法. 当一项操作被经常用到的时候, 才考虑为他提供快捷方式

  • 避免过长的参数列表

    • 把方法分解成多个方法
    • 增加辅助类,来保存参数的分组
    • 从对象构建到方法调用都采用Builder模式, 最好定义一个对象来表示所有的参数
  • 参数选择 :

    • 参数类型有限选择接口来输入,而非类, 避免拷贝操作
    • 对于boolean值参数, 可以使用两个元素的枚举类型

慎用重载

  • 最佳修正方案 :
    • 使用单个方法来替代多个重载的方法, 利用 Class instanceof ?

慎用可变参数

  • 可变参数 : 申明两个参数, 一个是指定类型的正常参数, 另一个是这种类型的varargs参数

        public static int min(int firstArg, int... remainingArgs) {
            int min = firstArg;
            for (int arg : remainingArgs) {
                if (arg < min) {
                    min = arg;
                }
            }
            return min;
        }
    

返回0长度的数组或者集合,而非null

  • 使用Arrays or Collections , 避免返回null . 会导致NullPointException.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值