|
多少次有人問我如何構(gòu)建一個比較好的類階層次,如何使用面向?qū)ο筮M行設計,或者問為什么我看了那么多面向?qū)ο蠛驮O計模式的書一到使用的時候卻總是寫出面向過程的代碼。每當我碰到這些問題的時候我總是回答,其實我也不知道。真的,其實我也不知道。
雖然我總是張口閉口面向?qū)ο螅偸强吹揭粋€問題后就談這個有點XXX模式的影子,但大部分時候碰到一個問題我還是一片空白,不知道如何去分析設計和實現(xiàn)出好的面向?qū)ο蟆K裕抑幌胝務勎沂侨绾螌嵺`面向?qū)ο蟮模@對我自己有用但不一定對你有用。嗯,回到正題。
回顧編程方法的發(fā)展史,我想不外乎兩個字:抽象。
從最早的匯編語言中使用的子例程到結(jié)構(gòu)化編程,然后到面向?qū)ο蟆⒚嫦蚪M件以及面向服務。我覺得都是不斷地提升抽象的層次。所以編程方法沒有好壞,只有適合不適合。在匯編時代問題規(guī)模都很小,所以我們需要的抽象能力不需要太強。而現(xiàn)代的軟件項目,問題的規(guī)模非常龐大,需要考慮的事情非常多(雖然純粹的技術(shù)含量不一定有匯編時代的高),我們就必須使用抽象層次更高的方法來匹配我們的問題規(guī)模。
面向?qū)ο缶幊谭椒ǖ某霈F(xiàn)也不外乎如此,所以我們在使用面向?qū)ο蠓椒ㄩ_發(fā)的時候一個目的就是要提升抽象層次(比如現(xiàn)在由有人提出面向?qū)ο笠呀?jīng)不足以匹配并行軟計算的抽象層次,所以不再教授面向?qū)ο螅D(zhuǎn)而教授函數(shù)編程)。
而我覺得提升抽象層次的一個好方法就是用代碼與人交談,用代碼來表達你的思想,在代碼中形成一個個“概念”,或者說代碼就是用來傳遞知識的。我將概念二字加上引號并加粗是有特別強調(diào)的意思,這個在后文我會談談什么是這里所說的概念。我不想在表面文字上談論太多,我們來實踐吧。
注意,本文代碼僅僅為了說明一些問題或現(xiàn)象,并不考慮業(yè)務上的合理性,讀者可以自行分辨然后拿自己的業(yè)務代碼進行思考。
方法的參數(shù)
不知道你寫過或見過下面的代碼沒有:
bool IsValid(string userName, string password, string email, int status);
it知識庫:面向?qū)ο髮嵺`之路:提升抽象層次,轉(zhuǎn)載需保留來源!
鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯(lián)系我們修改或刪除,多謝。