程式碼怎麼寫才能被面試官看上?小編帶你瞧瞧

wxt020發表於2020-10-31

工作了幾個月,感覺自己程式碼很不規範,有很多冗餘,比較亂,請問怎麼針對性的改善程式碼規範?

下面分享一篇大佬的規範程式碼實操。

程式碼能夠寫成這樣 666 啊,大佬收徒嗎?

一、MyBatis 不要為了多個查詢條件而寫 1 = 1

當遇到多個查詢條件,使用where 1=1 可以很方便的解決我們的問題,但是這樣很可能會造成非常大的效能損失,因為新增了 “where 1=1 ”的過濾條件之後,資料庫系統就無法使用索引等查詢最佳化策略,資料庫系統將會被迫對每行資料進行掃描(即全表掃描) 以比較此行是否滿足過濾條件,當表中的資料量較大時查詢速度會非常慢;此外,還會存在SQL 注入的風險。

反例:

<select id="queryBookInfo" parameterType="com.tjt.platform.entity.BookInfo" resultType="java.lang.Integer">select count(*) from t_rule_BookInfo t where 1=1<if test="title !=null and title !='' ">AND title = #{title} </if><if test="author !=null and author !='' ">AND author = #{author}</if></select>

正例:

<select id="queryBookInfo" parameterType="com.tjt.platform.entity.BookInfo" resultType="java.lang.Integer">select count(*) from t_rule_BookInfo t<where><if test="title !=null and title !='' ">title = #{title} </if><if test="author !=null and author !='' ">AND author = #{author}</if></where></select>

UPDATE 操作也一樣,可以用標記代替 1=1。地址:

二、迭代entrySet() 獲取Map 的key 和value

當迴圈中只需要獲取Map 的主鍵key時,迭代keySet() 是正確的;但是,當需要主鍵key 和取值value 時,迭代entrySet() 才是更高效的做法,其比先迭代keySet() 後再去透過get 取值效能更佳。

反例:

//Map 獲取value 反例:HashMap<String, String> map = new HashMap<>();for (String key : map.keySet()){String value = map.get(key);}

正例:

//Map 獲取key & value 正例:HashMap<String, String> map = new HashMap<>();for (Map.Entry<String,String> entry : map.entrySet()){String key = entry.getKey();String value = entry.getValue();


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69984164/viewspace-2731395/,如需轉載,請註明出處,否則將追究法律責任。

相關文章