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