現在絕大部分搞開發的都用的是物件導向語言來開發軟體系統。是不是用物件導向開發語言做出的產品就一定是物件導向的軟體系統?
我接觸和帶過很多的程式設計師,有剛畢業沒兩年的,也有畢業了
六、七年的老程式設計師。他們中大部分都是很聰明、反應也很快。但是我很困惑的是:他們可以很快很好的完成你安排下去的工作。但同時在review他們的**時,時常發現他們的**並沒有真正的體現物件導向。雖然他們用的是完全物件導向的開發語言。
當我向他們提出這個問題時。有人會問我:我覺得我這是物件導向實現啊。你看看這個類、那個類、還有這個介面。
而我問道物件導向軟體中物件的基本特性是什麼時。他們會毫不猶豫的告訴我一些概念:封裝、抽象、行為。這些都沒有錯,但是我認為要分析和設計好物件導向軟體,要時刻牢記:改變的簡單性和本地化是物件導向系統的重要特性。
如果在開發時,面對問題首先想的是資料怎麼存放和使用,那麼你已經開始和物件導向說bye-bye了。我見過很多的**,乍看之下,**中有各種類和各種介面。然而當我深入**是,發現的最為嚴重的問題恰好就是:物件的資料和行為已經產生了分離。既然產生了分離,那麼所謂的封裝自然就不再存在。
不要忙於開始實現,在接到乙個需求時,首先要在類似系統中尋找有用的物件。其次請再次將要解決需求中面臨的概念盡量擬人化。將它們想象為有血有肉的人或者動物。思考他們都擁有哪些知識(資料)和能力(行為)?他們在這個社會(系統)中都扮演著什麼角色?他們都會和誰打交道?他們共同協作是為了什麼?他們自己的關係是什麼?是淡水之交(關聯)還是生死與共(聚合)?
當你在面對任何乙個需求時,你都可以類似上面說的那樣分析和思考時。恭喜你,你已經進入了物件導向分析設計的天地。
空指標真的是0麼?
我們平常寫程式時習慣使用null或者0作為空指標,而且已經是習以為常了。今天在處理乙個pointer to member指標時發現返回值為0下意識的以為返回的是個空指標,但是發現確進入了下面的if語句。然後研究了下編譯出來的 發現空指標值被換成了0xffffffff,因為pointer to mem...
未來真的是光明的麼
以前的我總是渾渾噩噩的生活,所有作為乙個女孩子不該幹的事情我基本上都嘗試過了,我承認我不是乙個好女孩。我不想受是任何的束縛,我喜歡自由,喜歡叛逆的感覺,可是我不能這個樣子過一輩子。我不想碌碌無為的過完我的一生,人活再世界上總要做點什麼,所以在錯學將近一年以後我又重新走進了課堂,可是那不在是以前的課堂...
你是真的太累了麼?
我太累了 我有太多還沒有開始計畫就流產的專案,都是因為這句話。這是乙個能夠讓我的任何乙個計畫泡湯的藉口。就是這麼簡單的理由,但是,僅僅因為乙個藉口是合理的,並不意味著它是值得的。因為我總能想象即便我感覺自己休息得足夠,並且充滿能量,我太累了 依然可以成為我的藉口來讓我放棄任何乙個有有意義的事情,現在...