接上篇。
7、 調用
呼叫在程式設計中是用的最多的語句之一,一般有系統呼叫、自編函數呼叫等等。調用的本質是邏輯模組的處理。這表示呼叫是一個模組,是一個功能語句的集合,同時,這個函數是一個邏輯劃分,一般不可能將一個有連結的語句分成兩個函數來呼叫。
關於調用我們要注意以下幾點:
1) 如何進行自編函數的編寫
2) 如何呼叫自編函數
3) 如何引用系統函數
4) 如何呼叫系統函數
5) 呼叫時要注意函數的參數類型和參數次序與定義相符
6) 呼叫時要注意函數的回傳值:無值、有值、傳回值的資料型別
7) 要特別注意自編函數中的指標參數的運用,不要指標溢出,導致函數出錯。
8) 掌握如何將函數變成參數的方法,使得函數更有彈性。
9) 要了解鬆散耦合函數的呼叫方法,尤其是掌握webservice的呼叫和動態呼叫。
8、 文件操作
文件操作在過去運用十分頻繁,現在很多資訊都存放到資料庫之中了,文件操作的大部分工作都被資料庫取代了。但是,有關資料的後台處理,參數處理,輸出結果等方面還是會用到文件的。文件操作的本質是對以文件形式存放的資料進行的操作。文件即可以作為操作的資料來源、也可以成為資料處理的結果。
關於文件操作我們要注意以下幾點:
1) 要知道檔案的兩個基本類型:二進位和ASCII。兩種類型開啟的系統函數是不一樣的。兩種處理體係是不一樣的!
2) 要知道文件開啟方式種類與應用範圍:讀、寫、只讀、只寫等
3) 要知道檔案操作基本功能:開啟、關閉、讀取、寫入、偏移指標(定位)
4) 要知道流文件操作常用函數。
5) 要特別注意文件操作失敗的回傳值:開啟失敗!寫入失敗(檔案只讀、權限不夠、空間滿等)
6) 了解大檔案(大於4G)的處理方法
7) 由於xls檔案的廣泛應用,我們要特別要掌握相關xls的檔案處理的讀取、寫入等功能的呼叫方法。
8) 掌握FTP的相關功能,並能引用並呼叫FTP。
9)如何解決大檔案在傳輸沒有結束時,就開始讀取此檔案或重新傳輸的產生的問題。
9、邏輯運算
邏輯運算一般用於條件式之間與或非等邏輯關係,程式中使用相對比較少,但是在應用的演算法中則常常出現,尤其是在查詢條件中,與操作用得最為廣泛。邏輯運算的本質是事物之間的邏輯關係。邏輯運算只是某種處理的條件和前提。其一般不能單獨存在。
關於邏輯運算我們一般要注意:
1) 當出現多個條件時候,最好將條件組合成2大條件,使得程式邏輯性更強,更可讀。
2) 要了解當與操作運算時,當只要有一個條件為假的時候,整個表達式就得到假的結果。而不會把所有條件都運算出來!
例如:表達式為a>5&&b>6&&c>7&&d>8
如果a=1,則表達式的結果為假,且程式不會再去運算b>6,c>7,d>8了。
如果,a=6,b=7,c=8,則程式一定要去運算d>8的。掌握整個道理我們可以把最容易為假的條件放在表達式最前面,可以提高程式的效率。
同理,當或操作運算時,當只要有一個條件為真的時候,整個表達式就為真,而不會所有條件都運算出來。
3) 學會利用邏輯運算子作為參數,動態產生查詢中條件語句。
4) 學習透過循環語句語句自動形成與條件的表達式。
例如,我們尋找以姓名和性別為條件同時成立的結果。
一般我們可以寫成name='王華' and sex='1'。
我們可以將name,sex放入fld_name數組之中,將王華和1放在content數組之中。
透過對數組操作自動形成這個條件語句:
String exp=””;
For(int i=0;i<2;i++)
{
if(i==0)
exp=fld_name[i]+”='”+content[i]+”'”;
else
exp=exp+”&&”+ fld_name[i]+”='”+content[i]+”'”;
}
當我們的查詢字段很多的時候,我們的程式就會很簡潔很通用的。
10、 資料庫訪問
資料庫是目前是應用軟體中使用最多的技術,沒有資料庫的軟體幾乎不可想像,大型軟體更是如此。資料庫的本質是事物的量化集合以及相互關係。程式設計師不但要掌握資料庫本身的功能,如資料庫建立,表建立、索引建立、資料操縱語言的insert、update、select使用方法等最最基本要領,而且要掌握透過程式的方法存取資料庫。
對存取資料庫我們應該注意:
1) 我們如何存取資料庫,存取資料庫方式是什麼,存取資料庫需要什麼參數。
2) 如何提交資料庫操作指令、如何執行預存程序。
3) 如何取得資料庫指令的回傳值,了解傳回值的意義。
4) 如何取得資料庫指令的結果集,以及結果集存放方式,結果集的操作方法。
5) 學會用表名、字段名、字段個數、記錄個數進行循環操作。
6) 資料庫操作出錯處理
7) 資料集和資料庫的更新同步
8) 資料庫事務處理。
9) 海量資料的處理方法(如何利用結果集與資料庫之間的關係來提高資料處理效能,其他處理方法不在此討論)
至於資料庫本身的一些技能就不會在這裡談論了。
11、 控件
控制大都用在人機互動的介面之中,當然還有很多不顯示的功能控制。控制使用之廣泛、之頻繁是程式設計師遇到最多的物件。通常使用的最多的是標籤、文字方塊、指令鈕、列錶框、下拉框、表格等,人們透過拖曳來操作。控件的本質是人機對話的媒介。當然還有可重複使用的物件使用的功能。
對控制我們一般要注意以下幾點:
1) 要特別注意每個控制項的特性和使用範圍,學習準確使用控制。例如,文字方塊可以顯示字串,標籤也可以顯示字串。但是,我們一般用標籤控制項顯示常數而且是唯讀,用文字方塊顯示變數而且可編輯。注意到這些差異之後,我們就可以正確選擇我們的控制項了。如果我們用文字方塊去顯現一個標題的話,那我們就可能不恰當地使用了控制項。
2) 我們要除了掌握拖曳拉給控制項一個定位和大小之後,我們還要掌握對控制項的屬性進行設置,以及控制項的事件進行程式設計。特別要了解每個事件觸發的時機。
3) 要學會控制項的資料綁定,尤其是和資料庫的綁定和刷新機制。
4) 要學習如何對控制項輸入值進行合法性檢查,確保輸入資料的有效性。
5) 要學習對控制項的唯讀、可編輯、顯示/不顯示的設定。
6) 要學會系統控制項的複用,尤其是下拉框控制項。一般的下拉框很難滿足顯示漢字回傳代碼的功能,尤其是在顯示框可以輸入代碼和漢字可以將滿足條件的結果顯示出來,供使用者選擇。例如,可以設計一個行政區劃的下拉框,在框中輸入110000或北京則回傳110000。而普通的下拉框只能在3000多個行政區劃中,依照行政區劃代碼次序來選擇了。
7) 程式設計師可以嘗試自行設計控制項。
8) 掌握對於表格控制項的資料綁定方法。尤其是大數據結果集的處理方法。
9) 掌握載入各種控制方法。
12、 類
類在程式設計之中廣泛運用,有些語言和程式都是類別的表現。對於程式設計師來說,一方面我們要學習物件導向的程式設計思想,另一方我們要學會定義類別和使用類別。類別的本質是物件導向的抽象形式。有關類別的內容很多例如封裝、繼承、多態等特性,但是程式設計師不要對類別的豐富的功能所迷惑,要學會最基本的東西:一個是定義、編寫、使用自己的類別,另一個是學會引用使用系統的類別和其他的類別。
對類別我們要注意:
1) 定義一個類,最主要的是定義類的屬性和事件
2) 對類別的屬性賦值
3) 事件的編程
4) 類別的繼承
5) 類別的引用
6) 類別的調用
7) 特別注意類別中函數的入口參數和傳回值的設計。
13、 參數化
很多人都在談論參數化,認為參數化可以讓程式有更多的彈性,擴展性。但是很少人知道什麼是參數化,參數化的邊界是什麼?參數實現的方法是什麼?
參數化本質是指解決事物變化的方法。其重要的內容是:第一如何將事物抽象化為參數,第二,參數如何存放,第三,程式對參數的處理。
例如:開啟一個資料庫,為了適應資料庫的變化,我們就要把資料庫的使用者名稱和口令抽象化成參數。我們可以把使用者名稱和口令放在config檔之中,在程式中,當開啟資料庫時,我們要從config檔中取得使用者名稱和口令形成資料庫連線字串。透過這個連接串打開資料庫。
當資料庫的使用者名稱和密碼改變時,我們只要改變config檔中使用者名稱和密碼即可。
以上只是參數化最簡單的例子,其實參數化內容非常多,關鍵要看程式設計師的視野和水平。
一般的程式設計師只停留在函數參數中的參數化,其實,函數、資料結構、功能模組、軟體架構都能參數化的,而且參數存放形式也多種多樣,參數處理更是各人各異。有些參數還要考慮安全性。
簡單的參數化是基礎技能,但是複雜的參數化則是程式設計中的高階技能了。
很多複雜的演算法和架構大都是由以上基本技能組合而成的,程式設計師將基礎打好後,可以站這個基礎上去構架更複雜的演算法和寫出更優秀的程式。
程式設計的基本技能內容很多,每個部分都可以談出許多趣事和範例,每個部分都能獨立成章節。但是,在這裡我只能拋磚引玉,只是給程式設計師理一個想法和方法。其目的就是希望程式設計師重視基礎技能,重視實用技能、要把大量時間用在這些技能上,把基礎打好;就是希望程式設計師能改變只知道編程序,不問也不知道為何這樣編程的現狀。我希望程式設計師面對演算法時,頭腦首先想到的是一組基本技能,然後針對演算法具體實現選擇最合適基本技能,然後再去用這個技能去程式設計。這種方法可以提高程式設計師對理論重視程度,養成以理論指導編程的思路,改變自發性地編程為自覺編程,這樣我們程式設計師的程式設計水準才會有本質的提升。