更新時間:2019-04-19 10:53:52 來源:動力節點 瀏覽6399次
學習力強的Java程序員敢大膽地體驗嘗試新技術,他們的技術棧始終在保持不斷地更新,他們能快速把握事物的本質,并判斷出它能用來做什么,不能用來做什么。
而學習力差的程序員呢?為了繼續停留在舊技術的舒適區,他們往往會抵制新技術的推廣,甚至百般阻撓。因為那會使他們過去的經驗統統無效,只能和后來者站在同一起跑線上,抱死一個框架好幾年,脫離了框架啥都干不了的程序員實在太多了,事實上,這樣的人不能駕馭技術,反而是被技術給奴役了。
所以軟件開發人員要不斷地學習,多學習課程,多看書,多思考,多討論。
我們經常會看到另外一個問題是泥團一樣黏糊在一起的類,做了很多無關的事情,無關的新特性新功能一點點加入,讓簡單的類變得臃腫,塞入各種與該類名無關的行為,有時一個類的大小超過幾百行代碼。
避免這個問題的辦法應該總是想:我在這里添加的功能符合類名本身嗎?如果不是,那么重新命名類的名稱,或者分成兩個獨立的類。
如果你不能想出一個代碼類的合適名稱,就會發出壞味道,那類的內部就會變得混雜。有時可能一個需要分成兩個部分,才能找到合適的名稱分別代表它們。
超大號的類
越來越多代碼添加到一個類,變得非常臃腫,雖然這個類還能工作,但是代碼太長,非常繁瑣,容易發生很多bug,方向和細節混同在一起。
切分一個非常大的類的工作是枯燥的,也是一個挑戰,類中代碼高度交織在一起,運行中不斷修復添加新功能,最后結果是必須有自律才能阻止它變得更大。
一般經驗是我們盡量保持類代碼低于500行,函數低于50行,有時雖然不可行,但是我們總能尋找到辦法來重構它,切分成更小更易于管理的代碼塊。
代碼的注釋
如果沒有注釋,代表沒有任何信息,這是臨時破碎的代碼嗎?被取代的舊代碼在哪里呢?
并行邏輯和重復代碼
舉一個例子,有某個結構特征的名稱暗示我們一些它是什么的信息,比如“TreeBackground.dds”.為了了解這個特征能被用于一個tree類,我們需要檢查文件名中是否以單詞“Tree”開始.通過使用filename.beginsWith(”Tree”)檢查得很快.這段代碼如此短,但是我們在不同地方需要它,這樣我們就拷貝粘貼它,這就造成了重復代碼,當然每個人知道重復代碼不好,但是這段代碼真的很短,拷貝粘貼非常容易,我們這里面臨的問題很明顯:也許以后我們會檢查這個結構特征是否適合樹tree的改變,那是我們就需要在每個地方單獨一個個去解決(因為這段短代碼被復制到這些地方)
一般經驗是,這段代碼不應該被復制,應該放在一個函數中,即使它超級短,主要因為做一個函數再調用需要許多代碼,而直接復制粘貼更直接簡單?
前沿技術:
?為簡化MyBatis而生之MyBatis-Plus
?MyBatis通用Mapper
?云時代容器技術Docker
?微服務一站式框架SpringCloud
?分布式高性能消息中間件RabbitMQ
?持續集成利器Jenkins
?分布式服務治理框架Dubbo
?數據庫連接池Druid和JSON庫Fastjson
?云數據庫Redis分支ApsaraCache
?自研富容器技術Pouch和文件分發系統Dragonfly
?高并發條件下服務限流與服務降級
?高并發條件下緩存擊穿與緩存雪崩解決方案
?分布式架構下的分布式事務解決方案
?分布式架構下的全局ID生成方案
?億級流量下的Redis集群解決方案
?分布式架構下的任務調度解決方案
?多線程&并發編程深入剖析
?JVM內存模型&內存可見性深度學習
?JVM優化深入學習
?Nexus搭建Maven私服
?持續集成利器Jenkins
?分布式文件存儲數據庫MongoDB
?數據訪問SpringDataJPA
?MVVM框架Vue.js
?網絡爬蟲HttpClient與WebMagic
?分布式搜索引擎ElasticSearch
?阿里巴巴高性能連接池Druid
?阿里巴巴分布式RPC框架Dubbo深度解析
?Zookeeper注冊中心及集群詳解
?最活躍的MyCat讀寫分離和分庫分表實踐
?Comet框架pushlets信息推送
?最實用的Linux實戰
?集群/分布式下Session共享解決方案
?企業開發中的接口聯調測試
?支付寶/微信支付項目實戰
?支付中常見的掉單問題解決方案
?投資中的庫存防超賣設計
?互聯網金融項目的散標發布
?JMS規范及消息中間件ActiveMQ詳解
?樂觀鎖、悲觀鎖、分布式鎖
?互聯網中接口安全解決方案
?集群環境下的定時任務
?分布式文件系統FastDFS詳解與實踐
?分布式文件系統存儲合同文件
?主流NoSQL數據庫Redis詳解
?最常用的httpclient精解以及HttpComponents
?FreeMarker/Velocity模板技術
?最火熱的SpringBoot微服務開發框架精解
?SpringBoot下的模板技術Thymeleaf詳解
?Log4j2/slf4j/logback
?Redis緩存技術及使用場景案例
?消息隊列ActiveMQ的具體場景應用案例
?高性能HTTP及反向代理服務器Nginx詳解
?JDK8/JDK9的新特性
?項目開發中常見的多數據庫解決方案
?MySQL數據庫主從復制及企業配置實踐
?WebServices異構系統間的信息通信和調用技術詳解
?最常用的四種JSON解析指南
?微服務架構SpringCloud
?持續集成Jenkins
?NoSQL&MongoDB&Cassandra
?IntelljIDEA開發工具的使用
?SVN&Git版本控制工具的使用
?互聯網高并發解決方案
?高并發秒殺系統實踐
0基礎 0學費 15天面授
有基礎 直達就業
業余時間 高薪轉行
工作1~3年,加薪神器
工作3~5年,晉升架構
提交申請后,顧問老師會電話與您溝通安排學習