Posted on 2009-08-08 14:29
Condor 閱讀(2213)
評論(22) 編輯 收藏 引用
以前是一個人悶頭寫代碼。工作久了,發現同行們的代碼基本都不能看,當然不少還來自大公司。因此大公司的代碼也基本不能看。在學校里就聽說過許多同學的憧憬,要進什么大公司學技術,現在看來真是好笑,能學到才怪呢。
游戲行業我還蠻清楚,暴雪不知道,反正一直很崇拜,代碼應該牛逼,看招聘就能看出來,不懂游戲的別來這里玩。牛逼。
其他公司,包括所有的日本公司+中國公司代碼都不堪入目。
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.精益求精,如果你把寫不僅僅把寫代碼當作謀生工具的話,我覺得你應該付出多一點。就算他只是你吃飯的本錢,我也覺得你應該有點職業精神。程序員這個行業很特殊,代碼臭并不一定很顯然,不象外科醫生開的刀痕,機械工人做的零件。所以很多東西要靠自己審視。