接收数据校验判断逻辑怎么更加简洁?

大家好,有一个项目需要对接收的数据进行校验,数据第二位是功能码,目前功能码有0x02,0x03,0x04,0x06,0x08,0x09。校验有两个条件:一个是第二位的功能码是我们目前有的,另一个是接收的数据长度小于DEVICE_RECEIVE_DATA_MAX_LEN/8,不满足则退出,下面是我的代码:

/*判断数据异常*/
    if((1 == m_dwcurIndex && (0x02 != Ch && 0x03 != Ch && 0x04 != Ch && 0x06 != Ch && 0x08 != Ch && 0x09 != Ch)) || m_dwcurIndex >= DEVICE_RECEIVE_DATA_MAX_LEN/8)
    {
        SetRecvDataState(FALSE);
        m_dwcurIndex = 0;
        m_dwRecvLen = 0;
        return;
    }

目前我的校验逻辑功能可以满足项目需要,但是如果功能码变成十几个,这样逻辑判断就会变得冗余,这个判断逻辑怎么写比较简洁?

你的ch几乎没任何规律可言


        boolean isOk;
        switch (Ch) {
            case 0x02:
            case 0x03:
            case 0x04:
            case 0x06:
            case 0x08:
            case 0x09:
                isOk = true;
                break;
            default:
                isOk = false;
                break;
        }


    private int[] Chs = {0x02, 0x03, 0x04, 0x06, 0x08, 0x09};

    private boolean containsCh(int Ch) {
        for (int c : Chs) {
            if (c == Ch) {
                return true;
            }
        }
        return false;
    }

    protected void initData(int Ch) {
        if (!containsCh(Ch)) {
//            ...
        }
    }

这2种方案,你自己选一个吧

https://www.cnblogs.com/IT-Server/archive/2007/01/18/623679.html