總結 CodeReview自查要注意的點

2021-10-13 05:34:19 字數 2679 閱讀 3156

細數過來,已經參加了不少codereview, 雖有開發規約的指引,但在review的過程中,還是會有不少問題暴露出來,本文會總結在codereview之前,有哪些可以先自查的點,更好的保證**的健壯性。

在codereview之前,我們先對**結構做一次剖析,開頭,我們先從最本質的物件導向說起,物件導向,有屬性,有方法,然後我們對屬性做了很多的修飾,比如加static 宣告為靜態,加 final 宣告為常量,加 private 宣告為私有。同樣,我們也會對方法做很多修飾,然後會在方法中呼叫別的方法,因為,在真正討論codereview之前,我們得先討論下**結構,如下所示,乙個檔案中,是分為以下幾大模組

import ***xpublic class xiaodao}
要有了上面大致的結構後,我們就可以逐段的去自檢。

當提到**cr的時候,那一定是分兩大部分, 一部分是**層面,即import是否合理,屬性/方法修飾是否合理,工具類使用是否合理。第二部分則是看業務邏輯,即寫的**有沒有完成即定的產研需求。本文也會從這兩個方面和大家一起**如何自檢

**層面的自檢,主要是上面所列的**結構是否是符合現有的業務,**場景,本文將以兩份**做乙個對比

import這個區域經常會被我們忽略掉,因為在新引入乙個類的時候 ,idea會幫我們自動引入,但是當我們刪**的時候,又不會幫我們自動刪 除,所以這時候就有了多餘的引用,如下所求:

如上圖所求,對乙個資料結構,我們開始想的是用list存,後來還是用map存,然後把list的宣告**給注釋掉了,但是上面的import並沒有刪掉,同樣的情況還可能出現在 stringutils上面,有團隊自己封裝的,有引的spring裡面的,有引的apache中的,就會在import區域,留下很多無用的引用。

格式化這個事,說大不大,說小不小,就是順手的乙個事,但是有個點要特別注意,只格式化自己修改的那一塊**,切記不要全選,不要格式化別人的**!!

格式化之前:

格式化之後:

這是乙個小細節,可能我們寫public會寫的比較順手,或者在開發的時候,把乙個公用方法,做了定製化改造,或者是把乙個私有方法做了通用的抽象等等,在跑了**邏輯沒問題之後,可能就忽略這些小細節了,但乙個定製化的方法,如果宣告成了public,其他開發的小夥伴在不知情的情況下呼叫了錯誤的邏輯,就有可能引發一些缺陷。如下圖所求

日誌這個東西是很難打的乙個東西,打少了,無法定位問題,打多了呢,又有太多的無用資訊。就本文而言,要檢查幾個必打的地方

入參,調外域界面前的引數,調外域介面返回的引數,進行一大段複雜處理邏輯之後的結果,有異常之後的資訊,準備返回給上層的返回值,如下所示:

public class main ", json.tojsonstring(args));

// 經過一系列的複雜的運算得到了param值 string param = "xiaodao"; logger.info("main,main,key param={}", param);

try ,result={}", param, result); } catch (exception e)

// 如果有返回值的話,還要記錄返回值 logger.info("main,main result={}", "result");

}/** * 假裝這是外域的介面 * @param param * @return */ private static string fakeinte***ce(string param)

}

可以說,我們在寫**的時候,十行有六行都是在對集合(list,map)處理,如果乙個方法**現對乙個集合多次遍歷的話,就要注意了,是不是可以合併在一起,如下所示:

public static void main(string args) 

}

在這次的迭代中,我負責的模組是***,其中主要的邏輯是******x,涉及到***表變更,***配置項變更,***定時任務變更。如涉及到多個配置項和定時任務,可提前列乙個**出來。

然後開始從**入口處,開始展示**,就是把上述的**結構中的每一部分講解清楚。可參考以下話術:

現在我有***x資訊,要經過***x的處理,得到***x結果。

然後要呼叫***x方法,得到***x結果,然後對***x結果進行***x的處理,得到***xx

最後完成了***x業務。

我相信上述這麼一段話,在大家開發的時候,一直迴響在大家腦海中,cr只不過是把這些話稍加整理,再表述出來給大家聽。參會的小夥伴也可以順著講的業務線,了解這一塊的業務,在串資料流的時候,也能發現一些處理欠缺可能引起風險的地方。

上述梳理,可以大家平時用以自我review**,我一直相信,寫**是一件創造藝術品的過程,是一件需要不斷打磨的過程,不是說完成了業務功能就可以了,要不斷的抽象,整理,沉澱才能寫出健壯的**!大家一起加油!!

為什麼要Code Review

剛才專注看了下zwchen的部落格,讀到code reivew這一篇,覺得自己也了說話的衝動。我們team實施code reivew近5年,到今天,我們的結論是 code review是我們專案成功的最有力的 下面我先談下我理解並實施的code review.1.code review的層次。最基礎...

為什麼要堅持code review

code review在我入職時,可以說是嚴格到令人髮指,不通過無法提交,而且經常占用整個開發時間的大約40 我當時的一段 可以說經常被打回來5,6次。有時最終提交的 都直接重構了當初的第一版。我也曾經因為code review,好幾次差點耽誤了開發進度。而現在我經常作為審核人員去review其他同...

個人總結 Code Review

昨天的 評審,對於我個人而言,有很大幫助,在此做如下總結 1 在寫乙個介面 類或者介面方法之前,須根據產品需求,理清思路。否則,到後期維護時會很困難。2 在寫class或者某個方法時,試著給予明了易懂的名稱,以減少不必要的註解。3 小心冗長的方法。冗長的方法會使方法的呼叫動作不易撰寫 閱讀 維護。應...