java 板


LINE

在写一些Util的时候 在想到底是用enum好还是不要好 一般Util传入参数 值可能是限定某些值 一种做法是宣告一些final static String ..... 但是可能问题是 使用Util的人 不传你这宣告好的参数 他传自订String "xxxx" 所以你有可能会收到例外的值 另一种做法用enum 但是我觉得enum也有问题 如果使用者参数传递 ENUM.valueOf("xxx") 一样会有例外值 并且会抛出Exception 变成使用Util的人必须自己处理Exception 第三种变通的做法 就是仍然宣告ENUM 但是参数宣告仍为基本型态 但是ENUM用在Util里面检查用 我想了想 是哪种设计方法好呢? 以下附上范例讨论的Util 和可能情况code 可能呼叫情况: public static void main(String a[]) { String url = "http://www.asiafm.com.tw/"; //call changeProtocol(String url, String prot) System.out.println( URLUtil.changeProtocol(url,"http") ); System.out.println( URLUtil.changeProtocol(url,PROTOCOL.http.toString()) ); System.out.println( URLUtil.changeProtocol(url,"httpxx") );//参数值不在遇期内 //call changeProtocol(String url, PROTOCOL prot) System.out.println( URLUtil.changeProtocol(url,PROTOCOL.http) ); System.out.println( URLUtil.changeProtocol(url,PROTOCOL.valueOf("httpxx")) ); //参数值不在遇期内 , 会有IllegalArgumentException //参数值不在遇期内 ,必须自己处理IllegalArgumentException try{ System.out.println( URLUtil.changeProtocol(url,PROTOCOL.valueOf("httpxx")) ); }catch(IllegalArgumentException e){} 范例Util: enum PROTOCOL {http,https,ftp,ftps} public class URLUtil { /* * ex1: * String url = "http://www.asiafm.com.tw/"; * URLUtil.changeProtocol(url,"http") */ public static String changeProtocol(String url, String prot) { //valid url if (ValueUtil.isStringEmpty(url)) { return ""; } //valid protocol try{ PROTOCOL.valueOf(prot); }catch(IllegalArgumentException e){ return url; } return prot + url.substring(url.indexOf("://"), url.length()); } public static String changeProtocol(String url, PROTOCOL prot) { //valid url if (ValueUtil.isStringEmpty(url)) { return ""; } return prot + url.substring(url.indexOf("://"), url.length()); } } --



※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 60.250.192.34
1F:→ KevinGet:我的希望是 一个Util的设计应该是 能处理例外状况 03/03 15:55
2F:→ tkcn:为什麽要用 valueOf 而不是直接 PROTOCOL.http ? 03/03 17:05
3F:→ KevinGet:MVC架构前端传进来的是String 这段有可能是其他PG撰写 03/03 17:52
4F:推 slalala:理论上 其他PG应该也可使用 PROTOCOL.http 才是 03/04 02:14
5F:→ adrianshum:你的lib提供concrete interf 比去想MVC怎样传重要多了. 03/04 10:50
6F:→ sbrhsieh:你没有办法阻止程式员拿石头砸自己的脚。 03/04 20:33







like.gif 您可能会有兴趣的文章
icon.png[问题/行为] 猫晚上进房间会不会有憋尿问题
icon.pngRe: [闲聊] 选了错误的女孩成为魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一张
icon.png[心得] EMS高领长版毛衣.墨小楼MC1002
icon.png[分享] 丹龙隔热纸GE55+33+22
icon.png[问题] 清洗洗衣机
icon.png[寻物] 窗台下的空间
icon.png[闲聊] 双极の女神1 木魔爵
icon.png[售车] 新竹 1997 march 1297cc 白色 四门
icon.png[讨论] 能从照片感受到摄影者心情吗
icon.png[狂贺] 贺贺贺贺 贺!岛村卯月!总选举NO.1
icon.png[难过] 羡慕白皮肤的女生
icon.png阅读文章
icon.png[黑特]
icon.png[问题] SBK S1安装於安全帽位置
icon.png[分享] 旧woo100绝版开箱!!
icon.pngRe: [无言] 关於小包卫生纸
icon.png[开箱] E5-2683V3 RX480Strix 快睿C1 简单测试
icon.png[心得] 苍の海贼龙 地狱 执行者16PT
icon.png[售车] 1999年Virage iO 1.8EXi
icon.png[心得] 挑战33 LV10 狮子座pt solo
icon.png[闲聊] 手把手教你不被桶之新手主购教学
icon.png[分享] Civic Type R 量产版官方照无预警流出
icon.png[售车] Golf 4 2.0 银色 自排
icon.png[出售] Graco提篮汽座(有底座)2000元诚可议
icon.png[问题] 请问补牙材质掉了还能再补吗?(台中半年内
icon.png[问题] 44th 单曲 生写竟然都给重复的啊啊!
icon.png[心得] 华南红卡/icash 核卡
icon.png[问题] 拔牙矫正这样正常吗
icon.png[赠送] 老莫高业 初业 102年版
icon.png[情报] 三大行动支付 本季掀战火
icon.png[宝宝] 博客来Amos水蜡笔5/1特价五折
icon.pngRe: [心得] 新鲜人一些面试分享
icon.png[心得] 苍の海贼龙 地狱 麒麟25PT
icon.pngRe: [闲聊] (君の名は。雷慎入) 君名二创漫画翻译
icon.pngRe: [闲聊] OGN中场影片:失踪人口局 (英文字幕)
icon.png[问题] 台湾大哥大4G讯号差
icon.png[出售] [全国]全新千寻侘草LED灯, 水草

请输入看板名称,例如:BabyMother站内搜寻

TOP