浏览 4047 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (4) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2011-10-31
最后修改:2011-10-31
c++在传递对象的时候,很关注到底是对象(即复制对象),还是引用(即传原对象),以及是否const,除了效率之外,还牵涉到是否可修改,也就是语言的严谨性 但是到了java中,因为语言没有强制要求,很容易出现本该复制的对象,本体却到处乱传,特别是愚蠢的自动生成getter,setter,就是万恶之源, 二,封装 先上例子 public class A{ private int i = 0; public void a(){ i++; } public void b(){ i--; } public void c(){ a(); b(); } } 这代码OK吗?NO!封装要做的是什么?封装就是控制对象field的可见性,所以public field是糟糕的设计. 在例子里,a,b是应该见到i的,所以没错,c没用到i,所以他不应该见到i,应该移出class A 这里有一个面向对象的典型误区,认为一个对象的方法就应该放在对象中,抱着这种想法的话,必然导致对象臃肿 我再次强烈批判愚蠢的自动生成getter,setter,他使得对象毫无封装可言,罪恶直逼public field,而如果getter,setter里做了私活,就违反了最小惊愕原则,所以最好是确实地把该做的活做好,然后换个可读的方法名 三,效率 即使在c++,for循环里选择new对象还是赋值,到底哪个效率高,也是不一定的,要视情况而定. 这本书的内容,与其说是教你怎么写的有效率,不如说其实是教你怎么写的正确,所谓追求效率的写法,实在少有必要,真正重要的是正确的编码和正确的设计 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2011-10-31
gtssgtss 写道 一,对象的传递
c++在传递对象的时候,很关注到底是对象(即复制对象),还是引用(即传原对象),以及是否const,除了效率之外,还牵涉到是否可修改,也就是语言的严谨性 但是到了java中,因为语言没有强制要求,很容易出现本该复制的对象,本体却到处乱传,特别是愚蠢的自动生成getter,setter,就是万恶之源, 二,封装 先上例子 public class A{ private int i = 0; public void a(){ i++; } public void b(){ i--; } public void c(){ a(); b(); } } 这代码OK吗?NO!封装要做的是什么?封装就是控制对象field的可见性,所以public field是糟糕的设计. 在例子里,a,b是应该见到i的,所以没错,c没用到i,所以他不应该见到i,应该移出class A 这里有一个面向对象的典型误区,认为一个对象的方法就应该放在对象中,抱着这种想法的话,必然导致对象臃肿 我再次强烈批判愚蠢的自动生成getter,setter,他使得对象毫无封装可言,罪恶直逼public field,而如果getter,setter里做了私活,就违反了最小惊愕原则,所以最好是确实地把该做的活做好,然后换个可读的方法名 三,效率 即使在c++,for循环里选择new对象还是赋值,到底哪个效率高,也是不一定的,要视情况而定. 这本书的内容,与其说是教你怎么写的有效率,不如说其实是教你怎么写的正确,所谓追求效率的写法,实在少有必要,真正重要的是正确的编码和正确的设计 现在我一般用shared_ptr 简化这种值传递,引用传递的问题。大致上和java一致。 |
|
返回顶楼 | |
发表时间:2011-11-02
LZ的头像是神马东东啊
|
|
返回顶楼 | |
发表时间:2011-11-02
xieye 写道 LZ的头像是神马东东啊
屁股 |
|
返回顶楼 | |
发表时间:2011-11-02
windlike 写道 xieye 写道 LZ的头像是神马东东啊
屁股 像是一个8旬老太太的屁股 ![]() |
|
返回顶楼 | |
发表时间:2011-11-02
这个都能愤一把?
|
|
返回顶楼 | |
发表时间:2011-11-02
openFox 写道 windlike 写道 xieye 写道 LZ的头像是神马东东啊
屁股 像是一个8旬老太太的屁股 ![]() 做技术的人哪,乱猜有意义么,google图片搜索懂不,搜下就知道了 |
|
返回顶楼 | |
发表时间:2011-11-02
不完全同意
|
|
返回顶楼 | |
发表时间:2011-11-02
不论是国内的源码,还是国外的,即便是JDK,我也没看到这种境界的代码。但是想法是好的
|
|
返回顶楼 | |