Re: 今天被問倒了...

看板OOAD作者 (godfat 真常)時間15年前 (2009/07/11 02:57), 編輯推噓1(104)
留言5則, 1人參與, 最新討論串9/13 (看更多)
亂入 :o ※ 引述《Schelfaniel (Schelfaniel)》之銘言: : 當然很多地方是用 Copy/Paste 硬寫的 @@ : 但這樣的程式,竟然也撐了 30 年了,也算很厲害了, : 碰過一堆需求變更調整的 ( 上線之後修改 ), : 也就是它是在程式一面運作,仍然一面修改的情形之下。 : 物件導向這方面最麻煩,很容易牽一髮而動全身, : 要改一個東西,要連帶改一堆東西,加上現代化的架構, : 有時還要改一堆 xml,讓那些寫 COBOL 的人,反而過來說, : 不就改一點點就好了,怎麼會這麼麻煩。 關於這一段,之前有個經驗,讓我不禁開始思考抽象化究竟該到什麼程度? 以往我理所當然是先找出相同的問題,然後一次解決,最後套用到每個地方。 意思是,絕對不會有地方是 copy & paste 出來。(部份例外先不討論...) 但是這樣卻碰到一個問題... 是我之前從來沒想過的。 終歸一句話就是,需求改變了。 但應付需求的改變,本來就是一個需要解決的問題,而不是禁止需求的改變。 本來是一樣的地方,現在需要變得不一樣了。結果開始牽一髮而動全身, non-programmer 的介入,一修改,結果一邊對了另一邊就爛了。 接著就開始譴責我怎麼寫得這麼沒彈性... orz 是說,如果當初是 copy & paste, 確實就可以讓他隨便改而不影響他處。 問題是我怎麼知道原本一樣的後來需要不一樣了? 現在要改不一樣,等於是增加例外,這跟架構有關,不能隨便亂調的。 當然一邊砍掉,另一邊 copy & paste 過來,這樣也是可以。 只是我實在不太能接受這樣亂搞 :s 目前還沒什麼好想法,可能還是要看其他人的使用習慣而配合... : 其實我覺得像 JVM 或是微軟 CLR,提供一堆讓程式師選擇語言, : 算是比較能夠符合個人喜好,又能夠團隊運作的模式, : 畢竟,程式設計師有時需要的不只是技術或管理, : 而是動力和熱誠,讓程式設計師本身處於自己舒適的環境之下開發, : 而不要綁手綁腳,限東限西,要你乾坤大挪移也不能用, : 降龍十八掌也不能用,這樣出去必定功力下降,士氣下滑嘛。 CLR 我不確定是什麼,像 JVM 這樣確實是有不少好處,但 .NET 的話, 例如 F#, 我就不覺得會是一個很好的方向,比較像是為了廣告, 募集其他領域的人加入 .NET, 最後投靠 C#, end of the story. 會這樣說是因為之前測試 C++/CLI, 我發現微軟新加進去的東西, 跟原本 C++ template 根本就難以配合。用了 template, 無法用 .NET lib, 反之用了 .NET lib, 難以使用 template. 兩者幾乎接近互斥,讓我試不下去,因為原本的東西都不能用.... 也過了很多年啦。或許有改善了也說不定? F# 也是差不多的情況。之前翻了一下書,發現如果需要呼叫 .NET, 一樣會陷入 OO 那套,想 functional programming? 似乎搭不太起來。 那我想用 .NET, 何不用比較順的 C#? 我想用 functional programming, 為什麼不選 OCaml, Haskell, 或是 Clojure, Scala? 另一方面,程式跟程式間的溝通,必然會需要如此高的相依性嗎? 為什麼不能用某種協定(protocol)?Unix philosophy: 1. Write programs that do one thing and do it well. 2. Write programs to work together. 3. Write programs to handle text streams, because that is a universal interface. 當然有些時候是不能選擇的。只是我覺得,要盡量把想寫出巨獸程式的 慾望丟掉。嚮往巨獸也不是說有什麼不好,只是我覺得現在巨獸已經太多了... 想多呼吸一點新鮮空氣。 == 本篇跟 OO 沒什麼關係 @@ -- By Gamers, For Gamers - from the past Interplay -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 220.135.28.18

07/12 16:46, , 1F
推牽一髮動全身... Orz 原先設計好的interface都得
07/12 16:46, 1F

07/12 16:47, , 2F
大改(應該說部份流程需要特製)
07/12 16:47, 2F

07/12 16:48, , 3F
我後來做法是讓invoked method至少有個Object參數
07/12 16:48, 3F

07/12 16:49, , 4F
那麼在需要特製的block就可以傳入自定義的實體進行
07/12 16:49, 4F

07/12 16:49, , 5F
額外的操作,在原先的method只有轉接的作用
07/12 16:49, 5F
文章代碼(AID): #1ALuyPnQ (OOAD)
討論串 (同標題文章)
本文引述了以下文章的的內容:
以下文章回應了本文
完整討論串 (本文為第 9 之 13 篇):
4
12
文章代碼(AID): #1ALuyPnQ (OOAD)