[轉載]關於C++,我覺得好的設計法則

來源:互聯網
上載者:User

以前是一個人悶頭寫代碼。工作久了,發現同行們的代碼基本都不能看,當然不少還來自大公司。因此大公司的代碼也基本不能看。在學校裡就聽說過許多同學的憧憬,要進什麼大公司學技術,現在看來真是好笑,能學到才怪呢。
遊戲行業我還蠻清楚,暴雪不知道,反正一直很崇拜,代碼應該牛逼,看招聘就能看出來,不懂遊戲的別來這裡玩。牛逼。
其他公司,包括所有的日本公司+中國公司代碼都不堪入目。

1.
首先我覺得寫代碼之前要瞭解自己,所為有所為,有所不為,並不是所有優雅的東西都是每個人都能寫出來的。如果人人都能寫出美的東西,那也不能稱之為美了,
大便之所以不香是因為你隨便就能得到。因此有時候一味去追求好的設計,無異於搬起石頭砸自己腳。遊戲行業更是這樣,面對紛繁複雜的需求,需要對自己有清醒
的認識。

2.技術上,一定要瞭解電腦,二進位編碼系統。居然很多電腦系出身的人不懂彙編與現代電腦體繫結構,這基本上跟文盲沒什麼
太大區別了。(這裡插一句,C++的記憶體模型大多數也不知道。迭代器的++iter;iter++
90%程式不知道區別。如果你看了也不知道,你每天要多花3-5個小時補課了。)

3.C++語言各個特性對設計的影響。我見過很多C過來
的牛逼程式員,當然更多的是垃圾程式員,懂了繼承以後就到處繼承,懂了多態不得了了,全是多態,懂了模板,程式基本就不能看了。當然C++也有很多我不滿
意的設計,比如很多文法正確語義不當的東西,一定程度上也造成程式的可讀性不高。

4.資料結構,演算法。再快的電腦也禁不起殺手們的調教,我見過記憶體殺手,顯卡殺手,CPU殺手,你不是卡馬克,你的殺戮行動不會推動電腦進步,只能使你的程式慢的象蝸牛。資料結構和演算法懂太多也不為過,別以為有了stl,有了boost就萬事大吉了,記住:沒有銀彈。

以下說一些設計上的東西。大部分人不用看了,因為看了你們也不懂。
1.
項目相關人員應該在項目初期共同制定好口頭詞彙,項目概念,指定規範的行業概念,特別是遊戲行業,我覺得規範特別缺乏,因為大家覺得反正遲早要改,所以不
如無規範。這個觀念是十分錯誤的。我認為無論項目有多緊張,規範都是首位的,沒有的後果就是項目一直緊張,最後Cancel。(插一句:我認為中國遊戲策
劃是最傻逼的職業之一,如果你不是為了混口飯吃,而是理想要做一名策劃的話,我勸你趕緊回頭是岸。)

2.模組的劃分很重要,便於你考慮每
個模組的參與人數和數量分配。並不是一切都要模組化,剛才說了,不要懂了個模組就開始天天模組了。這點我非常同意雲風的話,設計所謂架構是最最最不靠譜的
事情,當然一開始就設計模組也是很呆的,除非你是本傑恩,否則不推薦,為了抽象的抽象只是讓你離真實更遠,記住“kiss”法則。好的程式不應該比我們說
話還拗口。

3.最重要的!良好的介面所有的特徵審核表,把他貼在你電腦任何一個醒目的地方吧
a.功能的正交分解
b.最小化的介面
c.最明確的函數調用語義(注意是語義,不是文法,所以收回你那些狗屁不通的介面吧)
d.最適合出錯檢查機制(象c++爸爸說的,我寫第一句代碼時就想到該如何調試了)

4.不要過分癡迷於介面,多寫點使用者代碼,多體驗一下使用者。別寫“公務員”式的介面,很多腦殘設計用都沒法用。

5.不要吝惜筆墨來描寫代碼描述及文檔,微軟為什麼牛逼,看看多少人在寫msdn文檔就知道了。

6.盡量引誘那些願意使代碼高品質的程式員參與進來。很幸運的是我手下有一個。

7.精益求精,如果你把寫不僅僅把寫代碼當作謀生工具的話,我覺得你應該付出多一點。就算他只是你吃飯的本錢,我也覺得你應該有點職業精神。程式員這個行業很特殊,代碼臭並不一定很顯然,不象外科醫生開的刀痕,機械工人做的零件。所以很多東西要靠自己審視。

 

 

http://www.cnblogs.com/flying_bat/archive/2009/08/08/1541776.html

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.