01 2009 檔案
摘要: “叫我看看……”小P開始比較代碼,“哦,在這個版本你用 game 代替了 queue,用 child 代替了 one, 但是有什么實(shí)質(zhì)區(qū)別?”小P有些不解。
“嗯,這個是一個用問題域詞匯編程而不是解決域詞匯編程的例子,最大的優(yōu)點(diǎn)是意圖明確,容易理解,代碼可讀性強(qiáng);另外一個好處是相對穩(wěn)定——比如用 game 代替 queue——其一,評審代碼的人可能會不明白這個queue是做什么的,為什么和下面的初始化函數(shù)格格不入,從而造成你頻繁的回答大量的溝通性的問題,這將大大影響你生活的穩(wěn)定性和質(zhì)量;其二,如果我們將來——我是說如果——使用list數(shù)據(jù)結(jié)構(gòu)來替換queue,避免了還要更改注釋的風(fēng)險——代碼更新而注釋陳舊,正是我們在進(jìn)行項(xiàng)目開發(fā)時一個特別特別特別的n次冪嚴(yán)重的問題……而使用問題域的詞匯,只要需求不發(fā)生變更,則我們就不需要修改什么而導(dǎo)致一些……代碼人格上的分裂……”
閱讀全文
摘要: “嗯,雖然理論上說只要保證你的代碼縮進(jìn)風(fēng)格前后統(tǒng)一就可以了,但是在現(xiàn)實(shí)生活中我們不會也不允許千人千面,因?yàn)榇蠹疫€是要互相交流的,讓任何人去適應(yīng)別人的縮進(jìn)風(fēng)格都是低效率和不公平的,因此形成了很多約定俗成的東西,哪怕它們不合理,但是它們的確形成了,而且你最好也遵守這樣的規(guī)矩,如果你違背了這些東西,只能說明要么你是搗亂,要么你是絕對的新手。”
“哦?”
“這些有點(diǎn)像江湖黑話,如果你不是混江湖的,在打切口的時候鬧了笑話,道上的兄弟一定會笑話你,新警察吧……”
“哈哈哈哈……”
“就我所知,目前江湖上有幾種常用的黑話格式,K&R,BSD和GNU等,無論你采用哪一種,別人看了就知道你是道上混的,而且知道了你的山頭,也就會高看你一眼……”
閱讀全文
摘要: “我看不懂……”老P才看了30秒就決定放棄了。
“不會吧,我覺得我寫得邏輯性還挺清楚的啊。”小P有些得意老C看不懂他寫的代碼,覺得可能自己寫的邏輯過于高深了。
“……”老C沉默了半分鐘,“這個不是C代碼!”他肯定的說道,“所以我看不懂,也不想看懂。”
“?”小P有些奇怪,“這明明就是C語言寫的代碼啊,你看,我來給你解釋解釋……”
“哦,算了,這些根本不是C代碼,我沒有必要看懂。”
“那你說這些是什么?”小P有些不高興了。
“這些是……”老C找著合適的形容詞匯,“這些是貓爬過屏幕的腳印,我沒有必要看懂腳印所代表的含義……”看到小P有些驚愕,然后開始有些生氣,逐漸開始惱羞成怒了,老C趕快對他說:“呵呵,別生氣了,我開玩笑的,不過,”老C的語氣嚴(yán)肅起來,“這些的確是很糟糕的代碼,哪怕它的算法多么高效,執(zhí)行效率多么高,它都是糟糕的代碼!”
閱讀全文
摘要: “呵呵,”老C停止了和小P的說笑,覺得下午的疲倦一掃而空,“對了,剛才你在忙什么呢?”
“喔,我在做C++的練習(xí)題目。”
“是么?這么刻苦,厲害。什么題目?”
“呵呵,還挺有趣的,說是用C++的格式輸出cout在屏幕上輸出各種對齊的數(shù)據(jù),用*號組成一個五角星,還有……”
“天,功不是這樣用的,習(xí)不是這樣學(xué)的……”老C有些囧,“扔掉那本爛書吧,沒有這樣學(xué)習(xí)C++的。”
閱讀全文
摘要: “好像一段代碼對其具體實(shí)現(xiàn)了解的越少,它的維護(hù)性就會越好?”小P有些猜測。
“呵呵,的確,那么我們通過各種不同的方法達(dá)到了什么樣的看似相同的目的?”老C開始掉小P的胃口。
“信息隱藏?”小P不太確定。
“信息隱藏是手段,但不是目的。”老C很確定的否決掉小P,“我們達(dá)到的目的是控制問題的規(guī)模!”
老C覺得有必要給小P講講哲學(xué):“我們寫軟件的目的是為了解決現(xiàn)實(shí)生活中的具體問題,沒錯吧?”
“沒錯,的確是這樣,可是這個和C++有什么關(guān)系的?”小P覺得有些莫名其妙。
“那么你覺得使用高級的語言、先進(jìn)的設(shè)計(jì)和合理的開發(fā)流程,問題的復(fù)雜度會降低嗎?”
“那是啊,問題的復(fù)雜度當(dāng)然會降低啊。”
“唉,錯了,問題的復(fù)雜度不會降低的,因?yàn)閱栴}的復(fù)雜度是客觀存在,不會因?yàn)槿酥饔^的原因而改變!”
閱讀全文
摘要: “*^*”小P看的有些眩暈,“我有些頭暈,像暈車……”
“沒有關(guān)系,只是你不熟悉罷了。”老C摸著下巴,“這就是我說的風(fēng)格問題,因?yàn)樗伎紗栴}的方式不同導(dǎo)致代碼的風(fēng)格看起一時難以接受而已。”
“哦?看來只是習(xí)慣問題?那么我再看看……”克服了暈車般的頭痛,小P又看了幾遍代碼,感覺依照自己的C基礎(chǔ),看懂是沒有問題的,畢竟自己還是很油菜的。“的確是習(xí)慣問題,但是為什么老C會這樣思考問題呢?”小P想。
“因?yàn)樾畔㈦[藏……”
閱讀全文