常量的优雅分类

常量分类

小伙伴们在写项目的时候肯定都有个类似Constants.java这样用来存储的常量的类吧。那你们是不是也和下面一样存储常量呢?

public class Constants {
	//theme type
    public static final String BLUE_THEME="BLUE";
    public static final String GRAY_THEME="GRAY";
    public static final String RED_THEME="RED";
	//db config
    public static final String DB_NAME="user.db";
    public static final String DB_PATH="/sdcard/";
    public static final String TABLE_NAME="user";
    //...
}

很明显的可以看出,上面的代码中的常量可以分为theme type和db config两大块。不能说上面的代码有错,可是一旦常量多起来的话就会造成常量的难管理。
前段时间有个同学发了一段代码给我看,大致如下:

public class Constants {

    public interface THEME_TYPE {
        String BLUE_THEME = "BLUE";
        String GRAY_THEME = "GRAY";
        String RED_THEME = "RED";
    }

    public interface DB_CONFIG {
        String DB_NAME = "user.db";
        String DB_PATH = "/sdcard/";
        String TABLE_NAME = "user";
    }
    //...
}

对比下二者的使用方法:

//第一种
theme.setTheme(Constanst.BLUE_THEME);
//第二种
theme.setTheme(Constanst.THEME_TYPE.BLUE_THEME);

明显的看出后者实现了对常量的分组效果,管理起来很方便,而且代码的逼格提高了一个档次。

Annotation Support Lib

有时候我们想限制用户的set操作,这时候可以使用谷歌的annotation support lib中的类型定义注解,代码如下:

@Retention(RetentionPolicy.SOURCE)
@IntDef({GenderAnn.FEMALE,GenderAnn.MALE})
public @interface GenderAnn {
    int MALE=1;
    int FEMALE=0;
}

使用方法:

public void setGender(@GenderAnn int pGender);

这样在调用setGender方法的时候只能设置GenderAnn.MALE和GenderAnn.FEMALE这2个值。
当然这里的2个常量可以参照之前那样写到Constants类中,但是不推荐,直接写在这个注解中岂不直观?

最后

建议多看别人的优质代码,看到高质量的的代码写法记得学以致用和分享~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值