论坛首页 Java企业应用论坛

编程中一个很常见的问题,有帮助的

浏览 29400 次
精华帖 (1) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (17)
作者 正文
   发表时间:2008-12-11   最后修改:2008-12-13
OO
说一个开发中经常犯的错误。在实际的开发中请注意你的代码结构。
直接 给出一段代码吧。各位发表下自己的看法和见解。(随便写的)
这是一个描述 用: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{
.....
}



从段代码中反应了一个很严重的问题。可以从架构和程序实现上进行分析。
   发表时间:2008-12-11  
# public void test1() throws E2,E3,E4,E5,E6{ 
#  test()2; 
# } 


..................................相当严重。。。


有什么异常就丢什么异常。你这样写谁知道是什么意思?
0 请登录后投票
   发表时间:2008-12-11  
呵呵  解释下,如果你只是真看这两段代码,那么我我觉你是一个小菜了。
这是一个描述 用:A调用B B调用C C调用D 
还是由A同一去调用B C D的问题。
0 请登录后投票
   发表时间:2008-12-11  
异常部分 我只是想说明 如果是选择第一种的话   那么你的异常处理会怎么样?没有特别的意思。test()2;  这个是笔误,我不是在IDE环境中写的 这只是一段伪代码。
0 请登录后投票
   发表时间:2008-12-11  
完全是一段伪代码,根本就没有确切的目标!要是试试定义一个errorMsg 传递一下?
0 请登录后投票
   发表时间:2008-12-11  
具体问题具体分析,要考虑方法的可访问性等问题,如果真这么多方法的话,虽然第一种不可能,所有调用都在一个方法里可能性也不大,要考虑具体职责该归哪个方法,也要考虑这个方法是否有资格访问另一个方法,一些都为了封装性考虑,能不暴露的就不暴露
0 请登录后投票
   发表时间:2008-12-11   最后修改:2008-12-11
算了我也看不懂楼主要表达什么,就不挑战我自己的那可怜的iq了。。
0 请登录后投票
   发表时间:2008-12-11   最后修改:2008-12-11
有没有人从结构方面进行考虑的,如果在的代码中出现地第一种情况的时候你会怎么进行重构,进行重构的时候 你觉得你会碰见什么问题?第一种代码 的缺点是什么?第二种代码的优点是什么?实现难点是什么?
0 请登录后投票
   发表时间:2008-12-12   最后修改:2008-12-12
如果让我来选.
我会选第二种

由于没有逻辑可言的情况下
第二种的代码信息含量更接近5这个数....
更易让人记忆与查寻.....


如果第一种更合乎业务逻辑
那么就选第一种.
那样子,业务逻辑与代码逻辑总共只需要记忆一次
比另一种少记忆一次.

OO的主要目的就是少记忆 ,快速查找
OO的选择就是把自己当作一个有限大小 的一个cacahe要尽量提高命中率
7 请登录后投票
   发表时间:2008-12-12  
我也选第二种,便于理解,清晰,很多开源代码都是这样写的。如果你流程变了,注释掉一个就成,如果第一种,会死人的,修改成本太高。个人看法。。。呵呵
0 请登录后投票
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics