課程咨詢 :0517-89003283

姓名

電話

Q Q

城市

當前位置 :  诈金花洗牌技巧视频 > 課程體系 > JAVA軟件開發

學編程難不難,9個編程好習慣分享大家

時間:2017-05-04 14:17:57 作者:

我們都知道要想學好編程也不是一天兩天就可以的,而且學習編程其實還有很多的竅門在里面,今天小編給大家分享幾點編程過程中應該學習的幾個好的習慣。

 


1、善用工具
糾結==兩邊的空格,不如找個好的代碼格式化工具,讓整個team都來使用,保持格式的統一。用VisualStudio寫C#,裝個Resharper和Stylecop, 不用想函數怎么樣排序,要不要寫注釋。Ctrl+E, Ctrl+C自動幫你format,Ctrl+Shift+D自動幫你寫好函數的注釋,不滿意再改。
2、管理/總結自己的代碼知識庫

 比如常見的數據操作可以做成code snippet. 怎么判斷一個數組是不是排好序的:

  var list = new[] { 1, 2, 3, 5, 4 };

  var isOrdered = list.Zip(list.Skip(1), (x, y) => new { x, y }).All(l => l.x < l.y);

3、盡量把常用的操作自動化
能用正則表達式替換就堅決不要手工一行一行地改。曾經做build遇到一個需求,需要拷貝很多文件的名字,不帶后綴的名字,以及全路徑,不勝其煩,就做了一個shellextension(windows右鍵菜單), 把選中的文件的名字都拷出來,至今都覺得非常正確?!?/p>

4、堅持代碼風格,哪怕是很短的代碼
俗話說:優秀是一種習慣,我們只有寫好每一行代碼,才能寫出更完善的代碼。而藍鷗的老師們也是這樣要求自己的學生要寫好每一行代碼。
5、該簡潔的時候要簡潔
寫代碼是一件很有價值的事情,很多編程愛好者都是這樣寫的,能把想法變成現實是一件很炫很酷的事情,但是不要炫技,該簡潔的時候一定要簡簡潔?! ?/p>

6、注釋寫清楚,但不要啰嗦

7、注意??榛?,一個函數做好一件事
我剛接觸編程的時候,在網上看到許多大牛寫程序都十分注重??榛?,因此我就下意識的模仿他們;

  后來看SICP,知道了抽象的好處,因此在寫程序的時候會仔細思考抽象的問題。這些對我都有著非常大的幫助。

  在一篇講述程序員代碼行數瓶頸的博客中(程序員的成長和代碼行數的關系)提到,程序員在2k行、20k行、200k行等若干程序規模時會遇到瓶頸,如果不用更科學有效的方法,超過了這個行數代碼就會混亂到難以維護。

  但我第一次寫很大的程序時(8k+)并沒有感覺到文中提到的瓶頸;我目前接手的項目有近900k行,我自己寫的部分也已經快上10k,但我仍然沒遇到文中提到的瓶頸。

  針對這一現象,我做過一些實驗。我在很不認真的寫一些小程序時,也總是寫的混亂不堪,我發現,這種情況下,程序行數超過200行我就覺的很難受了,

  在需要進行一點小的修改時,我往往需要花很長時間去尋找到底該改哪里,十分吃力——這種吃力感是我在那些精心思考的大項目里從未感受過的。

  這說明了,我并沒有過人的天賦能在混亂中輕易找出清晰的脈絡,那就是說,之前的如魚得水,是因為好的習慣。

  后來,我進行了深入的思考。在??榛趾俠?、抽象合理的程序里,我可以簡單的把一個個功能抽象為一個簡單的黑盒。

  我不需要知道他們內部發生了什么復雜的反應,我只需要知道他們對什么樣的輸入會做出什么樣的輸出。

  這種抽象極大的減輕了大腦的負擔,讓我可以把精力更多的投入到真正需要考慮的地方。

  而那些混亂的程序里,我需要理清每一句話之間的關系,這無疑會極大的消耗腦力。

  這種情況下,200行就渾身難受就可以理解了——因為我用于維護項目關系所消耗的腦力已經遠遠大于了那些好程序里的消耗。

  這個習慣,真的讓人十分受益,請一定堅持。剛開始的時候,你或許覺得花很長時間去思考程序的??榛?、抽象層級是十分浪費時間的無用功;

  但久了以后,你就會感受到這種習慣帶來的好處:它會在無聲無息之間幫你消除掉許多瓶頸。

  而且還有額外的好處:當你習慣用??榛櫓愕乃嘉?,思維能力也會有一定的增強。
8、代碼??楣芾?br /> 一些朋友說的比如盡早習慣做版本管理,一開始就形成良好的代碼風格,我很贊同,另外一些朋友提到DRY原則,大括號對齊,甚至還有free(p);p=NULL;

  這樣的建議,都是很容易誤導人的,這里希望剛入門或者入門不久的朋友們學會獨立思考,凡事打個問號,不要盲目遵循。

  我個人覺得最重要的一個習慣其實有不止一個人說了,就是想清楚之后再動手。這里我稍微展開說一下,因為“想清楚”其實是一個很模糊的概念。怎樣才算想清楚了呢?

  我常常有這樣的經歷,對一個難題,經過了一番思考之后覺得自己想到了一個比其他人好得多的方法,結果去實現的時候,發現原來是想的時候疏漏的一個細節,方法不可行,感到很挫敗,不得不回頭過去重新審視問題,浪費了很多時間。

  怎樣才能想清楚呢?

  Leslie Lamport在斯坦福做了一個講座(底下有鏈接,推薦)。里面引用了一句話: “Writing is nature‘s way of let you know how sloppy your thinking is” 我深有同感。怎么才能知道自己是否想清楚了呢?

  最自然的方式就是寫下來。怎么寫呢?這個因人而異,比如我在編碼之前,會在如下兩個問題里面迭代幾次。

  0. 做什么? (需求: 白話)

  1. 怎么做? (方法: 偽碼)

  關于做什么,其實就是分析需求,這里跟那個“需求分析”過程有些區別。怎么舒服怎么來,大白話,不拘一格,理清楚問題就行。

  ··我通常的做法就是以自言自語自我審問的方式把整個過程理出來,為了不至于特別無聊,這部分通?;嶁吹檬摯謨锘?。等這部分弄清楚之后,基本上偽代碼的框架在心里面就有眉目了。

  接下來會嘗試著寫偽代碼,寫偽代碼的途中通?;岵歡系慕兄毓夠蛘吒諞徊澆械?,直到偽代碼比較精簡,邏輯上沒有冗余的時候,就去喝杯咖啡,小個便,回來開始實現。

  實現的過程中難免會有需要回到第一個步或者第二步進行迭代的時候,隨著經驗的提升,迭代的次數會變得越來越少。

  實際上0,1兩步我都是在代碼的頭部大塊注釋里面完成的,這個部分可以直接成為十分容易理解的文檔。

  實際中除了這塊注釋,我幾乎不在代碼里面寫注釋。除了少數實現的trick外。

  另外剛才提到寫偽代碼,引出了一個潛在的問題: 怎么寫偽代碼? 建議不要嘗試著用算法導論或者一些論文里面的方法。那些數學符號或者不容易敲打的符號會嚴重的影響寫偽代碼的快感。

  我覺得《The algorithm design manual》里面的偽代碼格式就不錯,但是因為實際中的偽代碼可能比寫一個算法復雜一些,所以還需要添加一些其他元素,比如我自己的偽代碼格式其實有點像是Python代碼。

  寫偽代碼的主要目的是弄清楚實現的邏輯。

  在第0步,其實不是每個人一開始都能寫得清晰的,需要通過長期寫作來鍛煉。所以無論是寫日記,寫博客還是寫情書,堅持下去,都能對日后寫代碼的能力有所幫助。

  時間不早了,最后再附送兩個程序員生活小貼士:

  0.做筆記,OneNote或者EverNote,把遇到的bug,看到過的好trick,好文章,好照片都記錄下來。

  1.Eat your own dog food.那些自己寫過的可以抽離出來重用的代碼或者腳本整理好同步到github或者bitbucket上去,不斷增加和改善自己的dog food。

  多思考,先想好自己要解決什么問題,想好了再寫。

9、閱讀手冊!閱讀手冊!閱讀手冊!
閱讀手冊!閱讀手冊!閱讀手冊!重要的事情說三遍!當你遇到問題的時候,第一時間去翻手冊尋找答案,不要google!

  使用搜索引擎可以更快的幫你找到答案,但是也僅限于給你答案!簡單來說一句話:readthe fucking manual!
北大青鳥淮安瀚唐校區是北大青鳥APTECH總部正式授權的IT培訓中心,課程包括:Java軟件工程師、UI設計師、電子商務師。

教育改變生活,實力成就夢想。從來都不只是說說而已。每一份高薪就業的背后,我們都付出十分的努力。現在,我們只等有夢想、有目標的你來。

免責聲明:轉載文章和圖片均來自公開網絡,版權歸作者本人所有,推送文章除非無法確認,我們都會注明作者和來源。如果出處有誤或侵犯到原作者權益,請與我們聯系刪除或授權事宜。

 

more

開班信息

more

熱點新聞

淮安瀚唐信息技術有限公司版權所有  诈金花洗牌技巧视频
诈金花洗牌技巧视频