程序越長(zhǎng)水平越高嗎
很多年前我剛拿到駕照不久,到了農(nóng)村的叔叔家,請(qǐng)他把他的小車(chē)給我開(kāi)一下。他問(wèn)我會(huì)開(kāi)嗎?我說(shuō)我有駕照。他又問(wèn)我開(kāi)了多少公里?我回答找了兩次陪駕大概500公里吧。他對(duì)我說(shuō),那你還不會(huì)開(kāi)車(chē),你只有開(kāi)了5000公里后,才能說(shuō)你會(huì)開(kāi)。我當(dāng)時(shí)很不服氣,心里想為什么要開(kāi)到5000公里才算會(huì)開(kāi)車(chē)呀!難道開(kāi)了1000公里、2000公里就不算開(kāi)車(chē)了嗎?直到多年后,我才切身體會(huì)到他講的是對(duì)的,開(kāi)了5000公里才能遇到各種各樣的行車(chē)狀況,駕駛員才能懂得去面對(duì)和處理這些狀況。
回到編程這個(gè)話(huà)題,程序員成長(zhǎng)也是這樣。一般一個(gè)程序有個(gè)幾千行語(yǔ)句,有的甚至上萬(wàn)行,一個(gè)項(xiàng)目所有的程序加起來(lái)有幾萬(wàn),十幾萬(wàn)行語(yǔ)句也很平常。對(duì)于新程序員來(lái)說(shuō),要多編程序,盡量遇到編程中的各種問(wèn)題,這樣程序員才能慢慢地成熟起來(lái)。編程慢慢地有了感覺(jué),編程有了積累,編程有了可以利用重復(fù)語(yǔ)句,編程速度也大大加快了。建議新手找一些較長(zhǎng)的程序作為范例,而且這個(gè)程序比較完整,具有實(shí)用價(jià)值,最好這個(gè)程序正在投入運(yùn)行!這樣學(xué)起來(lái)看得見(jiàn)摸得著,容易進(jìn)入情況。我的經(jīng)驗(yàn)告訴我,程序員在初期要大量地編寫(xiě)程序,不要管編的好不好,先把編程語(yǔ)句的數(shù)量搞上去,水平自然而然就上去了。不編上上萬(wàn)行語(yǔ)句,程序員是很難找到編程的感覺(jué)的。
當(dāng)程序員度過(guò)了最初的編程階段后,程序員就要轉(zhuǎn)變思想,慢慢地把程序的精練性放在重要的位置。我一直是把最短的程序看作我編程的目標(biāo),一個(gè)幾百行的程序那怕能省一行都是我要追求的,我絕不允許自己的程序中有一句廢話(huà)。早期我曾把自己程序拿出來(lái)放話(huà),誰(shuí)能省一行我就拜他為師。由此可見(jiàn)我對(duì)程序精練的追逐之瘋狂。
一次我的同事告訴我他讀了軟件公司的一個(gè)應(yīng)用程序大約有3-4千行語(yǔ)句。碰巧的是我也編了相同功能的程序,我只用了1000多行,他也讀了。他說(shuō)同樣的功能為什么會(huì)相差這樣大呢?是程序長(zhǎng)的水平高?還是程度短的水平高?
我的回答是:相同的功能因人不同而程序不同是很正常的。不同主要是由于對(duì)功能的理解、功能的算法、編寫(xiě)習(xí)慣等方面不同所造成的。因此,程序可長(zhǎng)可短。至于水平問(wèn)題,那就涉及面就很多了,有程序的書(shū)寫(xiě)方式和習(xí)慣、程序的可讀性、程序的邏輯結(jié)構(gòu)、功能算法、編程技巧、運(yùn)行效率、參數(shù)化程度、程序復(fù)用程度等等多個(gè)方面。但是,有一點(diǎn)是可以肯定的,那就是相同功能編寫(xiě)語(yǔ)句少的,水平相對(duì)比較高。當(dāng)然這個(gè)少至少占對(duì)比語(yǔ)句的10%以上。如果對(duì)比的兩個(gè)程序一個(gè)是100行,一個(gè)是104行,兩者相差僅4行,就很難在語(yǔ)句多少方面判別程序員之間的水平高低了。程序的精練除了反映在程序總的.語(yǔ)句條數(shù)上,還反映在程序中的函數(shù)的長(zhǎng)短上,尤其是在一個(gè)函數(shù)體內(nèi),其語(yǔ)句也是越短越好。我曾看到不少程序中一個(gè)函數(shù)能寫(xiě)到幾百行,甚至上千行。這類(lèi)程序員往往喜歡一氣呵成,把一個(gè)功能從頭到尾寫(xiě)在一個(gè)函數(shù)之中。我認(rèn)為這絕對(duì)不是一個(gè)好的編程習(xí)慣和編程風(fēng)格,理想中的一個(gè)函數(shù)大約在20-30條語(yǔ)句是最好的。
不少程序員熱衷于編寫(xiě)越來(lái)越多的程序,放任自己編寫(xiě)不必要的語(yǔ)句,從不注意程序的精練性。導(dǎo)致時(shí)間越長(zhǎng),程序員的水平越是沒(méi)有提高,F(xiàn)實(shí)中我們可以看到很多程序員開(kāi)始的時(shí)候,感覺(jué)其進(jìn)步很快,但是幾年之后,你依然看到他每天努力地編程序、依然看到他每天都在不進(jìn)步。而有的程序員每隔半年一年,他們就會(huì)發(fā)現(xiàn)自己以前編寫(xiě)的程序編的很差。這說(shuō)明這個(gè)程序員始終在努力地提高自己的編程水平,而且具有程序水平的判別能力。一個(gè)好的程序員到了一定階段其編程數(shù)量是呈下降趨勢(shì)的。但是其程序質(zhì)量和水平卻是呈上升趨勢(shì)的。還是舉駕駛員的例子,當(dāng)駕駛員開(kāi)滿(mǎn)了5000公里后,駕駛員會(huì)開(kāi)車(chē)子了,但是會(huì)開(kāi)車(chē)子并不意味駕駛員就能成為賽車(chē)手,成為賽車(chē)手需要其他的專(zhuān)業(yè)訓(xùn)練,才能又快又好完成行駛路程。
從總的方面來(lái)看,程序員尤其是新程序員編寫(xiě)的程序越長(zhǎng)越好,越多越好。但是,在具有一定編程積累后,程序員要學(xué)會(huì)編寫(xiě)精練的程序,程序越短越好,程序的精練程度也是影響程序員水平高低的重要因數(shù)。精練的語(yǔ)句永遠(yuǎn)是程序員追求的目標(biāo),程序員可以寫(xiě)長(zhǎng)篇小說(shuō)、可以寫(xiě)短篇小說(shuō)、但能寫(xiě)出詩(shī)來(lái)才是最好的。
【程序越長(zhǎng)水平越高嗎】相關(guān)文章:
學(xué)歷越高越容易失業(yè)?12-22
長(zhǎng)沙APP/小程序可以辦落戶(hù)嗎03-19
《成功跨越高中》教學(xué)反思10-07
CEO越高薪公司越成功11-22
GRE考試不是分越高越好嗎01-09
考研并非準(zhǔn)備時(shí)間越長(zhǎng)越好12-24
報(bào)關(guān)員對(duì)英語(yǔ)水平的要求高嗎09-30
雅思5.5是什么水平相當(dāng)于4級(jí)嗎?12-27
為什么智商越高的人越難相處10-27