看板 Soft_Job 關於我們 聯絡資訊
※ 引述《jetswayss (小犬)》之銘言: : 1. : OO是design的問題 怎麼去設計OO program : 基本上OO就什麼也不是,程式怎麼寫都可以 : 但為什麼我們需要OO呢? : 因為沒有人有辦法管理各式各樣的錯綜複雜的code : " 所以有人想要用SOP,也就是框架來處理管理軟體 雖然它有時候可以省一些事,只是框架必定受限 好的框架設計也就算了,碰到爛的框架可以讓您天天罵髒話 : 我們希望藉由帶入物件的理念進入軟體世界 稱之為「物件」其實只是一種商業宣傳手段 從定性的角度來看,這種定位既錯誤也無價值 : " : 物件 會有自己的屬性 外加上 我們給予的限制 框架的特徵出現了 : 會使得程式更好管控 擴充 維護... 這部分真的是Bull shit,做過案子就知道 : 屬性指的是 介面 => 掌控 物件行為規範 框架的特徵 : 類別、繼承、多載、 : 多型、介面、委派、抽像 : " : 這些都算是OO的基礎 這些都是框架實作的手段、語法 : 為什麼要繼承 這是從一個硬框架開始建構程式的手段 : 3. : 設計模式的部分 這是一堆框架的集合,想法也要依據框架的規範 : 基本上OO是需要一段時間去適應學習的 : 注重於 analysis 和 design (OOAD) : 這部分才是OO的精華與難處 這是框架適應:思維、作業方式自我閹割的過程 : 軟體的世界就只是一堆trade-off而已 : 這樣方便 這樣有利 就這樣做 : 所以在不同的特性的產品 往往使用不同的開發流程、設計方式、程式語言 : 千萬不要讓OO變成唯一方案 這是真的,除非有好處 要不然為何要自宮去練葵花寶典 : 要知道優弊 自己決定你的設計 神功重要還是雞雞重要,自己要想清楚 -- ※ 編輯: csfgsj (210.71.206.217), 08/13/2015 13:15:19
Deltaguita: 又是一篇廢文 08/13 13:18
leolarrel: 優! "物件導向"只是一個宗教術語,怎麼樣生出好維護高品 08/13 13:21
leolarrel: 質的code才是重點,如果有更好的設計方法,何必一定要OO? 08/13 13:23
leolarrel: 只要作出高品質的code,用函數編程也可以 08/13 13:24
hidog: 如果這麼簡單就有好的設計方法,那就不會有OO出現了zzz 08/13 13:34
hidog: 我們也不需要看design pattern了 對吧 XD 08/13 13:34
hidog: 為什麼會有MVC 會有物件導向 會出現framework 是不是應該 08/13 13:35
hidog: 回到需求面來思考? 08/13 13:35
hidog: 幾個人開發的程式跟幾百人開發的程式,方式絕對不同 08/13 13:36
hidog: 生命週期短跟生命週期長的專案,開發方式也會不同 08/13 13:36
hidog: 原作者只是要問如何學物件導向,針對這點來回應吧 不要扯遠 08/13 13:37
hidog: 自己學生時代直接寫個幾十萬行的應用程式 就自然體會 08/13 13:38
hidog: 很多事情了. 剩下的就是網路多看別人怎麼設計. 08/13 13:39
hidog: 物件導向本來就是個懂概念很簡單,寫得好需要長年練習的東西 08/13 13:39
leolarrel: 物件導向或許在10幾年前是個很好的解決方案吧.... 08/13 13:50
hidog: 直到現在也還是阿 不然幹嘛一堆公司面試要問你OO的概念 08/13 13:52
leolarrel: 現在進入平行化/大數據/IoT 的世紀,用OO開發是不是最好 08/13 13:56
leolarrel: 的解已經不一定囉 08/13 13:56
tomtang0406: 其實...面對 scale out 的 grid computing 和平性運 08/13 13:57
tomtang0406: 算,就會開始有 anti-oo 和 function orient 的議題 08/13 13:57
tomtang0406: 了,就更NoSQL和 反正規化設計一樣,本來就不是ㄧ藥 08/13 13:57
tomtang0406: 治百病,但看到有人這樣一面倒地反對,也只是另一個 08/13 13:57
tomtang0406: 不切實際的極端罷了 08/13 13:57
leolarrel: 無論如何,函數編程/mapreduce 概念已經興起了 08/13 13:58
leolarrel: 所以重點是,OO已經不是唯一解,打code不要定侷限某一種 08/13 14:00
hidog: 還是老話一句 看需求決定該怎麼做. 08/13 14:00
leolarrel: 生出你的同事也看的懂且容易維護的code才是最該思考的 08/13 14:00
leolarrel: 不然用了OO,結果變數名取個_001,_002這種的,只會.... 08/13 14:02
hidog: 很熟OO的人會採用這種命名嗎 別開玩笑了好嗎 = = 08/13 14:04
leolarrel: 請專注重點,舉命名的例子只是印證打code界裡還是有白痴 08/13 14:07
adks3489: 這種白痴就算不是用OO也不會變天才好嗎 08/13 14:13
shadow0326: 幫這篇護航那位大概不知道這位大濕覺得複製貼上最好 08/13 14:16
shadow0326: 遇到重複性高的代碼怎麼辦? 通通複製貼上就好 08/13 14:16
lovdkkkk: 推薦可以估狗一下, ORM 在彈性方面的問題 08/13 14:19
a47135: "只看"推文的話,說的其實有道理..... 08/13 14:19
lovdkkkk: ex 估狗 "ORM flexibility" 08/13 14:19
lovdkkkk: 像是, 痾..., "花花" 的這一篇有一些探討 08/13 14:20
lovdkkkk: 只是想說 OO 確實不 "總是" "只有" 好處 08/13 14:20
lovdkkkk: 有些狀況真的寧可不 OO 08/13 14:21
leolarrel: shadow0326大大,我知道這位大師何許人也,但我不算護航 08/13 14:21
leolarrel: 吧,我的重點是不該侷限某一種開發思維 08/13 14:21
hidog: 我同意OO有缺點阿 我有些時候寫純C是完全不考慮OO的 看場合 08/13 14:23
hidog: 但是這樣討論下去 似乎偏離了原作者想問的問題了XD 08/13 14:24
leolarrel: 我反而覺德原作者最先該想的就是這樣的"問題",而不是 08/13 14:27
leolarrel: 被前輩噹一噹就覺得"不能再逃避"了,侷限在某一種開發 08/13 14:28
leolarrel: 不去接觸新東西新技術新時代,才算是逃避拉 08/13 14:28
leolarrel: 尤其台灣的"資深前輩",大部分都是10幾年前的絕招現在 08/13 14:30
leolarrel: 還在用的"資深主管",一堆連git都沒聽過的老灰仔 08/13 14:31
hidog: 職場上是你去配合環境而不是環境來配合你 別害人了好嗎XD 08/13 14:33
leolarrel: 那種看到樓主沒有用OO就噹人的人,就像看到年輕人沒有把 08/13 14:33
leolarrel: changelog打在程式碼的最開頭就說"你寫程式怎麼都不紀 08/13 14:34
leolarrel: 錄一下改了啥??",拜託版本控制觀念已經快20年了 08/13 14:35
LaPass: leolarrel,樓主沒你想的這麼前衛,他支持的沒用OO,拿你 08/13 14:43
LaPass: 例子來講,就是,「changelog寫在程式開頭就好,用什麼git 08/13 14:44
LaPass: ,版本控管系統爛死了。」這樣的感覺。 08/13 14:44
leolarrel: 恩,請問你說的樓主是dnabossking嗎? 08/13 14:47
leolarrel: 當然如果他的程式用OO比沒用OO好,那自然該改,只要不要 08/13 14:48
LaPass: csfgsj,你看一下他之前發文就知道了。他應該很資深。 08/13 14:49
leolarrel: 是肯定用OO是可以產出好品質好維護的code即可 08/13 14:49
LaPass: 我記得 csfgsj 之前就貼了不少反對OO的文章,你可以看看他 08/13 14:50
LaPass: 的論點。 08/13 14:50
leolarrel: csfgsj這個神人我也挺...的,另,只要OO適合你的案子,沒 08/13 14:51
leolarrel: 有理由不用 08/13 14:52
leolarrel: 不要向那種老灰仔一樣什麼都是OO最好就行了 08/13 14:53
hidog: dnabossking只是個公司新人 你們要他去跟公司前輩吵要不要 08/13 14:53
hidog: OO 要不要怎樣 不覺得是在害人嗎....= = 08/13 14:53
hidog: 在討論工具合理性之前 在新公司就先黑掉了 何必這樣 08/13 14:54
LaPass: leolarrel遇到的老灰仔的類型跟我完全不一樣耶 XD 08/13 14:57
LaPass: 我遇到的,是完完全全把java當成c在寫,幾乎沒用class,把 08/13 14:58
leolarrel: 可能我比較衰,遇到的資深前輩80%都是食古不化,唉 08/13 14:58
LaPass: jsp當成php用。完全沒物件導向,用物件導向寫,還會把程式 08/13 14:58
LaPass: 碼拆出來到jsp中,說「我幫你把程式碼改的好一點」 08/13 14:59
leolarrel: LaPass說的那種人我也不能認同,該什麼情況就該用適合的 08/13 15:00
leolarrel: 思維與方法 08/13 15:01
LaPass: 結果,我在一段常常剪下貼上的一段程式碼中發現有sql注入 08/13 15:01
LaPass: 他問我該怎麼改,我回答不知道,因為那個段落我估計在整個 08/13 15:01
LaPass: 系統一兩萬頁jsp中,我估計有大概有幾百到幾千頁都有用到 08/13 15:02
LaPass: 然後又不能用搜尋取代,因為每個片段都有點點不一樣。 08/13 15:03
leolarrel: 因為他沒有OO結果那個sql inject bug散佈各處,對吧? 08/13 15:03
leolarrel: 還好我不寫網頁,不會遇到他,不然.... 08/13 15:03
LaPass: 有OO不代表不會遇到bug,但是許多狀況只要改一個地方,其 08/13 15:04
LaPass: 他用到同一片段程式碼的部份就都能一起修好了。 08/13 15:05
leolarrel: LaPass,沒錯 08/13 15:07
a47135: 改一個Bug能修一個禮拜為什麼要用一天,Code只有我知道去 08/13 16:07
a47135: 那些地方改,增加自己的不可替代性 08/13 16:07
a47135: 有些人大概就是這種想法吧 08/13 16:07
Ekmund: 好的OO確實方便管控和維護啊...怎會BS 08/13 17:47
dnabossking: 感謝各位大大寶貴的意見 08/13 21:01
locklose: 這篇還不錯 08/14 00:24
Wush978: OO和Functional不衝突,可以並存的不是嗎? 08/14 07:40
recorriendo: 嚴格的 functional programming 有 08/14 18:34
recorriendo: referential transparency 也就是沒有state 沒有side 08/14 18:35
recorriendo: effect 所以這和OO不相容 現在把兩者結合的程式 其實 08/14 18:36
recorriendo: 就是犧牲了finctional lang的referential transparen 08/14 18:36
recorriendo: cy特性 還使老話一句 任何東西都有tradeoff 08/14 18:37