在我們熟悉的OO語言中,可以通過private、protected、public等存取控制修飾符將資料和方法分為內部可見、子類可見、外部可見等不同存取層級。本文從一個較為特別的封裝相關例子出發,討論封裝、類型系統、契約式編程相關話題。我們先從例子開始:Code highlighting produced by Actipro CodeHighlighter
OOP三大特徵沒有抽象是因為抽象不是誰所特有。過程式(C語言)有過程抽象,函數式(Lisp)有函數抽象,邏輯式(Prolog)有邏輯抽象。從宏觀上,抽象的角度不同形成不同的編程範式。微觀上,抽象在程式設計中無處不在,C語言中的宏“#define N 10”是抽象;變數定義也是抽象。 說封裝、繼承和多態是OOP的三大特徵,是由於這幾類抽象是OOP在宏觀上的主要抽象方式,它們形成了OO範式。封裝體現的是資料抽象,繼承體現的是層級抽象,多態是多態抽象。
記得原來在.Net 1.X中編寫發送郵件的代碼是使用作業系統的CDO組件中的CDO.Message來來實現的,因為這個裡面可以實現SMTP伺服器認證等一序列的發送郵件的詳細功能,不過不管是什麼錯誤都會提示是CDO.Message對象無法訪問或其它的CDO.Message異常,而在.Net Framework 1.X的FCL(Framework Class
這是我在Agile Tour 2010成都站上做的一個技術報告,主要介紹了TDD的3大要素:測試為先、迭代增量和重構。報告著重探討了進行TDD開發所需要理解的幾個問題:1.TDD為什麼提倡先寫測試案例?2.TDD中測試案例的本質是什嗎?3.如何寫好單元測試用例?4.迭代漸進式開發與瀑布式開發相位元點是什嗎?5.迭代漸進式開發所產生的軟體分層結構與傳統的3層機構分層結構有何區別?6.什麼叫單元,單元與原子的區別是什嗎?
Agile領域的名人Vodde在多個國家呆過,而且有個中國老婆。最近他做了一個關於中國人普遍性職業特點的報告:Some people pay too much attention for improving their title, they are more interested in being a manager than being an professional.(更關注升職,而不是提升專業能力)Be kind to the people, willing to try new
boost::mutex is not re-entrant, a thread can only lock it once, otherwise it’s dead-locked. The following code snippet demonstrates it:#include "boost/thread/mutex.hpp"#include <iostream>boost::mutex mtx;void bar(){
原文:Specification by Example作者:Martin Flower [Martin Fowler這篇文章點出了TDD的核心理念:Specification by Example,即測試案例(Test Case)是一種通過例子(Example)來表達需求的規範(Specification)形式。]I was attending a workshop at XP/Agile Universe in 2002 when the phrase 'Specification