Posted on 2009-08-08 14:29
Condor 閱讀(2214)
評論(22) 編輯 收藏 引用
以前是一個人悶頭寫代碼。工作久了,發(fā)現(xiàn)同行們的代碼基本都不能看,當(dāng)然不少還來自大公司。因此大公司的代碼也基本不能看。在學(xué)校里就聽說過許多同學(xué)的憧憬,要進(jìn)什么大公司學(xué)技術(shù),現(xiàn)在看來真是好笑,能學(xué)到才怪呢。
游戲行業(yè)我還蠻清楚,暴雪不知道,反正一直很崇拜,代碼應(yīng)該牛逼,看招聘就能看出來,不懂游戲的別來這里玩。牛逼。
其他公司,包括所有的日本公司+中國公司代碼都不堪入目。
1.首先我覺得寫代碼之前要了解自己,所為有所為,有所不為,并不是所有優(yōu)雅的東西都是每個人都能寫出來的。如果人人都能寫出美的東西,那也不能稱之為美了,大便之所以不香是因為你隨便就能得到。因此有時候一味去追求好的設(shè)計,無異于搬起石頭砸自己腳。游戲行業(yè)更是這樣,面對紛繁復(fù)雜的需求,需要對自己有清醒的認(rèn)識。
2.技術(shù)上,一定要了解計算機,二進(jìn)制編碼系統(tǒng)。居然很多計算機系出身的人不懂匯編與現(xiàn)代計算機體系結(jié)構(gòu),這基本上跟文盲沒什么太大區(qū)別了。(這里插一句,C++的內(nèi)存模型大多數(shù)也不知道。迭代器的++iter;iter++ 90%程序不知道區(qū)別。如果你看了也不知道,你每天要多花3-5個小時補課了。)
3.C++語言各個特性對設(shè)計的影響。我見過很多C過來的牛逼程序員,當(dāng)然更多的是垃圾程序員,懂了繼承以后就到處繼承,懂了多態(tài)不得了了,全是多態(tài),懂了模板,程序基本就不能看了。當(dāng)然C++也有很多我不滿意的設(shè)計,比如很多語法正確語義不當(dāng)?shù)臇|西,一定程度上也造成程序的可讀性不高。
4.數(shù)據(jù)結(jié)構(gòu),算法。再快的計算機也禁不起殺手們的調(diào)教,我見過內(nèi)存殺手,顯卡殺手,CPU殺手,你不是卡馬克,你的殺戮行動不會推動計算機進(jìn)步,只能使你的程序慢的象蝸牛。數(shù)據(jù)結(jié)構(gòu)和算法懂太多也不為過,別以為有了stl,有了boost就萬事大吉了,記住:沒有銀彈。
以下說一些設(shè)計上的東西。大部分人不用看了,因為看了你們也不懂。
1.項目相關(guān)人員應(yīng)該在項目初期共同制定好口頭詞匯,項目概念,指定規(guī)范的行業(yè)概念,特別是游戲行業(yè),我覺得規(guī)范特別缺乏,因為大家覺得反正遲早要改,所以不如無規(guī)范。這個觀念是十分錯誤的。我認(rèn)為無論項目有多緊張,規(guī)范都是首位的,沒有的后果就是項目一直緊張,最后Cancel。(插一句:我認(rèn)為中國游戲策劃是最傻逼的職業(yè)之一,如果你不是為了混口飯吃,而是理想要做一名策劃的話,我勸你趕緊回頭是岸。)
2.模塊的劃分很重要,便于你考慮每個模塊的參與人數(shù)和數(shù)量分配。并不是一切都要模塊化,剛才說了,不要懂了個模塊就開始天天模塊了。這點我非常同意云風(fēng)的話,設(shè)計所謂框架是最最最不靠譜的事情,當(dāng)然一開始就設(shè)計模塊也是很呆的,除非你是本杰恩,否則不推薦,為了抽象的抽象只是讓你離真實更遠(yuǎn),記住“kiss”法則。好的程序不應(yīng)該比我們說話還拗口。
3.最重要的!良好的接口所有的特征審核表,把他貼在你計算機任何一個醒目的地方吧
a.功能的正交分解
b.最小化的接口
c.最明確的函數(shù)調(diào)用語義(注意是語義,不是語法,所以收回你那些狗屁不通的接口吧)
d.最適合出錯檢查機制(象c++爸爸說的,我寫第一句代碼時就想到該如何調(diào)試了)
4.不要過分癡迷于接口,多寫點用戶代碼,多體驗一下用戶。別寫“公務(wù)員”式的接口,很多腦殘設(shè)計用都沒法用。
5.不要吝惜筆墨來描寫代碼描述及文檔,微軟為什么牛逼,看看多少人在寫msdn文檔就知道了。
6.盡量引誘那些愿意使代碼高質(zhì)量的程序員參與進(jìn)來。很幸運的是我手下有一個。
7.精益求精,如果你把寫不僅僅把寫代碼當(dāng)作謀生工具的話,我覺得你應(yīng)該付出多一點。就算他只是你吃飯的本錢,我也覺得你應(yīng)該有點職業(yè)精神。程序員這個行業(yè)很特殊,代碼臭并不一定很顯然,不象外科醫(yī)生開的刀痕,機械工人做的零件。所以很多東西要靠自己審視。