乡下人产国偷v产偷v自拍,国产午夜片在线观看,婷婷成人亚洲综合国产麻豆,久久综合给合久久狠狠狠9

  • <output id="e9wm2"></output>
    <s id="e9wm2"><nobr id="e9wm2"><ins id="e9wm2"></ins></nobr></s>

    • 分享

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

       weijianian 2016-08-07


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


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


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


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


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


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


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


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


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


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


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


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


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


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


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


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

      原文:無敵北瓜

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



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

        0條評論

        發(fā)表

        請遵守用戶 評論公約

        類似文章 更多