記錄遇到的2個代碼問題

最近在發(fā)布驗證過程中發(fā)現(xiàn)的2個代碼問題:

問題代碼1:

1.如下:當context.getExtendMap()不含F(xiàn)ORM_CODE_KEY時,期望是sellerCoordinationFormCode為null,這樣后續(xù)的if condition會判定不通過


2.但實際是if判斷通過,這是因為:String.valueOf(null) 返回"null"而不是null,見源碼:

    /**
     * Returns the string representation of the {@code Object} argument.
     *
     * @param   obj   an {@code Object}.
     * @return  if the argument is {@code null}, then a string equal to
     *          {@code "null"}; otherwise, the value of
     *          {@code obj.toString()} is returned.
     * @see     java.lang.Object#toString()
     */
    public static String valueOf(Object obj) {
        return (obj == null) ? "null" : obj.toString();
    }

總結下:對任何代碼變更要做功能測試覆蓋,哪怕是小小的一行改動,code review和功能測試二者交叉保證問題不被漏測,不要在不了解代碼細節(jié)的情況下預設期望(比如預設String.valueOf(null)會返回null)。

問題代碼2:

定義了接口的入?yún)ο?,對象中有個字段timeout類型為int(后續(xù)修改為Integer)



下面這段代碼原本期望當timeout不傳入任何值,設置timeout為3000,然后實際當timeout不傳入任何值時,timeout默認值不是null而是0


實測int類型會被初始賦值0。


?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容