阿里妹導讀:《阿里巴巴Java開發手冊》將阿里技術團隊的經驗總結,系統化整理成冊,獻給廣大開發者。如今,該手冊的實體書已正式開啟預售(此處應有掌聲),並在書中獨家披露設計規約,它根據阿里巴巴一線架構設計經驗沉澱而成,旨在幫助研發人員準確地度量是否需要定向的設計方案。
近年來,敏捷開發的流行,在一定程度上削弱了設計的重要性,但在某些方面,需要明確地進行詳細地方案設計與評審,比如:存儲方案和底層數據結構的設計。有缺陷的底層數據結構容易導致系統風險高,可擴展性差,重構成本因歷史數據遷移、系統平滑過渡也會陡然增加。所以,存儲方案和數據結構需要認真地進行設計和評審,生產環境提交執行後,需要進行double check;明確存儲介質選型、表結構設計能否滿足技術方案、存取性能和存儲空間能否滿足業務發展、表或欄位之間的辯證關係、欄位名稱、欄位類型等。
在其它設計領域,《手冊》也明確了軟體設計底線,如果超過規定的閾值,則需要進行有針對性的軟體設計與文檔沉澱。
如果有興趣了解更多,可參考文末說明,第一時間購得此書,甚至有機會免費獲得作者籤名版。
今天我們也有幸邀請了作者孤盡,請他來聊聊規約背後的故事與初心。
孤盡:別人都說我們是搬磚的碼農,但我們知道自己是追求個性的藝術家。也許我們不會過多在意自己的外表和穿著,但在我們不羈的外表下,骨子裡追求著代碼的美、系統的美,代碼規範其實就是一個對程序美的定義。
但是這種美離程式設計師的生活有些遙遠,儘管編碼規範的價值在業內有著廣泛的共識,在現實中卻被否定得一塌糊塗。工程師曾經最引以為豪的代碼,因為編碼規範的缺失、命名的草率而全面地摧毀了彼此的信任,並嚴重地制約了相互的高效協同。工程師一邊吐槽別人的代碼,一邊寫著被吐槽的代碼,頻繁的系統重構和心驚膽戰的維護似乎成了工作的主旋律。
那麼如何走出這種怪圈呢?眾所周知,網際網路公司的優勢在於效率,它是企業核心競爭力。體現在產品開發領域,就是溝通效率和研發效率。對於溝通效率的重要性,可以從程式設計師三大「編程理念之爭」說起:
1.縮進採用空格鍵,還是Tab鍵。
2. if單行語句需要大括號,還是不需要大括號。
3.左大括號不換行,還是單獨另起一行。
在美劇《矽谷》中,你也許會記得這樣一個經典鏡頭:主人公Richard與同為程式設計師的女友分手,理由是兩人對縮進方式有著不同的習慣,互相擰巴地鄙視著對方的cody style。Tab鍵和空格鍵的爭議在現實編程工作中確實存在。《阿里巴巴Java開發手冊》(以下簡稱「《手冊》」)明確地支持了4個空格的做法,如果一定要問理由,沒有理由,因為能夠想出來的理由,就像最堅固的盾一樣,總有更加鋒利的矛會戳破它。只想說,一致性很重要,無邊無際爭論的時間成本與最後的收益是成反比的。
if單語句是否需要換行,也是爭論不休的話題。相對來說,寫過格式縮進類程式語言的開發者,更加習慣於不加大括號。《手冊》中明確if/for單行語句必須加大括號,因為單行語句的寫法,容易在添加邏輯時引起視覺上的錯誤判斷。此外,if不加大括號還會有局部變量作用域的問題。
左大括號是否單獨另起一行?因為Go語言的強制不換行,在這點上,「編程理念之爭」的銷煙味沒有那麼濃。如果一定要給一個理由,那麼換行的代碼可以增加一行,對於按代碼行數考核工作量的公司員工,肯定傾向於左大括號前換行。《手冊》明確左大括號不換行。
這些理念之爭的本質就是自己多年代碼習慣生的繭,不願意對不一樣的風格妥協,不願意為了團隊的整體效能提升而委屈自己。其實,很多編程方式客觀上沒有對錯之分,一致性很重要,可讀性很重要,團隊溝通效率很重要。
有一個理論叫帕金森瑣碎定律:一個組織中的成員往往會把過多的精力花費在一些瑣碎的爭論上。程式設計師天生需要團隊協作,而協作的正能量要放在問題的有效溝通上。個性化應儘量表現在系統架構和算法效率的提升上,而不是在合作規範上進行糾纏不休的討論、爭論,最後沒有結論。規範不一,就像下圖中的小鴨子和小雞對話一樣,言語不通,一臉囧相。
雞同鴨講也恰恰形容了人與人之間溝通的痛點,自說自話,無法達成一致意見。再舉個生活中的例子,交通規則靠左行還是靠右行,兩者孰好孰壞並不重要,重要的是必須要在統一的方向上通行,表面上限制了自由,但實際上是保障了公眾的人身安全。試想,如果沒有規定靠右行駛,那樣的路況肯定擁堵不堪,險象環生。同樣,過分自由隨意、天馬行空的代碼會嚴重地傷害系統的健康,影響到可擴展性及可維護性。
為了幫助開發人員更好地提高研發效率,阿里巴巴集團基於《手冊》內容,獨立研發了一套自動化IDE檢測插件。該插件在掃描代碼後,將不符合《手冊》的代碼按block/critical/major三個等級顯示在下方;編寫代碼時,還會給出智能實時提示,告訴你代碼如何編寫可以更優雅、更符合大家共同的編程風格;對於歷史代碼,部分規則實現了批量一鍵修復功能。
插件下載地址:https://github.com/alibaba/p3c
複製以下口令,在天貓、淘寶APP直接打開。促銷價不到25元,一頓午飯錢,換得受益一生的良好編碼習慣。
複製整段信息,打開👉天貓APP👈,即可查看此商品:【阿里巴巴Java開發手冊 java語言編程教程書籍 java設計模式 阿里官方Java代碼規範標準 java應用開發教程 java程序設計】(未安裝App點這裡:http://zmnxbc.com/s/uvx2d?tm=533ee1 )🔑喵口令🔑
在留言區,聊一聊你眼中的軟體設計底線,有機會免費獲得作者籤名版的《阿里巴巴Java開發手冊》一本,限量10名。
活動時間:即日起至12月25日,獲獎名單屆時將在留言區公布
你可能還喜歡
點擊下方圖片即可閱讀
你寫的代碼,是別人的噩夢嗎?
如何解決大規模機器學習的三大痛點?關注「阿里技術」
把握前沿技術脈搏