日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > java >内容正文

java

云栖大讲堂Java基础入门(三)- 阿里巴巴Java开发手册介绍

發(fā)布時(shí)間:2024/8/23 java 46 豆豆
生活随笔 收集整理的這篇文章主要介紹了 云栖大讲堂Java基础入门(三)- 阿里巴巴Java开发手册介绍 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

摘要:?本文帶大家簡單理解阿里巴巴Java開發(fā)手冊中的規(guī)約內(nèi)容以及P3C項(xiàng)目,可以幫助開發(fā)者掃描出所有潛在的代碼隱患。在中間也聊了一些對于不同語言設(shè)計(jì)的理解,如何去看待語言的設(shè)計(jì),其實(shí)是我們?nèi)W(xué)習(xí)一個語言的核心。

演講嘉賓簡介:澳明,阿里巴巴高級開發(fā)工程師。
本次直播視頻精彩回顧,戳這里!
以下內(nèi)容根據(jù)演講嘉賓視頻分享以及PPT整理而成。
本次的分享主要圍繞以下三個方面:
一、手冊簡介二、聊聊語言三、P3C項(xiàng)目
一、手冊簡介

下面主要從三個方面介紹阿里巴巴為什么需要這個Java開發(fā)手冊。第一個方面,其實(shí)是協(xié)作效率的問題。眾所周知,秦朝統(tǒng)一時(shí)期,推出了“車同軌,書同文”的法令,事實(shí)上,這個法令背后的目的是讓整個國家人民做事的方式進(jìn)行統(tǒng)一。那么在現(xiàn)在,比如對于一個公司而言,一些規(guī)范的不一致可能會導(dǎo)致很多問題,不僅僅是個人與個人之間,甚至讓部門與部門之間會出現(xiàn)不必要的溝通損耗和溝通壁壘。

第二個方面其實(shí)是在系統(tǒng)質(zhì)量方面。在阿里巴巴,這種不規(guī)范編碼導(dǎo)致的線上故障非常非常多,在整個線上故障的比率也非常高。所以,阿里巴巴希望能夠統(tǒng)一整個集團(tuán)的編碼規(guī)范,進(jìn)而能夠提升整體的系統(tǒng)質(zhì)量。

第三個方面,工匠精神。阿里巴巴希望工程師們具備一個工匠精神。即希望工程師非常非常認(rèn)真的對待編碼過程及編碼產(chǎn)物。因?yàn)闊o論怎么樣設(shè)計(jì)Java開發(fā)手冊,它所包含的條目始終是有限的,是一個死的東西,更多的希望大家能夠體會的是Java開發(fā)手冊背后的思想,因?yàn)楸澈蟮乃枷肫鋵?shí)是可以舉一反三,靈活運(yùn)用的。阿里巴巴希望工程師們可以具備這樣一種工匠精神,能夠不斷的認(rèn)真打磨好自己的代碼。


目前,Java開發(fā)手冊分為七大部分,下圖中的七大部分在日常的開發(fā)中是非常通用的。大家可以依據(jù)這七條規(guī)約,逐步逐步的從第一條規(guī)約低階往高階去進(jìn)展。與大家平時(shí)開發(fā)項(xiàng)目一樣,比如說,在最開始編碼時(shí),可以參考編程規(guī)約;然后我們在編程過程中,考慮異常場景時(shí),那么可以考慮異常日志規(guī)約;在寫單元測試時(shí),可以參考單元測試規(guī)約;比如說,在整體的架構(gòu)設(shè)計(jì)完畢并且代碼開發(fā)完畢之后,對于其非功能性需求,比如安全方面的問題,可以參考安全規(guī)約;那么在與數(shù)據(jù)庫進(jìn)行交互時(shí),可以參考MySQL數(shù)據(jù)庫規(guī)約;有的時(shí)候,在整個一個大的公司內(nèi)部,希望大家的工程結(jié)果能夠統(tǒng)一,這樣的話大家在閱讀別人的代碼,或者說復(fù)用別人的代碼的時(shí)候會非常的直觀和方便,這時(shí)候可以參考工程規(guī)約;最后一個設(shè)計(jì)規(guī)約,指在設(shè)計(jì)軟件,設(shè)計(jì)程序和設(shè)計(jì)架構(gòu)時(shí)可以參照一些規(guī)約。
盡管我們的Java開發(fā)手冊頁數(shù)不是很多,之所以稱之為手冊,是希望大家方便閱讀,可以當(dāng)做枕邊書,業(yè)余時(shí)間翻一翻。手冊中除了一些制定的規(guī)約內(nèi)容,還提到了很多工程師會遇到的問題場景。這些問題場景中有一部分也結(jié)合了阿里巴巴近年來的真實(shí)案例,目的是讓大家能夠更好的理解規(guī)約,更重要的是理解規(guī)約背后的所體現(xiàn)的思想。這本Java開發(fā)手冊雖然不厚,但是相信對于剛?cè)腴T學(xué)習(xí)Java的同學(xué),可以嘗試閱讀并體會,肯定會對大家有所幫助,并在編程規(guī)范的形成上有很大提高。
二、聊聊語言

1.面向?qū)ο笳Z言與面向過程語言的區(qū)別

大家應(yīng)該知道Java是面向?qū)ο蟮恼Z言,也叫做OOP。那么面向?qū)ο笳Z言和面向過程的語言有什么區(qū)別呢?在實(shí)現(xiàn)某個動作時(shí),無論是使用面向?qū)ο笳Z言或者面向過程的語言都可以實(shí)現(xiàn),那么為什么說面向過程比較直觀,比較方便呢?下面來簡單舉例說明。首先確定需求,比如說想開一個門,在面向過程的程序設(shè)計(jì)里,很有可能是一個Open行為或者叫Open函數(shù)的一個動作的實(shí)現(xiàn),然后Open依賴的數(shù)據(jù)結(jié)構(gòu)是Door對象,那么這個開門的動作就非常簡單,直接Open the door。在面向?qū)ο蟮某绦蛑?#xff0c;直接將對象Door設(shè)計(jì)出來,然后在賦予對象一些行為,如Open。

Open the door,這是面向過程的代碼,可以認(rèn)為Door其實(shí)是一個數(shù)據(jù)結(jié)構(gòu),我們可以很方便的再添加面向過程的代碼,如添加新函數(shù),比如Close the door。那么在面向?qū)ο蟮拇a中,更多的是在不同的數(shù)據(jù)結(jié)構(gòu)中,實(shí)現(xiàn)Open這一功能。簡而言之,面向?qū)ο蟮恼Z言更希望把操作的行為附加在不同的抽象類之上。

下圖中摘抄了我們的一本書,《代碼整潔之道》中的一段話“面向過程的代碼便于在不改動既有數(shù)據(jù)結(jié)構(gòu)的前提下添加函數(shù),面向?qū)ο蟠a便于不改動既有函數(shù)的前提下添加類。反之,過程式代碼難以添加新數(shù)據(jù)結(jié)構(gòu),面向?qū)ο蟠a難以添加新函數(shù),因?yàn)楸仨毿薷乃蓄悺τ诿嫦驅(qū)ο蟊容^南的事情,對于面向過程的代碼比較容易,反之亦然。”


2.異常行為

我們相信大多數(shù)開發(fā)者都可以寫出能夠正常運(yùn)行的代碼,這是大家非常非常擅長做的事情。但是并不是所有的開發(fā)者都能夠把異常處理的非常非常好。因?yàn)榇蠹蚁矚g寫按既定的流程能夠正確執(zhí)行的程序,但往往忽略了很多異常的情況。下面帶大家從Java語言方面嘗試?yán)斫庖幌滤侨绾螌τ诋惓P袨檫M(jìn)行抽象和設(shè)計(jì)的。舉個簡單例子,從旅游坐飛機(jī)說起,正常的流程應(yīng)該是坐飛機(jī)起飛,那么想象一下中途有哪些異常場景出現(xiàn)。第一種情況,機(jī)場被恐怖份子襲擊發(fā)生爆炸,雖然機(jī)率非常低,但也有可能發(fā)生。這種情況相當(dāng)于發(fā)生非常嚴(yán)重的錯誤,對應(yīng)在平時(shí)開發(fā)過程中,其實(shí)是系統(tǒng)級別的異常,比如磁盤壞掉,機(jī)器宕掉,網(wǎng)絡(luò)斷掉。第二種,假設(shè)機(jī)場是OK的,但是在去機(jī)場的路上,突然之間道路出現(xiàn)擁堵的情況,本來30分鐘的路程,額外增加了1個小時(shí)的時(shí)間,所以必須換成其他交通工具趕到機(jī)場。這種相當(dāng)于編程時(shí)異常,這類異常是可以有一些補(bǔ)救的措施的,如剛剛的場景中換成其他交通工具,從而繼續(xù)讓程序表現(xiàn)出我們理想的行為。系統(tǒng)異常與之不同的是,系統(tǒng)異常場景中開發(fā)者是沒有補(bǔ)救方法的,幾乎是無能為力的。第三種情況,假設(shè)順利到達(dá)機(jī)場,但是護(hù)照被拒簽無法登機(jī),與上面幾種異常不同的是,這種護(hù)照被拒簽是可以被預(yù)測到的,大家都知道是有這種可能的,這種異常場景叫做預(yù)檢時(shí)場景。最后一種,在登機(jī)口準(zhǔn)備登機(jī)時(shí)掃描器發(fā)生故障,雖然這種異常也算作突發(fā)異常,但是是可以登機(jī)的。因?yàn)檫@種異常最終會以一種信息方式讓機(jī)場的維修師會來解決,或者換另一個登機(jī)口登機(jī),這類異常叫做可透出異常。

在Java中出現(xiàn)的異常其實(shí)可以對上上面的四種異常。首先,第一層級會被抽象為錯誤和異常,然后異常分為檢查異常和未檢查異常。大家如果把Java中的異常跟圖中的異常進(jìn)行結(jié)合,相信大家會有一些新的輸入和理解。
三、P3C項(xiàng)目

大家可能會困惑P3C到底是什么?實(shí)際上,P-3C是世界知名反潛機(jī),它有美國克洛希德公司在民用客機(jī)的基礎(chǔ)上改進(jìn)而來,綽號“獵戶”。“獵戶”誕生至今已經(jīng)40多年了,盡管是一員老將,但在海灣戰(zhàn)爭中,它還是披掛上陣,為多國部隊(duì)提供了大量情報(bào)。因?yàn)樗欠浅=?jīng)典的反潛機(jī),所以阿里巴巴也以它作為項(xiàng)目的代號,其中的寓意是以Java開發(fā)手冊為前提掃描出所有潛在的代碼隱患。那么阿里巴巴為何要成立這個項(xiàng)目?主要原因是因?yàn)槿绻麊渭兊刂贫薐ava開發(fā)手冊里面的一些規(guī)范,它其實(shí)是類似于意識形態(tài)上的東西,飄在空中,通過口頭傳達(dá)這些規(guī)范很難落地,仍然無法保證在開發(fā)過程中,不會再犯此類錯誤。所以在阿里巴巴內(nèi)部,當(dāng)時(shí)成立了P3C項(xiàng)目組,希望依托于Java開發(fā)手冊,能夠把內(nèi)容,以及平時(shí)的掃描,還有IDE進(jìn)行一些集成的工作,從而讓我們的開發(fā)人員能夠保證遵循我們的Java開發(fā)手冊進(jìn)行工作。

下圖中給出了P3C項(xiàng)目地址,放在了Github上。其中主要包含三個部分,第一部分是就是開發(fā)手冊的掃描問題的實(shí)現(xiàn),是基于PMD實(shí)現(xiàn)的。第二部分是IntelliJ IDEA plugin,是一個Java IDE的插件。第三部分是Eclipse的插件。插件的部分會實(shí)時(shí)的在開發(fā)過程中,掃描出的代碼中不滿足Java開發(fā)手冊內(nèi)容的一些代碼。

P3C項(xiàng)目目前非常火爆,在剛剛宣布了開源之后,整個社區(qū)活躍度是非常之高的。推薦大家也訪問一下P3C項(xiàng)目,首先大家可以下載都自己的IDE中集成起來,這樣會對大家平時(shí)編碼的規(guī)范性有個很好的督促作用,另外這里也給出了Java開發(fā)手冊的在線免費(fèi)下載版本和淘寶購買地址。

作者:mongolguier

原文鏈接

本文為云棲社區(qū)原創(chuàng)內(nèi)容,未經(jīng)允許不得轉(zhuǎn)載。

總結(jié)

以上是生活随笔為你收集整理的云栖大讲堂Java基础入门(三)- 阿里巴巴Java开发手册介绍的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。