天天看點

面向對象程式設計啟思錄——讀《OOD啟思錄》有感

    《OOD啟思錄》給我留下最深刻的三個印象是:首先,作者謙遜而委婉地建議面向對象成為為軟體開發的首選方法。其次,作者以嚴謹的研究方式詳細地介紹和讨論了關于面向對象程式設計的諸多細節性、關鍵性問題。同時,在附錄二中總結了8類C++記憶體洩漏問題及對應解決方案。這些對于面向對象程式設計都極具啟發性和指導性。

      注:閱讀《OOD啟思錄》是因為我看到了一篇論文,該論文指出GP相對于OO有極大的優越性,該文以《Object-Oriented Design Heuristics》來說明”面向對象技術本身技術十分難以把握“,作為面向對象的一個不足點。我沒有做深入研究,隻是記錄以下自己的想法。泛型程式設計如同生産汽車的現成技術,隻需我們根據需求适當設計即可,而不必對汽車進行全盤的設計,這顯然對于程式設計效率和程式設計品質的提高是巨大的,影響是不言而喻的。如果泛型程式設計像汽車生産技術一樣成熟和廣泛應用時,軟體生産也可以變得流水線化和自動化。我的疑問是,目前的生産活動是面向需求的,尤其是面向現實實體世界的,泛型程式設計是否提供了從現實需求到軟體生成的通用的抽象機制。如果僅僅是極少數的場景可以實作的話,以泛型程式設計為中心的軟體設計方法就無法适應千變萬化的現實需求。如果沒有,抽象現實需求到軟體生成的面向對象方法仍然是無法替代的。自己的認識是,面向對象不僅僅是是一種程式設計工具,而是可以作為一種認識論,這種認識論是嚴謹可推導的(讀過《Thinking in UML》的認識)。我們可以通過面向對象的認識方法,以業務需求為方向、将實體世界抽象為程式世界可以了解的資料和行為,并以UML等模型展示出來,然後程式世界中的設計行動才能展開,包括泛型程式設計在内的諸多進階設計技巧才能開始被應用。簡而言之,面向對象分析設計與原型法等建立的抽象模型是基礎(讀《OOD啟思錄》第一章的認識),在此之上,泛型程式設計才可以在較高的抽象層次上完成對程式的實作。