前言前面先跟大家講一下,無志深入資訊產(chǎn)業(yè)或?qū)W習(xí)寫程式的人,可以跳過這部份的理論,因?yàn)樗菍?shí)作哲學(xué),跟我們?cè)趯W(xué)校寫作業(yè)的取向完全不同,基本上學(xué)習(xí)的目標(biāo)是:美好曼妙的設(shè)計(jì)原則。
筆者認(rèn)知的高階程式語言理論,並不像大家想的那樣是一種實(shí)作技術(shù),在這裡我不會(huì)談指標(biāo)的概念,不會(huì)談?lì)悇e的使用方法跟宣告方法,更不會(huì)提例外處理如何宣告跟實(shí)作,這些技術(shù)性的東西我們會(huì)在
程式設(shè)計(jì)相關(guān)理論補(bǔ)足,並且會(huì)依學(xué)習(xí)難易度給予各位讀者適合的建議。
對(duì)於高階程式語言理論,我更傾向把它稱作一種程式的藝術(shù)手法,什麼是程式的藝術(shù)手法呢?就是,通常要有一點(diǎn)慧根跟實(shí)作經(jīng)驗(yàn)做結(jié)合,才能有所感覺的東西,而且這個(gè)東西沒有完全正確的概念跟作法,有些作法拿給一群人看覺得OK,另一群人可能就會(huì)有不同的見解。
內(nèi)容概要
簡(jiǎn)單來說很大部份是程式哲學(xué),它不是一個(gè)固定不變的法則,而是一個(gè)可遵守也可不被遵守的原則,比方說我喜歡把結(jié)構(gòu)化程式設(shè)計(jì)說成是一種法則,而這個(gè)法則通常是大方向,且很少會(huì)有人去質(zhì)疑的。
舉例來說,每個(gè)人都有不同的原則,有的人喜歡早睡早起,這是個(gè)好原則好習(xí)慣,但是不是所有人都肯定或遵守,那我就會(huì)稱它叫原則。
在這裡筆者基本上會(huì)把程式藝術(shù)分成兩大部份討論:
一、資料質(zhì)感跟品質(zhì)
二、結(jié)構(gòu)藝術(shù)
例如:
1.我們會(huì)深入討論到,物件導(dǎo)向的用意,以往我們都以為會(huì)寫類別就是等於學(xué)會(huì)了物件導(dǎo)向,但這兩件事是完全無關(guān)的,物件導(dǎo)向是實(shí)作,但它同時(shí)也是一種思維,思維不轉(zhuǎn)變就不會(huì)認(rèn)知到物件導(dǎo)向的好,反而認(rèn)為物件導(dǎo)向除了實(shí)作麻煩沒有任何好處,在這部份筆者將告訴你物件導(dǎo)向是多麼人性.多麼優(yōu)雅,它將以花枝招展的舞步呈現(xiàn)在各位面前。
2.學(xué)校寫作業(yè)變數(shù)跟函數(shù)怎麼命名無所謂,但是高階程式設(shè)計(jì)講究的是最好的命名,而且命名是一切的基礎(chǔ),跳過命名,基本上就等於摒棄.背離了美好曼妙的設(shè)計(jì)原則。
3.在學(xué)校寫程式作業(yè),邏輯只要正確,誰還管你程式邏輯是好是壞?但是這裡探討的東西都是在實(shí)作軟體程式的階段,如何把邏輯寫的更乾淨(jìng)更易理解,是你必需去考慮的原則。
3.函數(shù)要怎麼寫,完全是個(gè)人意願(yuàn),但是美好曼妙的設(shè)計(jì)原則上不希望太冗長的函數(shù),理想的設(shè)計(jì)是參數(shù)傳遞越少越好,且函數(shù)要容易讓人理解,意思就是說使用函數(shù)的人能知道越少實(shí)作細(xì)節(jié)越好,它最好是黑箱設(shè)計(jì)。
4.類別或物件之間傳遞訊息的方式,甚至也包含類別的大小,也會(huì)在該部份討論到,什麼方式是不建議做的,什麼方式是建議採用的,高階程式語言理論會(huì)提到。
5.在這裡我們會(huì)討論註解,也會(huì)批判註解,請(qǐng)注意,這部份每個(gè)人認(rèn)知不同,但是我們還是著眼在批判,因?yàn)殛P(guān)於註解的好處,就算我們不去探討,也早有一堆人提及了。
6.我們會(huì)討論程式結(jié)構(gòu)重組,爛的程式結(jié)構(gòu),我們?nèi)绾螌⑺亟M變成好的結(jié)構(gòu)?重組的方式基本上是一種藝術(shù)思維,它沒有固定的標(biāo)準(zhǔn)或方式,但是有個(gè)好的大方向可以稍稍依循,筆者認(rèn)為重組是最難學(xué)習(xí)的部份,畢竟有些程式的複雜性跟怪異性會(huì)讓你不得不飆髒話。
總結(jié)
對(duì)於有志投入資訊產(chǎn)業(yè)的朋友們,高階程式語言理論絕對(duì)有其重要性,尤其軟體產(chǎn)業(yè)最近真是搞的水深火熱,要知道,美好曼妙的程式碼是一種良性循環(huán),你重組了別人的爛程式,你重新改了一個(gè)函式命名,對(duì)你自己本身的工作環(huán)境,都是一種改善,而且你的改善會(huì)讓下一個(gè)人清楚看到並且學(xué)習(xí),造就更多美好曼妙的程式碼,也會(huì)讓整個(gè)軟體產(chǎn)業(yè)的生產(chǎn)力提高一個(gè)層次。
所以這些東西你說重不重要?它的重要性不亞於你的程式碼功力,更不亞於你寫測(cè)試的能力,也不亞於你優(yōu)秀的理解力,畢竟你寫出來的程式不是只給你自己看的,下一個(gè)承接你程式的團(tuán)隊(duì),或者你的團(tuán)隊(duì)成員,他們都需要你對(duì)程式碼的細(xì)心照料。