米利唐_后腰_乌克兰足球超级联赛_中国竞彩欧赔 - 足球竞彩分析

集團官網
  • 國家級全民數字素養與技能培訓基地
  • 河南省第一批產教融合型企業建設培育單位
  • 鄭州市數字技能人才(碼農)培養評價聯盟

提升 | 高級程序員才會注意的16個細節

編輯:云和數據 日期:2020-12-07 08:25

一個優秀的程序員,往往有著良好的代碼習慣,每個好習慣都是一筆財富。在寫代碼的時候,注意這些細節,可以讓你的bug減少很多,快來學學吧!

001.jpg

1. 代碼自測

在完成代碼的時候,有些初級程序員往往會偷懶,不去檢查自己的代碼,結果一跑起來問題多多。對于項目來說,即使修改了一行很小的代碼,都有可能出現各種各樣的問題,所以自測一下非常重要。

2.入參校驗

入參校驗是每個程序員的必備素養,很多低級bug都是不校驗參數導致的。舉個例子:如果你的數據庫字段設置為varchar(16),對方傳了一個32位的字符串過來,你不校驗參數,「插入數據庫直接異常」了。

002.jpg

3.接口兼容

在修改老接口時,一定要思考接口的兼容性,很多新手程序員因為考慮問題太簡單而犯錯,就會導致非常嚴重的后果。

4.添加注釋

有一定工作經驗的程序員,往往會有個壞毛病,那就是不做注釋。一般的代碼沒必要添加太多注釋,但是,如果是「業務邏輯很復雜的代碼」,真的非常有必要寫「清楚注釋」。清楚的注釋,更有利于后面的維護。

003.jpg

5.使用完IO資源流,需要關閉

應該大家都有過這樣的經歷,windows系統桌面如果「打開太多文件」或者系統軟件,就會覺得電腦很卡。當然,我們linux服務器也一樣,平時操作文件,或者數據庫連接,IO資源流如果沒關閉,那么這個IO資源就會被它占著,這樣別人就沒有辦法用了,這就造成「資源浪費」。

6.避免低級錯誤(如數組邊界溢出,被零除等)

日常開發中,我們需要采取措施規避「數組邊界溢出,被零整出,空指針」等運行時錯誤。

7.盡量不在循環里遠程調用

遠程操作和數據庫操作都是比較消耗資源的,所以盡量不在循環里遠程調用、不在循環里操作數據庫,能「批量一次性查回來盡量不要循環多次去查」。

8.注意并發一致性問題

寫完代碼,最好腦洞下多線程,注意并發一致性問題。

004.jpg

9.獲取對象的屬性,先判斷對象是否為空

空指針異常是程序員常見問題之一,在想要獲取對象屬性時,要先判斷是否為空,再獲取對象的屬性。

10.多線程異步優先使用線程池

為什么優先使用線程池?使用線程池有這幾點好處呀

它幫我們管理線程,避免增加創建線程和銷毀線程的資源損耗。

提高響應速度。

重復利用。

同時呢,盡量不要所有業務都共用一個線程池,需要考慮「線程池隔離」。就是不同的關鍵業務,分配不同的線程池,然后線程池參數也要考慮恰當哈。

11. 手動寫完代碼業務的SQL,先拿去數據庫跑一下,同時也explain看下執行計劃。

手動寫完業務代碼的SQL,可以先把它拿到數據庫跑一下,看看有沒有語法錯誤嘛。有些小伙伴不好的習慣就是,寫完就把代碼打包上去測試服務器,其實把SQL放到數據庫執行一下,可以規避很多錯誤的。

12.調用第三方接口,需要考慮異常處理,安全性,超時重試這幾個點。

調用第三方服務,或者分布式遠程服務的的話,需要考慮

異常處理(比如,你調別人的接口,如果異常了,怎么處理,是重試還是當做失敗)

超時(沒法預估對方接口一般多久返回,一般設置個超時斷開時間,以保護你的接口)

重試次數(你的接口調失敗,需不需要重試,需要站在業務上角度思考這個問題)

005.jpg

13.接口需要考慮冪等性

接口是需要考慮冪等性的,尤其搶紅包、轉賬這些重要接口。最直觀的業務場景,就是「用戶連著點擊兩次」,你的接口有沒有hold住。

14. 多線程情況下,考慮線性安全問題

在「高并發」情況下,HashMap可能會出現死循環。因為它是非線性安全的,可以考慮使用ConcurrentHashMap。所以這個也盡量養成習慣,不要上來反手就是一個new HashMap();

15.主從延遲問題考慮

先插入,接著就去查詢,這類代碼邏輯比較常見,這「可能」會有問題的。一般數據庫都是有主庫、從庫的。寫入的話是寫主庫,讀一般是讀從庫。如果發生主從延遲,很可能出現你插入成功了,但是卻查詢不到的情況。

16.使用緩存的時候,考慮緩存跟DB的一致性,還有(緩存穿透、緩存雪崩和緩存擊穿)

通俗點說,我們使用緩存就是為了「查得快,接口耗時小」。但是呢,用到緩存,就需要「注意緩存與數據庫的一致性」問題。同時,還需要規避緩存穿透、緩存雪崩和緩存擊穿三大問題。

006.jpg

云和數據作為一個深耕IT職業教育多年的教育者,目前的課程涵蓋云計算、大數據、人工智能、虛擬現實、軟件工程、用戶體驗設計、網絡安全、電子商務等八大方向,結合企業實際用人需求,只為培養更多高端IT技術人才。

聲明:除云和數據原創文章外,分享和轉載的文章皆為促進IT技術的傳播,并不代表本微信贊同其觀點和對真實性負責,僅做交流學習使用,非商業用途。如有文章或圖片的原作者有異議或涉及版權問題,請立即聯系我們,我們將在第一時間進行改正或刪除,確保您的權益,謝謝支持!

相關內容

搶先一步 鴻蒙(HarmonyOS)應用開發者高級認證 免費考! 適合人群計算機相關專業在校生(技師、中職、高職、本科、研究生)對鴻蒙(HarmonyOS)有興趣的非計算機相關專業在校生目前正在從事移動應用的開發者目前正在從事計算機行業相關的人計算機專業高校老師所有對鴻蒙(HarmonyOS)有興趣的人 培訓方案掌握鴻蒙的核心概念和端云一體化開發、... 什么是Java的多態性(polymorphism)?它有哪些不同的形式? 多態性是Java面向對象編程的一個重要概念,它允許不同的對象以一致的方式響應同一個方法調用,具體表現為對象在運行時可以表現出多個不同的形態。多態性主要有兩種不同的形式:編譯時多態性(靜態多態性)和運行時多態性(動態多態性)。1. 編譯時多態性(靜態多態性):   ... 如何學習和搭建Hadoop開發環境? Hadoop是大數據處理領域的重要平臺,能夠處理和分析大量數據。為了有效地利用Hadoop,我們需要學習其基礎知識,并正確搭建開發環境。下面是詳細的學習和搭建指南。一、學習Hadoop基礎掌握基礎概念和原理Hadoop主要由HDFS和MapReduce兩部分組成。HDFS是分布式文件系統,Ma... UI 設計學習如何進階成為高手 我總結了六種方法,幫助你走出舒適區,提高技能,成長為自信且經驗豐富的UI設計高手一位經驗豐富的 UI 設計師,往往十分看中應用程序界面的吸引力和視覺刺激,確保滿足用戶期望和需求。但是,如果你已經在 UI 設計圈摸爬滾打多年,仍然沒有出色的作品,那你極有可能是因為陷入了一個舒適圈,UI技能一直原... 在Java中Executor和Executors的區別? 在Java中,Executor和Executors都與線程池和并發執行有關,但它們是不同的概念和類。1.ExecutorExecutor是一個接口,位于java.util.concurrent包中,用于表示一個執行任務的執行器。它只定義了一個方法:void execute(Runnable c... String類型的常見命令有哪些? String類型,也就是字符串類型,是Redis中最簡單的存儲類型。其value是字符串,不過根據字符串的格式不同,又可以分為3類:string是普通字符串,int整數類型,可以做自增、自減操作,float浮點類型,可以做自增、自減操作。String的常見命令有:SET:添加或者修改已經存在的...