锁定老帖子 主题:编程中一个很常见的问题,有帮助的
精华帖 (1) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (17)
|
|
---|---|
作者 | 正文 |
发表时间:2008-12-11
最后修改:2008-12-13
直接 给出一段代码吧。各位发表下自己的看法和见解。(随便写的) 这是一个描述 用:A调用B B调用C C调用D 还是由A同一去调用B C D的问题。 给个具体的应用场景吧: 就拿简单的 根据 用户输入条件 --》拼装一句SQL==》 执行数据库查询 -》 返回结果。 上面的方法就对应以下的几个testx函数吧。 表达不行,如果不明白下面的伪代码请看 http://www.iteye.com/topic/290788?page=5 中我的回复, 第一个: public void test() throws E2,E3,E4,E5,E6{ test1(); } public void test1() throws E2,E3,E4,E5,E6{ test2(); } public void test2() throws E3,E4,E5,E6{ test3() } public void test3() throws E4,E5,E6{ test4() } public void test4() throws E5,E6{ test5() } public void test5() throws E6{ ..... } 第二个: public void test() throws E1{ test1(); test2(); test3(); test4(); test5(); } public void test1() throws E2{ ..... } public void test2() throws E3{ ..... } public void test3() throws E4{ ...... } public void test4() throws E5{ ..... } public void test5() throws E6{ ..... } 从段代码中反应了一个很严重的问题。可以从架构和程序实现上进行分析。 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2008-12-11
# public void test1() throws E2,E3,E4,E5,E6{
# test()2; # } ..................................相当严重。。。 有什么异常就丢什么异常。你这样写谁知道是什么意思? |
|
返回顶楼 | |
发表时间:2008-12-11
呵呵 解释下,如果你只是真看这两段代码,那么我我觉你是一个小菜了。
这是一个描述 用:A调用B B调用C C调用D 还是由A同一去调用B C D的问题。 |
|
返回顶楼 | |
发表时间:2008-12-11
异常部分 我只是想说明 如果是选择第一种的话 那么你的异常处理会怎么样?没有特别的意思。test()2; 这个是笔误,我不是在IDE环境中写的 这只是一段伪代码。
|
|
返回顶楼 | |
发表时间:2008-12-11
完全是一段伪代码,根本就没有确切的目标!要是试试定义一个errorMsg 传递一下?
|
|
返回顶楼 | |
发表时间:2008-12-11
具体问题具体分析,要考虑方法的可访问性等问题,如果真这么多方法的话,虽然第一种不可能,所有调用都在一个方法里可能性也不大,要考虑具体职责该归哪个方法,也要考虑这个方法是否有资格访问另一个方法,一些都为了封装性考虑,能不暴露的就不暴露
|
|
返回顶楼 | |
发表时间:2008-12-11
最后修改:2008-12-11
算了我也看不懂楼主要表达什么,就不挑战我自己的那可怜的iq了。。
|
|
返回顶楼 | |
发表时间:2008-12-11
最后修改:2008-12-11
有没有人从结构方面进行考虑的,如果在的代码中出现地第一种情况的时候你会怎么进行重构,进行重构的时候 你觉得你会碰见什么问题?第一种代码 的缺点是什么?第二种代码的优点是什么?实现难点是什么?
|
|
返回顶楼 | |
发表时间:2008-12-12
最后修改:2008-12-12
如果让我来选.
我会选第二种 由于没有逻辑可言的情况下 第二种的代码信息含量更接近5这个数.... 更易让人记忆与查寻..... 如果第一种更合乎业务逻辑 那么就选第一种. 那样子,业务逻辑与代码逻辑总共只需要记忆一次 比另一种少记忆一次. OO的主要目的就是少记忆 ,快速查找 OO的选择就是把自己当作一个有限大小 的一个cacahe要尽量提高命中率 |
|
返回顶楼 | |
发表时间:2008-12-12
我也选第二种,便于理解,清晰,很多开源代码都是这样写的。如果你流程变了,注释掉一个就成,如果第一种,会死人的,修改成本太高。个人看法。。。呵呵
|
|
返回顶楼 | |