別讓你的代碼瘋掉

來源:互聯網
上載者:User
  1. 為什麼寫這篇文章

    現在寫軟體是很容易的一件事情,要實現一個功能,google一搜,再加上sourceforge、codeproject,一堆開原始碼這麼一糊,換個logo就可以拿去充軍了。很少人再從代碼這個角度上去控制軟體的品質,比如有些人主要抓軟體測試這塊,只要東西符合規格就pass;有些人從iso XXX上去控制,用月球人語言來和地球人對話;有些人主要抓夥食,只要coder們都吃飽喝足了,寫的東西肯定沒問題(不知道是否真有這等事)。

    寫這篇文章也是我工作兩年中,看到很多人和事掙紮在混亂的代碼中,在即將倒塌的地基上建築金字塔。這世界誘惑太多了,很多人只想會做,而不是想做好。一上QQ,肯定會逼著你怎樣達到怎樣怎樣的效果,你跟他說你應該這樣那樣,心裡想著授人以漁,對方就是不領情,似乎完成了這個功能,以後就回家種地,一輩子不用再寫程式一樣。代碼,一天一天堆砌,如同一個被廢棄垃圾廠一樣,每天都往裡頭扔UDP包。這讓我想起了一老人說Unix的現狀,所經過這麼多年的進化,Unix核心已經被修改的一團糟。我想這對一個人、一個公司也是這樣,如果不經常到去整理一下代碼,讓代碼放任自由的生長,不是一件符合自然規律的事情。

    任何方法都有適合的人群,如果你不喜歡自己手把手的敲代碼、調試代碼,看著自己腦子中的思想被證實的那種愉悅,我想下面的建議並不能適合你。

    這是第二次修訂這篇文章,第一篇寫的語句太富有個人感情色彩,以後應該學習林肯的方法:情緒不對時寫的信,隔天再投寄。自己(徐藝波)也會不斷的如同升級更新軟體一樣,更新這篇文章。

  2. 認真寫代碼

    寫軟體,每天都泡到代碼中,沒有人比你跟瞭解代碼。但如果在寫代碼前,不去認真的寫、去設計,往往到項目後期,整個局面難以控制。聰明的C/C++程式員永遠不會忘記編譯器是在產生彙編代碼,當他們需要超越語言本身的能力時,他們仍然能夠到達指定的地區並控制所產生的代碼。(摘錄自網上)

    看過Windows源碼的傢伙,一定對David Cutler的代碼羨慕不已,優雅的風格、清晰的流程、嚴格的規範。如果沒有經年累月的寫代碼的積累總結,是很難達到這樣的高度的。

    我自己從大二開始到現在寫了差不多有49萬行的代碼,有C、asp、php、javascript、asm等等,無論他們是什麼語言,我總是盡量的多寫注釋,自己也在不斷的完善注釋的規範和輔助開發工具(比如:txt2chm、msdn精簡版、extractor、ed 編輯器、build、replaceX...),隨著技術的不斷深入,自己也在不斷的完善各種工具,這些工具也在更好的為自己服務。當這些形成一個正態迴圈的時候,能會發現這世界很和諧,也不用整天跟在微軟的屁股後面。

    你是否曾經這樣:完成代碼,測試通過後,以後幾乎就不再看了。當你發現了更好的方法(演算法),是否會再去修改早期寫的蹩腳的實現。從來不寫注釋,即使寫了,也是敷衍了事。
  3. 流水線

    流水線成就了福特轎車,在軟體上,自動構建是流水線的另一個外號。自動構建最重要的一種高度凝和的東西,將項目組內各個人的工作貫穿起來,儘可能地由工具來控制瑣碎的細節。自動構建作為一個高於單一項目的東西,還能夠磨合產品,暴露產品的不足。

  4. 模組化、層次化

    模組化和層次化的目標是增加人的控制力。也是現在非常成功一種管理方式。我想,這也是微軟雖然現在有成千上萬的軟體設計師,但一直採用的五六個人的小團隊的作戰方式。

    當事情簡單的時候,你可以想怎樣就怎樣,模組化和層次化並不能顯示出它的威力。當事情越來越複雜,你發現大量的代碼對砌起來,介面不統一、命名不統一、檔案組織一團糟...此時如果時你,你應該怎麼做呢?

    我想,當某個系統達到混亂的極限的時候,你需要做的,不是褲子都來不及脫就隻身蹦進去,投身到水深火熱的改革之中(往往你使得事情更糟糕)。站在旁觀者的角度,分析這個系統的上層和下層哪個地方出問題了,研究這個系統本身的模組化、層次化。

  5. 規範

    每個人都有每個人都做事習慣,在一個團隊中,需要的是一種共同的習慣去做事。否則,很多時間都浪費在溝通上。

  6. 用合適的工具做合適的事情

    盡量不要做殺雞用牛刀的事情,也不要做殺牛用指甲刀的事情。現在存在的每種工具、語言都有其需要,在做事情前,仔細去分析調查一下,系統的考慮一下各種因素:移植性、健壯性、效能、升級、效能等。 這世界變數很多,各種不同的工具在不同的環境,不同的組合,都能帶來不同的實際效果。有時候,你真的不得不感歎,這世界沒有一個確定的放之四海而皆準的答案,大部分你遇到的情形是這個世界的第一次出現。如果不對各種工具有個深諳於心的把握,很難做成一個完美的答案。

  7. 不斷的學習

    無論你喜歡與否,這世界一直在轉動,一直有新的東西誕生,好的、壞的,許多都需要你去做出抉擇,而且你的選擇對以後會有很大的影響。

  8. 健康

    大家都知道很重要,但說比做難的多。而且往往是牙痛了之後,才提醒自己每天晚上應該刷牙。

    你是否曾經這樣:只工作不生活(摘自rhett blog)一天一頓飯,一頓吃3頓
  9. 本文轉自: 徐藝波 http://www.xuyibo.org/article/44.htm 
相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.