作者qrtt1 (我要越级挑战)
看板java
标题Re: [问题] 新手请教关於多层方法整理程式架构的问题
时间Fri Nov 11 09:34:16 2011
※ 引述《gs1458 (hoi)》之铭言:
: 敝人只是个Java新手,
: 只会基本的单层Class建立方法来写简单的Java程式,
: 为了未来在写更复杂程式的时候能够让程式更清晰容易理解架构,
: 所以我希望能够达到如下面JavaScript这样的方式来去写程式,
: 或是说Java的撰写方式有什麽方法能够达成类似相同的目的,
: 我想达成的目的就如这个JavaScript原始码这样:
: http://pastie.org/2843061
: 上面的JavaScript做的是,
: 呼叫到codeboxy父类别中的 A城市 的 B学校 的 C班级 的 A学生,
: 那麽Java是否也可以如JavaScript这样去呼叫到无限个层级底下的方法,
: 请问高手们究竟是如何去办到让程式能够有规则有条理呢?
: 希望各位能指引我个方向去学习,谢谢。
传闻中有一种简易判断 bad smell 的方法。
就是当你在阅读一份 code 时,wtf 的频率。
频率高,则 bad smell 程度越严重。
这个例子看起来只是排版好看,看起来有『阶层』结构。
实际上用起来并不好用。
如果找一个学生要那麽长的 method chain 那肯定很想打人。
codeboxy.cityB.schoolB.classC.studentA();
若进一歩追问该怎麽改,才不会那麽 wtf ?
其实不是很肯定的!
因为不知道程式的『意图』实作的『目的』与潜在『变动区域』
是无法给予进一歩的评论的。
单纯看起来只是描述,
在城市之下有学校,学校之下有班级,班级里有学生。
乍看之下条理分明,但实际上可能相当难用。
就像家人突然心血来潮帮你的房间都整理好了,
但你就是很不爽,连一把剪刀都找不到放哪去了。
在没有一个总览性的结构时,
别的实作者可能不知道,要找一个学生,要由城市开始找起。
即使知道所有的结构,那也只是满足了静态资料关系的需要。
程式是动态的,我要找十个学生就要打十次?
codeboxy.cityB.schoolB.classC.studentA();
codeboxy.cityB.schoolB.classC.studentB();
codeboxy.cityB.schoolB.classC.studentC();
....
若你是使用这些物件的开发者,不每分每秒 wtf 才怪。
有些程式语言的入门书籍,特别是内建 OO 能力的语言。
作者会过份强调『物件』的概念,像是『继承』与『多形』,
但没带入 OO 系统的动态性,仅到封装资料就点到为止了。
造成一些还不熟悉物件导向程式开发的初学者,
误以为物件导向,就是将资料塞进类别内,
多形就是继承一下,再写个方法盖掉原来的功能。
『让我们不必实行复制这种愚蠢的行为』
那多出的那一堆不知所谓的『多形』要怎麽办呢?
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 211.72.110.37
1F:推 chrisho:wtf ... 11/11 12:24
2F:推 PsMonkey:不能偷骂脏话 XD 11/11 12:27
3F:→ MOONRAKER:太厉害了,竟然达到10 wps (wtf per second) 11/11 13:35
4F:推 gs1458:居然连单位都出来了是哪招XD 11/11 16:34
5F:→ MOONRAKER:10 wps太夸张了,20 wpm吧 XD 11/11 16:45
6F:推 gs1458:这样不是更快了吗XDDDD+ 11/11 18:28