云栖大讲堂Java基础入门(三)- 阿里巴巴Java开发手册介绍
生活随笔
收集整理的這篇文章主要介紹了
云栖大讲堂Java基础入门(三)- 阿里巴巴Java开发手册介绍
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
摘要:?本文帶大家簡單理解阿里巴巴Java開發手冊中的規約內容以及P3C項目,可以幫助開發者掃描出所有潛在的代碼隱患。在中間也聊了一些對于不同語言設計的理解,如何去看待語言的設計,其實是我們去學習一個語言的核心。
演講嘉賓簡介:澳明,阿里巴巴高級開發工程師。本次直播視頻精彩回顧,戳這里!
以下內容根據演講嘉賓視頻分享以及PPT整理而成。
本次的分享主要圍繞以下三個方面:
一、手冊簡介二、聊聊語言三、P3C項目
一、手冊簡介下面主要從三個方面介紹阿里巴巴為什么需要這個Java開發手冊。第一個方面,其實是協作效率的問題。眾所周知,秦朝統一時期,推出了“車同軌,書同文”的法令,事實上,這個法令背后的目的是讓整個國家人民做事的方式進行統一。那么在現在,比如對于一個公司而言,一些規范的不一致可能會導致很多問題,不僅僅是個人與個人之間,甚至讓部門與部門之間會出現不必要的溝通損耗和溝通壁壘。第二個方面其實是在系統質量方面。在阿里巴巴,這種不規范編碼導致的線上故障非常非常多,在整個線上故障的比率也非常高。所以,阿里巴巴希望能夠統一整個集團的編碼規范,進而能夠提升整體的系統質量。第三個方面,工匠精神。阿里巴巴希望工程師們具備一個工匠精神。即希望工程師非常非常認真的對待編碼過程及編碼產物。因為無論怎么樣設計Java開發手冊,它所包含的條目始終是有限的,是一個死的東西,更多的希望大家能夠體會的是Java開發手冊背后的思想,因為背后的思想其實是可以舉一反三,靈活運用的。阿里巴巴希望工程師們可以具備這樣一種工匠精神,能夠不斷的認真打磨好自己的代碼。
目前,Java開發手冊分為七大部分,下圖中的七大部分在日常的開發中是非常通用的。大家可以依據這七條規約,逐步逐步的從第一條規約低階往高階去進展。與大家平時開發項目一樣,比如說,在最開始編碼時,可以參考編程規約;然后我們在編程過程中,考慮異常場景時,那么可以考慮異常日志規約;在寫單元測試時,可以參考單元測試規約;比如說,在整體的架構設計完畢并且代碼開發完畢之后,對于其非功能性需求,比如安全方面的問題,可以參考安全規約;那么在與數據庫進行交互時,可以參考MySQL數據庫規約;有的時候,在整個一個大的公司內部,希望大家的工程結果能夠統一,這樣的話大家在閱讀別人的代碼,或者說復用別人的代碼的時候會非常的直觀和方便,這時候可以參考工程規約;最后一個設計規約,指在設計軟件,設計程序和設計架構時可以參照一些規約。
盡管我們的Java開發手冊頁數不是很多,之所以稱之為手冊,是希望大家方便閱讀,可以當做枕邊書,業余時間翻一翻。手冊中除了一些制定的規約內容,還提到了很多工程師會遇到的問題場景。這些問題場景中有一部分也結合了阿里巴巴近年來的真實案例,目的是讓大家能夠更好的理解規約,更重要的是理解規約背后的所體現的思想。這本Java開發手冊雖然不厚,但是相信對于剛入門學習Java的同學,可以嘗試閱讀并體會,肯定會對大家有所幫助,并在編程規范的形成上有很大提高。
二、聊聊語言1.面向對象語言與面向過程語言的區別大家應該知道Java是面向對象的語言,也叫做OOP。那么面向對象語言和面向過程的語言有什么區別呢?在實現某個動作時,無論是使用面向對象語言或者面向過程的語言都可以實現,那么為什么說面向過程比較直觀,比較方便呢?下面來簡單舉例說明。首先確定需求,比如說想開一個門,在面向過程的程序設計里,很有可能是一個Open行為或者叫Open函數的一個動作的實現,然后Open依賴的數據結構是Door對象,那么這個開門的動作就非常簡單,直接Open the door。在面向對象的程序中,直接將對象Door設計出來,然后在賦予對象一些行為,如Open。Open the door,這是面向過程的代碼,可以認為Door其實是一個數據結構,我們可以很方便的再添加面向過程的代碼,如添加新函數,比如Close the door。那么在面向對象的代碼中,更多的是在不同的數據結構中,實現Open這一功能。簡而言之,面向對象的語言更希望把操作的行為附加在不同的抽象類之上。下圖中摘抄了我們的一本書,《代碼整潔之道》中的一段話“面向過程的代碼便于在不改動既有數據結構的前提下添加函數,面向對象代碼便于不改動既有函數的前提下添加類。反之,過程式代碼難以添加新數據結構,面向對象代碼難以添加新函數,因為必須修改所有類。對于面向對象比較南的事情,對于面向過程的代碼比較容易,反之亦然。”
2.異常行為我們相信大多數開發者都可以寫出能夠正常運行的代碼,這是大家非常非常擅長做的事情。但是并不是所有的開發者都能夠把異常處理的非常非常好。因為大家喜歡寫按既定的流程能夠正確執行的程序,但往往忽略了很多異常的情況。下面帶大家從Java語言方面嘗試理解一下它是如何對于異常行為進行抽象和設計的。舉個簡單例子,從旅游坐飛機說起,正常的流程應該是坐飛機起飛,那么想象一下中途有哪些異常場景出現。第一種情況,機場被恐怖份子襲擊發生爆炸,雖然機率非常低,但也有可能發生。這種情況相當于發生非常嚴重的錯誤,對應在平時開發過程中,其實是系統級別的異常,比如磁盤壞掉,機器宕掉,網絡斷掉。第二種,假設機場是OK的,但是在去機場的路上,突然之間道路出現擁堵的情況,本來30分鐘的路程,額外增加了1個小時的時間,所以必須換成其他交通工具趕到機場。這種相當于編程時異常,這類異常是可以有一些補救的措施的,如剛剛的場景中換成其他交通工具,從而繼續讓程序表現出我們理想的行為。系統異常與之不同的是,系統異常場景中開發者是沒有補救方法的,幾乎是無能為力的。第三種情況,假設順利到達機場,但是護照被拒簽無法登機,與上面幾種異常不同的是,這種護照被拒簽是可以被預測到的,大家都知道是有這種可能的,這種異常場景叫做預檢時場景。最后一種,在登機口準備登機時掃描器發生故障,雖然這種異常也算作突發異常,但是是可以登機的。因為這種異常最終會以一種信息方式讓機場的維修師會來解決,或者換另一個登機口登機,這類異常叫做可透出異常。在Java中出現的異常其實可以對上上面的四種異常。首先,第一層級會被抽象為錯誤和異常,然后異常分為檢查異常和未檢查異常。大家如果把Java中的異常跟圖中的異常進行結合,相信大家會有一些新的輸入和理解。
三、P3C項目大家可能會困惑P3C到底是什么?實際上,P-3C是世界知名反潛機,它有美國克洛希德公司在民用客機的基礎上改進而來,綽號“獵戶”。“獵戶”誕生至今已經40多年了,盡管是一員老將,但在海灣戰爭中,它還是披掛上陣,為多國部隊提供了大量情報。因為它是非常經典的反潛機,所以阿里巴巴也以它作為項目的代號,其中的寓意是以Java開發手冊為前提掃描出所有潛在的代碼隱患。那么阿里巴巴為何要成立這個項目?主要原因是因為如果單純地制定了Java開發手冊里面的一些規范,它其實是類似于意識形態上的東西,飄在空中,通過口頭傳達這些規范很難落地,仍然無法保證在開發過程中,不會再犯此類錯誤。所以在阿里巴巴內部,當時成立了P3C項目組,希望依托于Java開發手冊,能夠把內容,以及平時的掃描,還有IDE進行一些集成的工作,從而讓我們的開發人員能夠保證遵循我們的Java開發手冊進行工作。下圖中給出了P3C項目地址,放在了Github上。其中主要包含三個部分,第一部分是就是開發手冊的掃描問題的實現,是基于PMD實現的。第二部分是IntelliJ IDEA plugin,是一個Java IDE的插件。第三部分是Eclipse的插件。插件的部分會實時的在開發過程中,掃描出的代碼中不滿足Java開發手冊內容的一些代碼。P3C項目目前非常火爆,在剛剛宣布了開源之后,整個社區活躍度是非常之高的。推薦大家也訪問一下P3C項目,首先大家可以下載都自己的IDE中集成起來,這樣會對大家平時編碼的規范性有個很好的督促作用,另外這里也給出了Java開發手冊的在線免費下載版本和淘寶購買地址。
作者:mongolguier
原文鏈接
本文為云棲社區原創內容,未經允許不得轉載。總結
以上是生活随笔為你收集整理的云栖大讲堂Java基础入门(三)- 阿里巴巴Java开发手册介绍的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 浅谈PyODPS
- 下一篇: 使用PyTorch从零开始构建Elman