程式越長水平越高嗎?

2021-05-21 13:05:38 字數 2531 閱讀 4634

很多年前我剛拿到駕照不久,到了農村的叔叔家,請他把他的小車給我開一下。他問我會開嗎?我說我有駕照。他又問我開了多少公里?我回答找了兩次陪駕大概

500公里吧。他對我說,那你還不會開車,你只有開了

5000

公里後,才能說你會開。我當時很不服氣,心裡想為什麼要開到

5000

公里才算會開車呀!難道開了

1000公里、

2000

公里就不算開車了嗎?直到多年後,我才切身體會到他講的是對的,開了

5000

公里才能遇到各種各樣的行車狀況,駕駛員才能懂得去面對和處理這些狀況。

回到程式設計這個話題,程式設計師成長也是這樣。一般乙個程式有個幾千行語句,有的甚至上萬行,乙個專案所有的程式加起來有幾萬,十幾萬行語句也很平常。對於新程式設計師來說,要多程式設計序,盡量遇到程式設計中的各種問題,這樣程式設計師才能慢慢地成熟起來。程式設計慢慢地有了感覺,程式設計有了積累,程式設計有了可以利用重複語句,程式設計速度也大大加快了。建議新手找一些較長的程式作為範例,而且這個程式比較完整,具有實用價值,最好這個程式正在投入執行!這樣學起來看得見摸得著,容易進入情況。我的經驗告訴我,程式設計師在初期要大量地編寫程式,不要管編的好不好,先把程式設計語句的數量搞上去,水平自然而然就上去了。不編上上萬行語句,程式設計師是很難找到程式設計的感覺的。

當程式設計師度過了最初的程式設計階段後,程式設計師就要轉變思想,慢慢地把程式的精練性放在重要的位置。我一直是把最短的程式看作我程式設計的目標,乙個幾百行的程式那怕能省一行都是我要追求的,我絕不允許自己的程式中有一句廢話。早期我曾把自己程式拿出來放話,誰能省一行我就拜他為師。由此可見我對程式精練的追逐之瘋狂。

一次我的同事告訴我他讀了軟體公司的乙個應用程式大約有

3-4千行語句。碰巧的是我也編了相同功能的程式,我只用了

1000

多行,他也讀了。他說同樣的功能為什麼會相差這樣大呢?是程式長的水平高?還是程度短的水平高?

我的回答是:相同的功能因人不同而程式不同是很正常的。不同主要是由於對功能的理解、功能的演算法、編寫習慣等方面不同所造成的。因此,程式可長可短。至於水平問題,那就涉及面就很多了,有程式的書寫方式和習慣、程式的可讀性、程式的邏輯結構、功能演算法、程式設計技巧、執行效率、引數化程度、程式復用程度等等多個方面。但是,有一點是可以肯定的,那就是相同功能編寫語句少的,水平相對比較高。當然這個少至少佔對比語句的

10%以上。如果對比的兩個程式乙個是

100行,乙個是

104行,兩者相差僅

4行,就很難在語句多少方面判別程式設計師之間的水平高低了。程式的精練除了反映在程式總的語句條數上,還反映在程式中的函式的長短上,尤其是在乙個函式體內,其語句也是越短越好。我曾看到不少程式中乙個函式能寫到幾百行,甚至上千行。這類程式設計師往往喜歡一氣呵成,把乙個功能從頭到尾寫在乙個函式之中。我認為這絕對不是乙個好的程式設計習慣和程式設計風格,理想中的乙個函式大約在

20-30

條語句是最好的。

隨手舉個例子吧:我們常常會拼接乙個檔名。會用到三條語句(以

c語言為例):

strcopy(file_name,f_name);

strcat(file_name,」.」);

strcat(file_name,ext_name) 其中

file_name

是最終的檔名,

f_name

是檔名,

ext_name

是檔案的字尾名。

如果,我們編寫乙個字串拼接

strjion

函式。

strjion(str,str1,str2,str3)

string str,

string str1,str2,str3;

這個拼接只要寫成一條語句了:

strjion(file_name,f_name,」.」,ext_name);

如果程式中有

100處拼接,原來需要寫

300條語句,通過乙個函式

8條語句,就只要

100條語句了,節省了

200-8

條語句。

這僅是個例子,我們也可以用

c語言中乙個系統函式來實現上述功能的,大家可以猜一猜這個函式是什麼。

不少程式設計師熱衷於編寫越來越多的程式,放任自己編寫不必要的語句,從不注意程式的精練性。導致時間越長,程式設計師的水平越是沒有提高。現實中我們可以看到很多程式設計師開始的時候,感覺其進步很快,但是幾年之後,你依然看到他每天努力地程式設計序、依然看到他每天都在不進步。而有的程式設計師每隔半年一年,他們就會發現自己以前編寫的程式編的很差。這說明這個程式設計師始終在努力地提高自己的程式設計水平,而且具有程式水平的判別能力。乙個好的程式設計師到了一定階段其程式設計數量是呈下降趨勢的。但是其程式質量和水平卻是呈上公升趨勢的。還是舉駕駛員的例子,當駕駛員開滿了

5000

公里後,駕駛員會開車子了,但是會開車子並不意味駕駛員就能成為賽車手,成為賽車手需要其他的專業訓練,才能又快又好完成行駛路程。

從總的方面來看,程式設計師尤其是新程式設計師編寫的程式越長越好,越多越好。但是,在具有一定程式設計積累後,程式設計師要學會編寫精練的程式,程式越短越好,程式的精練程度也是影響程式設計師水平高低的重要因數。精練的語句永遠是程式設計師追求的目標,程式設計師可以寫長篇**、可以寫短篇**、但能寫出詩來才是最好的。

下篇:《功能和介面那個更重要》

水平越高,贏的概率越高,可是這終究只是個概率。

想起來了vfk部落格中的話。我不覺得我比集訓隊中某些人水平低。可是進隊的是他們,不是我。為什麼呢?為什麼呢?我大概想清楚了。oi的本質其實也是在賭博。水平越高,贏的概率越高,可是這終究只是個概率。我獲勝的概率比較大,但是最後還是輸了。我曾經以為我看透了oi的本質,就是比誰穩,比誰暴力打得好,比誰不掛...

大學考試分數越高學分越多嗎 大學學分越高越好嗎

大學不是學分越高越好。大學績點越高越好,學分多說明你學的課多,其實只要過了學校畢業的學分的就好了,不需要太多的。學分不是越多越好 學分是評判乙個大學生能否畢業的條件,大學生要畢業,必須達到必修課,選修課和專業課的學分要求才能畢業。學分多只是代表你學的科目多,不代表你學得好。就業單位更看重你的學習成績...

幅值單位是v嗎 電容越厚電容量就越高嗎?

電容的容量 電容的容量與電極層之間的距離有關,即同樣的電極層,他們之間的距離越小,即厚度越小,電容量且增加了 這與整個生產技術有很大的關係 這並不影響性生 那麼有好多任務程師就會問,電容器變薄了,靜電容量反而增了。這樣對產品效能有影響嗎?那我們再一起分析討論一下,有些什麼原因 首先我們看看電容的 1...