[討論] Optional operation 的使用時機?
偏離原題所以另闢討論串.
想討論一下 optional operation 的狀況 ,
基本上我討厭這種設計 , 所以我很少用 .
(我個人認為這已經是過度設計了.)
因為做了某個操作後 ,
會可能會出現夢都夢不到的不支援例外 ,
要去考慮這可能性這實在是太麻煩了.
────────────────────────────────
我大概就思考上歸納一下會用 optional operation 的幾個主要環境因素 ,
1.這個功能是非常普遍的 (至少佔子類別的大多數類別會用到)
-相對的碰上失敗的狀況不多 ,
可以純粹當成 RuntimeException/Error 來看.
2.大多數時候會以超類別的面貌進行操作時. (ex. state/strategy pattern)
-有時候雖然功能可能普遍性不那麼高 ,
但是因為要以超類別進行操作 , 會將method 上提到超類別 ,
並出現部份的 optional operation 狀況,
有點像是 template method 的 hook method. (這不是很好的例子 :p)
3.純粹是覺得子類別有可能會用上就寫了...- -+ (這種狀況是最糟的)
────────────────────────────────
因為我其實是不喜歡 optional operation 的 ,
所以順便討論一下對所謂 "過度設計" 的看法...
隨著知道各種設計 pattern 的時間越來越長 ,
現在 pattern 大多用來作為溝通跟瞭解別人寫的程式的知識 ,
而越來越少自己在程式中以實做 pattern 作為第一考量,
至少是比剛學 pattern時少. (我相信隨著時間過去還會更少...:p)
對於設計方案的練習是很好 , 不過我越來越認為 pattern 就像遞迴一樣,
你一定會發現 "就是這個!!!這程式用這個真是天作之合的!!!" 的時候,
到那時候再用就好 , 其他時候就本著自己的判斷來寫吧...
像我有一陣子濫用 state , 後來又有一陣子拼命用 singleton ,
後來都吃到苦頭 , 想想自己都覺得很蠢.orz
設計方面的議題很難論斷 , 不過透過經驗的分享與交流應該會有一點幫助 .
不過有幾個 pattern 算是神龍見首不見尾 , 很難知道自己有沒有掌握...
像 MVC 這個 pattern 雖然概念上很清楚 ,
但是實做上不太容易區分 m-v-c 三個部份.
常常聽到設計師(包括我也曾經這樣)會說自己用了 MVC ,
但是卻無法對資料、顯示、邏輯這三個區塊 ,
在實做中的引用作進一步的說明 ,
於是最後的話就是 "我程式有用 MVC 概念(用在哪?) 嗯...(開始想) "
主要想說的是大部分狀況下 , pattern 應該是由最後程式的輪廓所描述出來 ,
而不是根據設計師心中的信念所描述 ...
前者是在各種複雜的腦力激盪出來後的事實 ,
後者只是設計師無謂的偏執而已......
--
What do you want to have ? / What do you have?
從書本中,你可以發現我的各種興趣。
從CD中,你可以瞭解我所喜歡的偶像明星。
或許從文字你很難以瞭解一個人,但從物品可以。
My PPolis , My past. http://ppolis.tw/user/Tony
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 221.169.78.140
→
03/08 09:05, , 1F
03/08 09:05, 1F
推
03/08 13:08, , 2F
03/08 13:08, 2F
推
03/08 13:28, , 3F
03/08 13:28, 3F
→
03/08 13:49, , 4F
03/08 13:49, 4F
討論串 (同標題文章)
以下文章回應了本文 (最舊先):
完整討論串 (本文為第 1 之 7 篇):