美文网首页
写程序不要有冗余代码

写程序不要有冗余代码

作者: 无善无恶 | 来源:发表于2018-05-15 12:02 被阅读23次

    hi,你在看这篇文章是吧

    考你一个问题,下面这两段函数,执行结果一样么?

    
    
    public static String getKeyHash(final Context context) 
    
    {
            PackageInfo packageInfo = getPackageInfo(context, PackageManager.GET_SIGNATURES);
            if (packageInfo == null)
                return null;
    
            for (Signature signature : packageInfo.signatures) {
                try {
                    MessageDigest md = MessageDigest.getInstance("SHA");
                    md.update(signature.toByteArray());
                    return Base64.encodeToString(md.digest(), Base64.NO_WRAP);
                } catch (NoSuchAlgorithmException e) {
                    Log.w(TAG, "Unable to get MessageDigest. signature=" + signature, e);
                }
            }
            return null;
        }
        
    
    
        public static String getKeyHash2(final Context context) {
            PackageInfo packageInfo = getPackageInfo(context, PackageManager.GET_SIGNATURES);
            if (packageInfo == null)
                return null;
    
            for (Signature signature : packageInfo.signatures) {
                try {
                    MessageDigest md = MessageDigest.getInstance("SHA");
                    md.update(signature.toByteArray());
                    Log.w("LogLogLog",  Base64.encodeToString(md.digest(), android.util.Base64.NO_WRAP));
                    return Base64.encodeToString(md.digest(), Base64.NO_WRAP);
                } catch (NoSuchAlgorithmException e) {
                    Log.w("LogLogLog", "Unable to get MessageDigest. signature=" + signature, e);
                }
            }
            return null;
        }
    
    

    答案是:这两个函的返回结果不一样,导致我设置KeyHash一直都不对。

    原因就是getKeyHash2多了一行log.

    md.digest()这个函数多执行了一遍,所以最后就会不一样。

    写程序的时候,不要觉得一行log无所谓,要严谨呀。

    如果要加log,也应该这么加

    
    String keyHash = Base64.encodeToString(md.digest(),Base64.NO_WRAP)
    Log.w("LogLogLog",  keyHash);
    return keyHash;
    
    

    当你对写的代码不是百分之百了解的时候,为了风险可控,就不要随意的添加冗余代码。

    但是又有几个人能说自己对自己的代码百分之百了解呢?

    相关文章

      网友评论

          本文标题:写程序不要有冗余代码

          本文链接:https://www.haomeiwen.com/subject/gmuedftx.html