作者flyfoxy (飛狐)
看板Soft_Job
標題Re: [閒聊] OOP小評
時間Mon Mar 2 17:40:59 2015
※ 引述《csfgsj (Lazy bone)》之銘言:
: ※ 引述《flyfoxy (飛狐)》之銘言:
: : 或者說過多的繼承會導致class十分龐大臃腫
: : 或者說資料和程序難以分開 導致十分難trace
: : 我也曾經在如何抽離介面和演算法之間徬徨
: 這句話非常有意思,可以詳細說明嗎?
就是當你接手一隻程式 他有UI也有演算法
演算法是繪圖的演算法 每次視窗重繪就要呼叫它
但很多時機都有可能導致視窗重繪 而且要繪的東西都不相同
他全部給你寫在OnDraw()裡面
演算法也沒有封裝過
你看到的就是一堆透過描點來畫線 畫圓 畫多邊形的一連串指令
全部都用if else 分割這些畫型狀的描點指令
然後A處要畫圓,B處也要,C處也要
到處都是類似的程式碼 參數全部都是pointer丟來丟去
有的會變更值回傳 有的不會 有的根本沒用到
我一開始不知道重構這件事情
光看懂這幾串「描點」指令是畫圓還是畫方就快暈了
然後要再去trace什麼時機要畫圓還是畫方
你說你不重構不把界面跟演算法拆開就直接改
過了一段日子 根本不會記得那是啥鬼XD
又要重新看一遍
: : 甚至其實是coding習慣的問題,因為一開始架構就沒有寫清楚
: : 或是時間不夠流程和資料就混成一堆,程式能動就好,
: 沒有一個程式是一開始就可以把所有的事件都想清楚的
: 包括架構
: 修修改改一定會碰到
: : 或是因為後續的需求變更使得class間的耦合性變得更複雜
: : 所以當你程式越寫越大,你就越早面臨「重構」這件事情
: : 上述的問題透過「重構」其實都可以得到解決,
: 重構感覺就是在鬧革命
: 一個一天到晚在鬧革命的地方,您說會繁榮發展嗎?n
重構也是有範圍力度的分別的
他並不是「打掉重刻」這種革命
也沒有人一天到晚都在重構
<Refactoring>這本書
他有建議你適合重構的時機
你可以自行決定需不需要重構
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 219.87.85.162
※ 文章網址: https://www.ptt.cc/bbs/Soft_Job/M.1425289262.A.3F1.html
推 CGary: 會「一天到晚」重構 首先該把架構師砍死 不是抓寫code的罵 03/02 17:44
推 a47135: 很多時候你會發現沒有所謂的專職"架構師"可以婊XD 03/02 19:02
推 HSUFIT: 他根本把立法院修改法律當成每天在革命了阿XDDD 03/02 20:53
→ csfgsj: 聽起來像GUI,而不是UI 03/02 21:37