※ 引述《pikemon.bbs@bbs.sayya.org (皮卡)》之銘言:
> ※ 引述《Email.bbs@bbs.csie.ncku.edu.tw (被踩在腳下的副工程師)》之銘言:
> > ※ 引述《GP03.bbs@aeug.twbbs.org (Gundam Pilot)》之銘言:
> > OO 非OO 我都有寫過..
> > OO 的架構很重要..一開始架構錯誤,
> > 以後可能大樓就需要重蓋過了,非常的勞累,
> > 新人要進入你所架構的 OO 世界也很難入門,
> > 光是瞭解你整個架構,就可以花掉你很多時間了,
> > 要能瞭解你的架構後,才有能力玩你的什麼繼承不繼承的咚咚..
> > 光背這些 Class 有什麼用途就會累死你..
> > 就像 Java 一點也不難..對一個已經懂 C/C++的程式設計師來說..
> > 但為什麼 C/C++ 程式設計師無法立即就把 Java用的非常順手??
> > 因為 Java 的 Class 架構太大了...還要花時間去瞭解相對的關係..
> 錯哩,java很容易,為啥要把Java跟Class綁在一起呢?
> 自己需要那些class再去看那方面的文件就好。
> 為什麼要看那麼多class呢?
不是把Java跟Class綁在一起,而是你的Class瞭解越多,越好上手,
有時候人家早就把這個功能寫好了,結果你又找不出怎麼使用,
一直在嫌很爛,突然間才找到是綁在另一個類別的 Class裡面,
這時候才會讓你昏倒...以前花那麼久的時間找不到如何使用,
一度還想自己寫,結果才發現早就有了...這就是你對全體Class架構
不熟的原因,你既然要用這套程式語言,當然懂越多越好,
就像炒菜,只有鹽、味精當然也可以烹調,但有醬油,要烹調
一定更順手,事先你不知道有這個類別存在,沒下功夫去研讀過,
以後寫程式根本就是礙手礙腳的。
> > 人家就又要離職不幹了..你又要請一個新人時,又要重新教導你的 OO 架構.
> > 一學又是一個月多..啥事都不用幹..當然你沒寫過什麼 OO..那就另當別論,
> > 因為人家剛進你的公司時,可能早就學過 MFC、Java...等等的OO繼承關係了...
> > 所以不會那麼累..而你們公司真的是純 OO..是自己發展的Class 金字塔,
> > 我相信這種學習曲線真的會非常長,你自己設計的你沒有困難,但別人要用你的
> > Class 就要學很久你當時定義的每個 Class 在幹嘛用的..
> 何不說,要知道你每個function的定義是幹麻更學不完呢?
> 一家公司如果有300個class
> 那換成純function可能就超過三十萬了XD
不可能那麼多...即使有那麼多,就像你講的..要用的時候才去查就好了..
那個早就分類分好了,你有查過 MS SDK 就知道了..他就像這樣,是一種
樹狀圖,你先找出你要的分類內的小分類就夠了,例如字串模組裡面的複製功能。
其實 Class的概念就是從這套體系演變來的,以前叫做模組,現在把全部的函數
包起來放在一個 Class 裡面讓你使用(當然Class沒這麼粗糙,他的理念更多)。
function 才不需要學,是要用的時候才去查就好,Class 是需要稍微記憶過,
要頭腦很清楚,才不會無從下手。
> > 非OO能有多精簡??一點也不精簡,但也沒你想像中得那麼費力,因為對 C領域來講,
> > 各式各樣的函數前人就幫我們寫好了,我們只是呼叫他們的函數來使用,甚至
> > 你所謂的 OO,實際上也是在乎叫非 OO 的 SDK 函數..所以你在寫 OO時,
> > 還是一樣要去瞭解這些函數,不然有一天要你寫一個非制式的東西,困難一點的
> > 你就可以等死了..根本就不知道怎樣去完成客人的要求,我舉一個最簡單的例子,
> > Edit(Java的話就是 TextField物件) 這個物件你用到不要用了..
> 各式各樣的函數?!那為啥你又說java的class多?
> 還有! 寫OO的時候不需要知道底層在幹麻的,這才是OO的王道!
> 要show一張圖片何必要學一堆影像壓縮呢?
> 要做低階的工作別以為OO作不到唷!!
> 你說函數多,函數強?請問一下用standard library你寫一個heap要寫多久?
> 我用class只要3秒吧XD
> 只需要去學自己需要的東西就好
> > 但他的字串是靠左邊對齊的,要是突然要你把他改成靠右對齊,你有能力修改嗎???
> > 可能你也是有能力修改,但對本版 70%(絕對更高)的程式設計師來說..我敢說..
> > 應該是沒有能力根本不知道如何去修改。
> 直接繼承下來override一下就KO了。一點都不難!
> 就說OO要先懂再來談吧!
對 OO 的理念來講,真的就是你講這一句話而已..阿就是override來以嘛~~
我不用去瞭解整個架構啦~~但我們還是回到現實面,用同樣的例子,請把
Edit物件的字串由原來的向左靠把他改成靠右這樣就好,真的不難啦..
大概程式碼兩三行而已..我就舉這樣的小例子就好,你有「能力」去把這個
功能改寫嗎?? 你沒實際去寫過,看到就說不難,可能會吃鱉。但你有曾經嘗試
靠自己去解決這個問題了,而不是靠人家給你這個題目的答案,那我就說你真的
很強。OO他的理念就是要把你想要的功能再覆寫過就好,書上都寫得的清楚,讓
你也覺得似乎真的就是真的這麼容易,但到了現實面,你有去遇過這些問題後,
你才知道好像有一點點被騙的感覺(書上寫的這個理念沒騙你喔~他真的就是這麼
簡單,真的也是只有就要這樣做而已,沒啥..就是 override),但寫程式要的是
能真正解決問題,而不是只會出一張嘴,或只知道這套理論就好,現實面這個題
目看你要改寫這個功能要花多久時間??(不是靠別人給你答案,是自己寫出來才
算數),反正這題題目真正 coding 的時間只需五分鐘而已(還嫌太長),但你有
能力去解出這題,我想可能要花一天以上甚至更久。
以下我就不想繼續講了,OO的物件包裝是兩面刀的東西,他確實有簡化的功效,
在你看來寫程式就是堆積木而已,沒啥..OO 的真實面是他會讓你的功力減弱,
你沒有能力去改善你所要的功能,人家都把程式碼包裝起來了,你根本就不知道
原理,要你 override class 裡面一個"方法" 談何容易??? 書上理論歸理論,
都寫的好像真的很容易容易,但事實上是如此嗎?上面那一段習題你解出來了嗎??
我是比較現實的人,能解決問題就好,管你是不是用 OO 還是用非 OO 在寫程式,
這個要是傳統的程式,這題我相信你很快就解出來了,因為他的程式碼都是透明的,
你馬上就找到他靠左的那一段程式碼,馬上可以改寫,但程式碼都是透明的,也就是
讓OO派唾棄的地方,這個是見仁見智,你的系統不需修修改改,當然沒啥問題,
系統一天到晚要改,還是透明一點比較好。
我是實戰派的,不是那種理論派的程式設計師,能解決問題且"不需再去保養程式"
就是我的理念,我才不管什麼 OO非OO..人家要我用什麼我就用什麼寫,我都有能力
去寫就好了。
--
oRigiN: 成大資工BBS站 (140.116.247.7)
@bbs.csie.ncku.edu.tw FrOm:59-104-61-66.adsl.dynamic.seed.net.tw