更多來自:http://imcc.blogbus.com
? 把程序裝進箱子:用函數封裝程序功能
在完成豪華的工資統計程序之后,我們信心倍增,開始向C++世界的更深遠處探索。
現在,可以使用各種數據類型和程序流程控制結構來編寫完整的程序了。但是,隨著要處理的問題越來越復雜,程序的代碼也越來越復雜,主函數也越來越長了。這就像我們將所有東西都堆放到一個倉庫中,隨著東西越來越多,倉庫慢慢就被各種東西堆滿了,顯得雜亂無章,管理起來非常困難。面對一個雜亂無章的倉庫,聰明的倉庫管理員提供了一個很好的管理辦法:將東西分門別類地裝進箱子,然后有序地堆放各個箱子。
這個好方法也可以用到程序設計中,把程序裝進箱子,讓整個程序結構清晰。
5.1 函數就是一個大箱子
當要處理的問題越來越復雜,程序越來越龐大的時候,如果把這些程序代碼都放到主函數中,將使得整個主函數異常臃腫,這樣會給程序的維護帶來麻煩。同時,要讓一個主函數來完成所有的事情,幾乎是一個不可能完成的任務。在這種情況下,可以根據“分而治之”的原則,按照功能的不同將大的程序進行模塊劃分,具有相同功能的劃分到同一個模塊中,然后分別處理各個模塊。函數,則成為模塊劃分的基本單位,是對一個小型問題處理過程的一種抽象。這就像管理一個倉庫,總是將同類的東西放到同一個箱子中,然后通過管理這些箱子來管理整個倉庫。在具體的開發實踐中,我們先將相對獨立的、經常使用的功能抽象為函數,然后通過這些函數的組合來完成一個比較大的功能。舉一個簡單的例子:看書看得肚子餓了,我們要泡方便面吃。這其實是一個很復雜的過程,因為這一過程中我們先要洗鍋,然后燒水,水燒開后再泡面,吃完面后還要洗碗。如果把整個過程描述在主函數中,那么主函數會非常復雜,結構混亂。這時就可以使用函數來封裝整個過程中的一些小步驟,讓整個主函數簡化為對這些函數的調用,如圖5-1所示。
圖5-1 將程序封裝到箱子,分而治之