小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

如果讓我完善幾年前的一個項目,我會做哪些改進?

 weijianian 2016-08-07


08年的時候,我還沒有大學畢業(yè),當時在一家公司實習。那時候老板接了一個項目,是一個給中石油某下屬公司做的一個web版本的管理系統(tǒng),我和一個同學硬著頭皮接下來做完了。這個系統(tǒng)后端用的是c#webform,前端普通的html+css+javascript,數(shù)據(jù)庫使用的是sqlserver2005,部署服務器使用的是MicrosoftServer2008?,F(xiàn)在回顧這個系統(tǒng),雖然代碼寫的爛,架構(gòu)寫的爛,但是能夠正常運行,這是偶爾有一些莫名其妙難以解決的小bug。畢竟是自己5年前的代碼嘛,那時候自己太嫩了,好多東西都不知道,沒有多少經(jīng)驗。


那如果現(xiàn)在要我給這個系統(tǒng)做功能升級,甚至重做這個系統(tǒng),我會進行哪些改進那?這是個有意思的話題,如果你能真的找出很多可供改進的店出來,那么說明這幾年來你真的在進步。


現(xiàn)在還真有可能會對這個系統(tǒng)做功能升級。我想了一下,會在一下幾個方面做出改進和調(diào)整。


  1. 使用最新的VisualStudioIDE,并且裝上ReShaper插件。現(xiàn)在自己已經(jīng)成了一個快捷鍵控、重構(gòu)控。俗話說,工欲成其事,必先利其器。好的程序員當然要用最好的工具了。新的VisualStudio在效率方面、智能提示方面都有改善。ReShaper作為.net下的重構(gòu)利器當然必不可少。


  2. 將代碼托管到github的私有代碼庫中,使用git作為源代碼管理工具。以前項目中使用的是svn,使用的公司服務器作代碼托管,而公司服務器不是那么的穩(wěn)定。git作為一款分布式源代碼管理工具,脫離了中央服務器的束縛,并且擁有快速創(chuàng)建、切換分支,本地提交等特性,完爆svn。github作為全球最大的代碼托管中心,方便實用,最便宜的會員7$每月,經(jīng)濟實惠。


  3. 給系統(tǒng)中的重要功能打好LOG。想當年我們想要記錄一些程序log,還要自己寫一個簡易的log類庫。現(xiàn)在有很多成熟的log框架可以被c#使用。試想當你的程序部署到服務器上以后,如果沒有充足的log,那么排查bug是多么的困難。服務器上又不能讓你還原現(xiàn)場,不能調(diào)試,唯一能幫上忙的就是那些log了。當然打log也有很多學問,比如log等級設(shè)置,輸出設(shè)置等,這里就不細說了。


  4. 使用事務機制處理復雜邏輯。在這個系統(tǒng)中有很多并發(fā)操作,當時自己并不是很懂事務,使用了一些很蹩腳的方法來處理可能的數(shù)據(jù)異?!,F(xiàn)在我會采用成熟的分布式事務機制來處理這些并發(fā)邏輯,使程序更加健壯。


  5. 使用TDD,提高單元測試覆蓋率。以前的系統(tǒng)中沒有任何單元測試,一段簡單的代碼都需要啟動程序手工驗證。這樣的反饋太耗時,并且不具備重復性。測試驅(qū)動開發(fā)能夠保證代碼簡潔、正確,并且能快速得到反饋,保證測試覆蓋率。遇到遺留代碼時,也可以先添加單元測試,建立保護網(wǎng),使重構(gòu)更有信心。


  6. 使用webdriver進行自動化功能性測試。曾經(jīng)在給客戶演示前,我改了一段代碼,沒想到這段代碼恰好破壞了給客戶演示的一個重要功能。如果有自動化的功能性測試那么就可以避免這一切。自動化功能測試能增強對產(chǎn)品的信心,每次改動都在可控范圍之內(nèi)。


  7. 編寫構(gòu)建腳本,實現(xiàn)持續(xù)集成。即使只有一個人工作在這個項目中,也應當編寫構(gòu)建腳本,應用持續(xù)集成。這樣才能保證你的每一次提交都是安全的;并且將一些重復的工作自動化起來,可以解放你的大腦關(guān)注到更重要的地方去。


  8. 自動化部署。每次部署項目到服務器上是一個痛苦的經(jīng)歷,需要手動的替換項目中的某些文件,將文件復制到服務器上,終止當前服務器服務…..哪一個環(huán)節(jié)出錯都是一個致命的打擊。手動不僅效率低,而且極易出錯。通過編寫腳本實現(xiàn)自動化部署可以一勞永逸,和繁瑣的手動操作說拜拜吧。


  9. 使用Nuget作為依賴項管理工具。如果你想要引用一個第三方依賴項,還需要手動從網(wǎng)上下載并添加到項目中的話,那你就out了。作為一個Java程序員,maven,gradle等構(gòu)建工具已是標配,它們都提供了對依賴項的自動化管理。你只需要添加一行字符串來說明你想要使用那個類庫,下載、引用就全交給管理工具來實現(xiàn)了。在c#世界中當然也有相應的產(chǎn)品,那就是Nuget,從此依賴項管理再也不是一件頭痛的事情了。


  10. 多使用c#自身的特性,如LINQ,委托,函數(shù)式編程等。比起不思進取的java語言,c#不知道強多少倍。javajava8版本才正式引入Lambda,c#LINQ早都出來多少年了。如果在進行列表操作時,你還只使用foreach,那么你太老土了。列表操作無非是filter,map,sort…c#早為我們提供了一系列擴展方法,如Where,Select,Sort….可憐Java中只能使用Guava這種不倫不類的第三方類庫來實現(xiàn)相應的效果,而且遠沒有c#的原生功能漂亮。c#既然每年都會引用那么多的特性,那么就要學習、掌握和使用。很多人一邊使用著c#的老土語法,一邊說自己精通c#,真讓人無語。放著那么多好特性不用,讓我們這些java程序員真是羨慕嫉妒恨。


  11. 使用一些前端框架和JavaScript框架。對于我這種前端小白,想讓我設(shè)計出漂亮的頁面還真是力不從心。不用怕,設(shè)計者已經(jīng)考慮到了前端無能者的感受,譬如bootstrap之類的前端UI框架簡直為我們而生。這些不但使用簡單,效果明顯,還自帶響應式設(shè)計,實在是前端小白的利器,實現(xiàn)自己精美的web站點不再是夢。JavaScript就不多說了,什么jQueryAngularJs,ExtJs…..各種框架類庫層出不窮,涵蓋了前端開發(fā)的方方面面。無論你是想畫圖,操作DOM元素,創(chuàng)建單頁應用,使用MVC架構(gòu)…..JavaScript的世界里你總有多種選擇。想當年我為了在web頁面中展現(xiàn)一張統(tǒng)計圖,采用了使用.net在后臺實時繪制成圖片加載到前臺顯示,都是淚啊?,F(xiàn)在好了,只需要將數(shù)據(jù)模型綁定給圖表控件,分分鐘搞定。


好了,就寫這么多了。如何判斷一個程序員真的具有N年工作經(jīng)驗,而不是1年工作經(jīng)驗重復使用了N年?一個好的辦法就是和拿出一個以前的項目出來,看他都會做哪些改進。


對于工作多年的程序員來說,知識面、視野一定要廣,這樣才有競爭力。這靠的是平時的學習和積累,還要善于思考,如何能把手頭的事情做得更好。

原文:無敵北瓜

鏈接:http://www.cnblogs.com/huang0925/p/3552004.html



    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導購買等信息,謹防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多