作者TonyQ (沉默是金)
看板java
标题[讨论] Optional operation 的使用时机?
时间Sun Mar 8 09:04:06 2009
偏离原题所以另辟讨论串.
想讨论一下 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
1F:→ TonyQ:当然采用h45 说的分离介面有时也是更佳解,只是需要判断介面. 03/08 09:05
2F:推 H45:你的 1. 2. 3. 的 2 我看不太懂,能否举个实例帮助了解呢 :) 03/08 13:08
3F:推 qrtt1:使用时机:1.当你是设计者时。2.当你有那个灵感时 @@ 03/08 13:28
4F:→ TonyQ:复合模式的状况下应该会有2的影子 , 实例现在一时想不起来.. 03/08 13:49