設計-エラーコードを処理するコードを設計します

エラーコードを処理するコードを設計する

調べた質問は、私のプログラミングの概念に大いに役立つと言わざるを得ません。

この質問は、実際にインタビューで出会った質問です。主なものはエンジニアリング能力を調べることですが、当時はテーブルを使って最適化を進めることしか考えていなかったため、エラーコードの範囲を記録できず、思いもよらなかった。ただし、インタビュアーは、時間の複雑さはO(N)ではない可能性があるとヒントを与えたので、構成ファイルを使用してこの問題を解決しましょう。

请补全这个函数String getInfo(int errCode),输入错误码返回错误信息,比如:
错误代码1,用户名错误;
错误代码2,密码错误;
错误代码10-100,数据库错误;
错误代码200-1000,文件找不到错误。
要求这个函数要使修改错误码和错误信息时尽可能少修改代码(代码可维护)

エラーコードをクラスに抽象化し、2つの境界を使用してエラーコードの上限と下限を表し、それを構成ファイルまたはネットワークから読み取ったエラーコード情報と比較して、エラーコードフィールドを取得できます。時間の複雑さはO(N )が、コードの再利用性が大幅に向上します。

/**
 * 请补全这个函数String getInfo(int errCode),输入错误码返回错误信息,比如:
 * 错误代码1,用户名错误;
 * 错误代码2,密码错误;
 * 错误代码10-100,数据库错误;
 * 错误代码200-1000,文件找不到错误。
 * 要求这个函数要使修改错误码和错误信息时尽可能少修改代码(代码可维护)
 */
public class ErrCodeHelper {
    
    
    /**
     * 实现思路,把错误信息写在配置文件,或者从网络读取错误信息
     */
    public static List<ErrCode> errCodes;
    
    static class ErrCode{
    
    
        public int min;
        public int max;
        public String errInfo;

        public ErrCode(int min, int max, String errInfo) {
    
    
            this.min = min;
            this.max = max;
            this.errInfo = errInfo;
        }
    }
    
    public static String getInfo(int errCode){
    
    
        String errInfo=null;
        try {
    
    
            errInfo=getInfo(errCode,loadErrCodeList());
        } catch (Exception e) {
    
    
            e.printStackTrace();
        }
        return errInfo;
    }
    public static String getInfo(int errCode, List<ErrCode> errCodeList) throws Exception {
    
    
        if(errCodeList==null||errCodeList.isEmpty()){
    
    
            throw new Exception("ErrCode List Error");
        }
        for (ErrCode code:errCodeList){
    
    
            if(errCode>=code.min&&errCode<=code.max){
    
    
                return code.errInfo;
            }
        }
        throw new Exception("ErrCode Not Found Exception");
    }
    
    public static List<ErrCode> loadErrCodeList(){
    
    
        if(errCodes==null){
    
    
            //read from disk or network
            errCodes=new LinkedList<>();
        }
        return errCodes;
    }
}

おすすめ

転載: blog.csdn.net/qq_23594799/article/details/108012464