程序之美
| ? |
| ? |
| 程序的美要從兩個(gè)方面進(jìn)行品味,一是程序整體的架構(gòu)之美;一是程序的代碼實(shí)現(xiàn)之美。 編碼之美: 編程就是為解決一個(gè)計(jì)算機(jī)能夠解決的問題寫出具體的程序?qū)崿F(xiàn)。 開始,人們總是從發(fā)現(xiàn)代碼之美開始的,從把代碼一股腦的寫在main方法里,到把一些有獨(dú)立意義的代碼片斷寫成不同的方法;從不知道代碼重用,到把有重用性的代碼抽象出來在不同的地方重用;從類與類之間沒有什么組織結(jié)構(gòu),到開始把程序中的類組織成不同的目錄結(jié)構(gòu),讓不同的類擔(dān)當(dāng)不同的責(zé)任。這個(gè)時(shí)候才第一次和OO思想沾邊。從把類看成程序最大的組織形式,到把程序設(shè)計(jì)成不同的模塊;從不知道接口有何用處,到發(fā)現(xiàn)自己離了接口竟然有點(diǎn)不會(huì)寫程序了。這些是我編程的不同階段,相信大多數(shù)人也都要在不同的階段走過。代碼之美還有很具體的地方,實(shí)現(xiàn)同樣的功能,有人做不出來,有人用1天寫出一個(gè)一千行的實(shí)現(xiàn)方案,需要運(yùn)行1s鐘解決問題,有人用10天寫出一個(gè)一萬行的實(shí)現(xiàn)方案,只要運(yùn)行0.01s就能解決問題。通常來說,要解決一個(gè)問題,人做的工作越多,計(jì)算機(jī)做的工作就越少;思維越縝密,就越能減少程序出現(xiàn)的bug,同樣,代碼長(zhǎng)度也就越長(zhǎng)。一萬行的程序不一定比一千行的程序慢。說起代碼之美,我想起以前看到的一個(gè)小題目:用最短最高效的代碼實(shí)現(xiàn)一個(gè)方法,判斷一個(gè)32位的int數(shù)num是不是2的冪數(shù)(既是否存在一個(gè)n是的n個(gè)2相乘,得到num),存在則返回0,不存在返回非零。 我見過的最牛的實(shí)現(xiàn): public int count(int num){ ? ? return x&(x-1); } 代碼之美體還現(xiàn)在很多地方,比如說優(yōu)秀的算法,命名規(guī)范、代碼格式等等。 架構(gòu)之美: 好的架構(gòu)是系統(tǒng)成功的一大半,有了好的架構(gòu),實(shí)現(xiàn)起來只有好壞之分,基本不存在能不能實(shí)現(xiàn)的疑問。對(duì)系統(tǒng)進(jìn)行架構(gòu)的過程就是對(duì)現(xiàn)實(shí)世界中的事物和過程進(jìn)行抽象的過程,抽象的越接近事實(shí)的本質(zhì),適應(yīng)性越強(qiáng),系統(tǒng)的生命力也就越強(qiáng)。作為一個(gè)還沒畢業(yè)的大學(xué)生,我不敢說自己對(duì)架構(gòu)一個(gè)系統(tǒng)有什么獨(dú)到的見解。唯一一次像樣的架構(gòu)程序也就是做那個(gè)項(xiàng)目,架構(gòu)總體還算成功,采用插件式設(shè)計(jì),這個(gè)思想使得我們整個(gè)程序各個(gè)模塊之間的耦合度都很低,幾乎完全是面向接口編程的。系統(tǒng)架構(gòu)這個(gè)東西感覺一是要學(xué)習(xí)理論知識(shí),學(xué)習(xí)成功案例,多想想如果是自己會(huì)怎么辦,有機(jī)會(huì)自己要多實(shí)踐,理論聯(lián)系實(shí)踐是最重要的。同時(shí)還要多思考,思考世界,思考事物之間的關(guān)系,將它們抽象成計(jì)算機(jī)可以表示可以處理的模型。 ?? 系統(tǒng)越小,編碼顯得越重要;系統(tǒng)越大,架構(gòu)越顯得重要。 ? 但是具體到我現(xiàn)在接收的一個(gè)半路項(xiàng)目,其架構(gòu)是比較好的,完全能夠達(dá)到應(yīng)用的實(shí)際需要,但是代碼實(shí)現(xiàn)卻做的非常差導(dǎo)致整個(gè)項(xiàng)目質(zhì)量嚴(yán)重縮水,這也是讓人很無奈的。 閱讀優(yōu)美的代碼,體味優(yōu)美的架構(gòu),一種思想的美總能止不住的從心中油然而生,如同醍醐灌頂。 |
轉(zhuǎn)載于:https://www.cnblogs.com/deepnighttwo/archive/2010/07/07/1964334.html
總結(jié)
- 上一篇: 北京环球影城买了门票以后随便玩吗
- 下一篇: delphi中Label中文显示不全的问