java 板


LINE

※ 引述《Killercat (杀人猫™)》之铭言: : http://rayer.logdown.com/posts/32096-talk-about-service-design : 因为文很长,加上里面有无敌多的code : 所以我直接贴我logdown连结 : 绝对不是要推销自己blog喔(本来就没啥人气的 XD) : Logdown能用Markdown真的是太对我胃口了,唯一的缺憾大概就是没footnote : 所以前两天就决定慢慢把技术文章转过来 : 这篇将会在一个月之後的某个技术讨论会议拿出来聊,也请大家帮我看看 : 这技术上到底有什麽优缺点 : 可以直接执行的source code在整篇文章最下面 : 里面包含了自己动手玩。 : 这篇ptt post我想聊点其他东西,跟这个有点关系,可以算是这个技术的起头 : 我自己工程师生涯大概也有9年了,我算是比较坚持强型别以及型别安全的。 : 也许是因为我主攻的是C++,C++对这个的技术(Technique)是相当重视的, : 而JavaScript则是另外一种极端,Obj-C早期也是完全没型别安全概念 : Java整体来讲开发者的习惯是比较偏中庸,前面有人提到Spring,其实Spring : 严格讲起来也有很多型别问题,更不用说很多系统中充斥着父转子子转父 : AService serv = (AService)getSystemService(SERVICEA_CONTEXT); : 或者这种东西(坏习惯的人真的很多) : if(a instanceof AService) : .......; : 由於我个人是比较坚持型别安全,编译器能帮我们检查的时候我绝对不会执行期检查 : 在我还在写C++的时候,也因为template的使用跟资深前辈迭起冲突 : (template可以锁定型别,而且能做出一些如Policy Based Design的设计) : 在Java其实也常常会碰到自己写的Generic却发现别人根本看不懂的窘况 : (老实讲我自己私底下会认为,都职业级了,这种东西跟Design Pattern至少都要能看 : 懂吧?纯Technique的东西不能拿看不懂当借口) : 我以前也常常去涂改别人obj-c id传来传去的code,如果这个放在java的话,就是把 : Object传来传去,然後再转型 -- instanceof? 硬转?whatever... 这种code我想在 : 看这个板有点年纪的人应该看到都会想骂。 : @Override : public Object startService(Object parameter); : 这种code其实职业生涯碰过许多次,总会说阿parameter每个service都长得不一样啊 : (听说有种做法叫做生成模式?没考虑过用Factory or Builder?) : 全面改写很麻烦因为它已经是interface的一部分了啊 : (听说这interface就是嫌麻烦的人搞出来的飞机) : 反正这种东西该怎麽转型势教育训练该做的事情啊 : (这个真的听了很无言都不知道怎麽反驳的好 XD) : 後来才慢慢体会到,所有事情都自己做好,别人不用转型的话 : 整个code都会清爽很多。Framework层先做掉,让对方用的方便,自然就会这样用 : 这篇blog文章也请大家不吝指教一下,感谢 =P : 我相信应该很多人也对这方法跟特性很陌生,顺便分享一下 感觉起来,只是一种实作的 style 以我写过的东西,也偏好不需要强制转换 https://github.com/qrtt1/jplurk-oauth/wiki /* create oauth config */ PlurkOAuth auth = new PlurkOAuth( prop.getProperty("appkey"), prop.getProperty("appsecret"), prop.getProperty("token"), prop.getProperty("tokensecret")); auth.using(Timeline.class) .plurkAdd("Hello JPlurk-OAuth", Qualifier.SAYS); 俺倾向将这篇文章看为 api 设计风格。 再配合 fluent style 使用起来就更顺手: http://www.martinfowler.com/bliki/FluentInterface.html 例如,前一阵子包装的 mail builder 像这样: public class MailBuilderTest { @Test public void testMailBuilder() throws Exception { MailBuilder builder = new MailBuilder(); builder.from("[email protected]").to("[email protected]") .withTitle("hate you").hasContent("damn it"); builder.send(); Mailbox mailbox = Mailbox.get("[email protected]"); Message message = mailbox.get(0); assertEquals("[email protected]", message.getFrom()[0].toString()); assertEquals("hate you", message.getSubject()); assertEquals("damn it", message.getContent()); } } 无论是 api 实作或是 design 运用,俺比较秉持着 「爽到你,甘苦到我」的原则,把难搞的,容易写错的都封装起来 乱呼叫的、不满足的得有提示,使用流程、方式不能太难理解。 --



※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 114.43.119.13
1F:推 Killercat:是,这题目写Service设计是有点错误了 XD 07/20 11:51
2F:推 gmoz:推 07/20 12:37







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灯, 水草

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

TOP