架構師速成-如何高效編程 for java

引子

趙雲大喝一聲,挺槍驟馬殺入重圍,左衝右突,如入無人之境。那槍渾身上下,若舞梨花;遍體紛紛,如飄瑞雪。java

趙雲是全部歷史人物中我最喜歡的一個,若是放到現代,他走了it的道路,必定能夠成爲一個編程高手。爲何?編程

其實古時打仗也是一門技術活,須要有勇有謀,跟it沒有什麼太大的區別。打仗要修身、修技、修器才能左衝右突,如入無人之境,一樣作it也要修身、修技、修器,才能高效編程,如入無人之境。windows

高效編程的修煉

何謂修身、修技、修器?後端

  • 修身,古今都是修煉本身的體魄和思惟,使本身體魄強健,思惟敏捷
  • 修技,古代修煉本身的武藝和兵法,現在修煉本身的設計方法、模式及設計技能
  • 修器,子龍左手青釭劍,右手亮銀槍,跨下白龍馬,一身白盔白甲,帥到爆炸!現在咱們左手xmind,右手eclipse,uml在腳下,也是無比瀟(ku)灑(bi)。

待修到山花爛漫時,需求叢中過,片葉不粘身。設計模式

修身

修身是一個很大的話題,要講個幾天幾夜了,因此咱們就先略過。固然修身以後,能夠從思惟的高度上肯定大的方向,可是你們的看了題目也不太會關心如何修身,so pass!後面省略十萬字,我可真夠高產的(稿費不要省略啊,我不怕麻煩)。架構

修技

古時修技都是有祕笈,並且必須有獨門功法歷盡千辛萬苦才能修煉成功。現在好了,有不少書和視頻,還有我這種讓人醍(提)醐(壺)灌頂的好教程,因此你只須要少吃一點苦就能夠練成了,我算算啊——-你大概歷盡999辛9999苦就能夠了,看少了1點吧。框架

  • 不明真相羣衆:揍他,揍他小舅子
  • 做者:亞美蝶,揍我不行,揍我小舅子能夠。
  • 做者:哎呀,輕點
  • 做者:呀,輕點
  • 做者:輕點
  • 做者:點
  • 不明真相羣衆:KO
  • 做者:請讓我講完,55555

 

修技大概分爲:eclipse

  • 面向對象、面向過程設計方法(心法)
  • uml設計語言(祕笈)
  • 設計模式、重構、xx最佳實踐(先輩實戰經驗)
  • 單元測試(對打練習)

等修煉到10成功力,才能夠繼續修煉終極祕笈架構模式,不然會走火入魔、oom。編輯器

  • 不明真相羣衆:等一下,咱們在討論高效編程,你跟咱們講什麼面向對象,你瘋了吧!揍他,揍他小舅子
  • 此處同上,省略100字。
  • 做者:請讓我講完,55555

其實看到題目我首先想到的也是編程工具的使用,以及快捷鍵的使用。後來我發現那隻佔我浪費時間的5%-10%,真正浪費咱們時間的是:工具

  • 老闆說:哎呀,咱們方向錯了,咱們從新搞一個方向吧!(產品、碼農、測試心中下起了大雪,好冷,好累,我要屎了,砍死他…….看在錢的份上,先饒你一條狗命)
  • 產品說:哎呀,需求不是這個樣子的,咱們應該改爲這樣………(碼農心中一萬隻草泥馬跑過)
  • 測試說:哎呀,這麼多bug,快來改(測試心中鄙視的看着你,菜鳥,切!)
  • 碼農說:哎呀,這樣地方設計不合理,咱們須要重構。哎呀,這樣地方if else好多,我暈了。哎呀,這地方出異常了。哎呀,…..(哎你媽個頭啊!你有完沒完啊!)
  • 不明真相羣衆:好像頗有道理的樣子,先饒你一條狗命
  • 做者:謝謝大俠

其實咱們看看這些問題怎麼來解決:

  • 老闆的問題,我先不解釋了,老闆最英明!(老闆在後面看着呢)。《精益創業》《精益創業實戰》,好像有點修身的味道。
  • 產品的問題,有些錯誤的地方,你在設計時會感受不對,那就問題所在。可是有些就是方向性的問題,這能夠歸結到第一個問題。(產品說:這個鍋甩的好)《head first 面向對象分析與設計》《領域驅動設計》
  • 測試的問題,單元測試起碼保證最基礎的代碼的正確性,上面集成測試,功能測試,系統測試纔有可能正確。《單元測試之道》《測試驅動開發》
  • 碼農的問題,先輩的經驗先學會,你就不會有那麼多須要哎呀的地方。《重構》《Head first 設計模式》《代碼大全》,《Effective java》《代碼整潔之道》

祕笈已經放在後面了,請你們笑納!

  • 不明真相羣衆:好像還不錯,看在祕笈的份上先饒你一條狗命
  • 做者:謝謝大俠
  • 不明真相羣衆:等等,終極祕笈沒有給
  • 做者:sorry,各位大哥,《企業架構模式》,《大型網站技術架構》

修器

有小說講到高手已經不須要好的武器,一片葉子,一根枯枝,均可以分分鐘秒掉一片人。還有人謠傳,最牛逼的開發人員只使用文本編輯器,巴拉巴拉,一個操做系統開發出來了。

我只問一個問題,你用不用電器,你開不開車?

若是用,那就繼續,若是不用,那就閃開,騙子,你怎們看到個人文章的。

人活着的目的就是爲了讓更多人的得到更多的自由,時間自由,財務自由,人身自由。開發工具的目的是爲了,讓你更快的完成一些重複的繁瑣的事情,讓你有時間去享用你的自由。因此盡情的使用工具,工欲善其事,必先利其器。

  • 不明真相羣衆:好偉大
  • 做者:我只是說說而已,不要打我。

要高效,必須把最經常使用的工具修煉到極致:

  1. 操做系統,儘可能選擇蘋果、Ubuntu,window次之,當你用命令行爽呆的時候就明白了。固然若是用windows,儘可能使用快捷鍵操做。
  2. 開發工具,eclipse 快捷鍵,統一的格式,重構功能 ,findbug,checkstyle
  3. 自動化編譯發佈,使用hudson進行定時自動化打包發佈
  4. 其餘工具,xmind 快捷鍵
  5. 時間管理,番茄工做法 控制時間
  6. 好的框架,定義好一個好的框架,能夠節省大量開發時間。具體內容詳見我前面講到的框架。
  7. 代碼生成器,輸入uml設計的類圖,自動生成相關的類,對於須要持久化的對象,能夠實現從前到後的增刪改查的代碼。

實戰

產品得到了一個用戶需求給到我,我一般是這樣作的:

  1. 分析需求的合理性,並非全部需求都是合理的,須要積極發現其中問題。發現的問題跟產品討論,若是全部問題都解決掉,才進行下一步。若是後面的開發創建在一個錯誤的需求上,全部開發都是然並卵。
  2. 進行分析設計,至少造成uml的用例圖和類圖。對於關鍵複雜邏輯,肯定是否能夠經過設計模式解決。複雜流程須要畫出流程圖,若是狀態變化較多,還須要畫出狀態圖。在uml設計時,仍然會發現需求的問題,此時仍須要跟產品肯定,直至全部問題解決掉,才進行一步。
  3. 編碼實現,根據類圖自動生成相關代碼,省去了本身一個個再敲一遍的時間,先後端增刪改查等重複邏輯都已經有了,只須要寫具體的業務就ok了。
  4. 編寫單元測試,對於自定義代碼,必須編寫單元測試。這樣後期修改代碼或者進行集成測試時,纔會比較順暢。
  5. 進行findbug,checkstyle自動檢查,系統自動化發佈,若是出現問題郵件通知。
  6. 自測,本身實現功能後,先按照需求自測通常,保證正確性。
  7. 提交測試,發現bug及時修改,基本作到日結。
  8. 自動化發佈上線。

固然中間會盡可能節省各類時間:

  1. 快捷鍵操做
  2. 番茄工做法,設置不被打擾時間,全神貫注的投入編碼
  3. 3次以上重複的事情,就考慮實現自動化,好比 發佈,代碼檢查,代碼生成
  4. 代碼規範嚴格遵照,最優實踐嚴格遵照

 

團隊高效

其實編碼不是一我的的事情,團隊協做是必不可少的。團隊儘可能採用以下管理方式:

  1. 需求、設計集體參與,不須要再每人講解
  2. 設計後進行分工,若是有新人就採起新老結合的結對編程,對複雜的代碼也採起結對編程。
  3. 推行結果導向,從產品,需求,設計,開發等,不要白白浪費時間作無結果的事情
  4. 代碼規範嚴格遵照,最優實踐嚴格遵照
  5. 規範流程,不斷磨合各個環節人員,達到絲般順滑
  6. 人員互備,不會出現單點

祝福

上面是我作軟件以來的一些感悟,固然一千我的眼中有一千零一個哈姆雷特,每一個都會有最適合本身的方法,但願你們都早日修成本身的高效編程之道。

相關文章
相關標籤/搜索