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