由买买提看人间百态

topics

全部话题 - 话题: setter
首页 上页 1 2 3 4 5 6 7 8 9 10 下页 末页 (共10页)
g*****g
发帖数: 34805
1
I didn't read the original post carefully. His example should work actually.
But not the recommended way to do it.
volatile is tricky, basically it works for getter/setter without sync. But
Atomic is much easier.
g*****g
发帖数: 34805
2
If it's private memeber for parents, just use a getter/setter in
parents to access it, I don't understand why we need any trick
for this.
L*********r
发帖数: 92
3
public getter/setter is always used to expose accessing a data member to a
class which is not in the class hierarchy tree.
k*k
发帖数: 508
4
what if the parent class doesn't provide the getter and setter?
it's not always the case that you have the access to the base class source
g*****g
发帖数: 34805
5
来自主题: Programming版 - 程序速读指南
Eclipse有这个warning, 打开就是了。
m_是比this.简单,但是在IDE里打起来反而慢。
何况this只在setter里用用就行了。
r*******y
发帖数: 290
6
来自主题: Programming版 - C++: friend function
Let's consider the following example:
CPoint
{
private:
int x, y;
};
CPointCollection
{
public:
setAllPoints(int a, int b);
private:
std::vector m_points;
}
CPointCollection and CPoint have high coupling, to access x/y of CPoint
we either write a setter or make CPointCollection a friend of CPoint
I think the friend way is better.
g*****g
发帖数: 34805
7
Pass the instance of B to A either using a constructor,
or using a setter.
t****u
发帖数: 8614
8
OO情况要好得多.
你可以用个configuration class, 然后用getter/setter来access,
coupling程度就降下来了. 简单举个例子,至少很多只读的config
data或者内部用的,可以不用担心被不熟悉code的其他开发者在其
他地方瞎改掉.
p*u
发帖数: 2454
9
来自主题: Programming版 - c++ 设计问题求助

class
check out boost::type_traits::is_same, then use template getter and setter
methods in A.
p*****u
发帖数: 711
10
来自主题: Programming版 - c++ 设计问题求助
不错不错,哈哈,直接用他们的代码会被告么?

setter
p*u
发帖数: 2454
11
来自主题: Programming版 - c++ 设计问题求助
No you didn't get it. the template methods should be like:
"
//suppose _i is A's private member
template
int
A::getter( const T& ref)
{
if( boost::is_same::value )
return _i;
else
throw e( "Wrong type!" );
}
template
void
A::setter( const T& ref, int i )
{
if( boost::is_same::value )
_i = i;
else
throw e( "Wrong type!" );
}
"
X****r
发帖数: 3557
12
No, define your own getters/setters.
X****r
发帖数: 3557
13
来自主题: Programming版 - Python macro question
I see what you are trying to do. If you really want global names, import __
builtin__ (or builtin for python 3) and assign its property (e.g. FLOATTYPE)
, which will become global for all modules without further explicit imports.
But this is highly unrecommended -- global names are very hard to maintain.
I still don't get why can't you import head.py from source.py. If you'd like
your driver.py change the value on-the-fly (e.g. decide which type to use
from command-line arguments in driver.py), ... 阅读全帖
d****n
发帖数: 1637
14
来自主题: Programming版 - 请教一个C++问题
我就是写个snippet.
那些,getter setter 都 save 了。也不是重点啊。
你不会介意吧?
g*****g
发帖数: 34805
15
来自主题: Programming版 - C# is light-years ahead of Java now
我无语了,Java 5是04年出来的,C#的generics是.Net 2.0才有的,.Net 2.0是06年
出来的。什么叫做到Java 5才有呀,到底是谁抄谁呀?至于closure,anonymous inner
class可以实现大部分的需要。不够简洁不错,但是这么多年也没见谁因为没有
closure而不能实现某种功能。
事实上functional的滥用是难以避免的。C++语法中的很多问题,都是因为为了跟
C兼容引起的。functional自由度更大,更容易滥用。当语言中允许不同风格
的写法的时候,就很难一致。理想是美好的,现实是程序员烂的比不烂的多。
从实用的角度,一个java烂程序员写的代码,还可以维护。而一个functional的,
可能只能重写。有现代IDE的存在,boiler plate代码是被overrated的。比如一个Java
bean很繁琐,但事实上在IDE里需要写的,就是声明的那几行,其他getter setter,
equals, hashcode,包括import,都是直接点几下就生成了。

Closure
C#
Java
z***e
发帖数: 5393
16
来自主题: Programming版 - C# is light-years ahead of Java now
语言最开始都是以简单为目的,之后随着各种需求,尤其是为了跟上新的语言的步调,
再简单的也会变复杂。
就现在来说,光看程序的话,我觉得C#比Java更清晰简洁,比如setter/getter就比
java简洁吧(当然你也可以说这是sugar syntax,根本不需要,但是对用过的就会觉得
C#这方面要简洁些),这就好像也有很多人觉得C才是最简单易懂的没有其他花哨的东西
一样,一个道理。
v*****r
发帖数: 2325
17
来自主题: Programming版 - iphone 程序开发没我想象的那么容易
paul hegarty made it look easy. 有看了debugger demo, 感觉稍好。
用NSMutableArray 做stack, push/pop 工作不正常。operandStack 存不了数!pop
always 0.
看来对objective c 理解还不深入。
@synthesize operandStack = _operandStack;
_operandStack is a storage location? used in generated getter/setter code?
v*****r
发帖数: 2325
18
来自主题: Programming版 - iphone 程序开发没我想象的那么容易
paul hegarty made it look easy. 有看了debugger demo, 感觉稍好。
用NSMutableArray 做stack, push/pop 工作不正常。operandStack 存不了数!pop
always 0.
看来对objective c 理解还不深入。
@synthesize operandStack = _operandStack;
_operandStack is a storage location? used in generated getter/setter code?
d**********x
发帖数: 4083
19
……
d****n
发帖数: 1637
20
class A{
var a, b,c,d,shits...
set_a(a){ this.a=a; return this;}
set_b(b){ this.b=b; return this;}
set_c(c){ this.c=c; return this;}
}
我的一点经验,怕忘member名。
书写方便,省着忘了参数名:
objA= A().set_a(a).set_b(b).set_c(c);
对比:
objA=A(a, b,c, ...);
有些参数在ctor里没用到,但是将来会用到,没必要都在开始放进去。还记不住。
n*w
发帖数: 3393
21
does pojo violate oop principle?
c*********e
发帖数: 16335
22
pojo没违反阿,javabean里面照样有getxxx,setxxx method啊。
z*******3
发帖数: 13709
23
pojo的本意是不需要继承任何特定的接口和父类
早先年版本的ejb往往要求继承特定的接口,struts等要求继承特定的抽象类
因为这种模式其实很糟糕,群众往往弄不清楚要override的方法到底是做什么的
使得j2ee早期的推广面临着很大的困难
最常见的就是ejb的那4个接口,其中的stateful还有4个方法要override
没有多少人真能弄懂到底这些方法是做什么用的
spring出现之后,不需要继承任何特定的接口和类,简单很多很多
所以一下子就使得spring在很短时间内推广开来
全民皆编java也就是那个时候开始的
另外严格意义上的pojo连特定的annotation都不要求
但是因为annotation其实比xml要简单
所以广义的pojo就也包括那些要求使用特定annotation的java bean了
d**********x
发帖数: 4083
24
这个嘛。。我的实际感觉是比例要比1/10高很多,高多少不知道,但是想象一下,某个
关键的数据类出了问题的时候,你要监视每一个成员的变化。。。
好吧,就算是1/10,也是很高的一个比例了
c*****m
发帖数: 1160
25

:) 我把原贴更新了一下,增加了一些自己的想法。1/10是我瞎猜的
d**********x
发帖数: 4083
26
按照他的意思,这个东西不应该叫做setX,应该叫做updateX之类的东西

不是
verbose,
z*******3
发帖数: 13709
27
如果是public变量
任何一个方法一个线程都可以发起对该变量的修改
那么如果该调用有任何的改动
那你要搜索整个项目去寻找关于该变量的调用
然后挨个修改
但是如果你要求所有的调用全部通过方法调用
那么如果有什么改动,你只需要改动该类本身的方法就行了
举个例子
如果你要求对于某一个变量的值在get时候+1
那么如果你是public变量,那么这个+1就要你遍历项目所有的代码去修改
但是如果你用的是get,那么只需要在get方法return的时候+1就行了
如果是用方法,还有办法予以优化
因为所有调用该private变量的操作都必需经过该方法
所以可以在该方法上添加interceptor, aop之类的东东
spring也是在方法调用的时候才inject,而不是在fields被调用时候inject
直接invoke变量框架容器什么忙都帮不上
z*******3
发帖数: 13709
28
还有一个例子就是并发操作的时候
你用方法可以加synchronized关键字控制并发
如果是public,你怎么控制并发?
另外get方法也不是必然叫这个名字
可能这个名字就是update,而压根没有get方法
就只有update或者getMD5
a9
发帖数: 21638
29
一句话:利于重构
c*****m
发帖数: 1160
30
来自主题: Programming版 - goodbug vs neverlearn

我对goodbug很失望。我问一个简单的:setter 和getter有什么用处?最后他的答案是
:java都用它们作为接口。
m*******l
发帖数: 12782
31
来自主题: Programming版 - 为什么java要用setter和getter
大部分学Java的都是知其然而不知其所以然
学C++的,如果不知其所以然,很难混下去...
d****i
发帖数: 4809
32
来自主题: Programming版 - 为什么java要用setter和getter
所以我一直提倡从C-> C++ ->Java这么一条学习线路学下去,这样对很多问题的理解比
较透彻,概念也比较深入清晰。虽然花的时间会多一些。
k******i
发帖数: 5774
33
来自主题: Programming版 - 为什么java要用setter和getter
都是面向对象设计的一些原则
SOLID里面的一条吧

么东
g*****g
发帖数: 34805
34
来自主题: Programming版 - 为什么java要用setter和getter
你咋不说学C++的懂Design Pattern的实在不多,本版很少讨论这个。有些人成天还沉
迷于回
字怎么写呢?
m*******l
发帖数: 12782
35
来自主题: Programming版 - 为什么java要用setter和getter
连object这个基类都不知道的java程序员,连基本oop都搞不懂的大谈什么
Design pattern
不好笑么?
a9
发帖数: 21638
36
来自主题: Programming版 - 为什么java要用setter和getter
好虫最近比较露窃啊。
OO跟design pattern是两回事儿。

还沉
d****i
发帖数: 4809
37
来自主题: Programming版 - 为什么java要用setter和getter
这回好虫你还真说错了,design pattern最著名的经典的教科书:
Design Patterns: Elements of Reusable Object-Oriented Software
By Erich Gamma, Richard Helm, Ralph Johnson, John Vlissides
Addison-Wesley,1994
就是全部用C++做例子的,当然可能跟那时Java还没有诞生有关。这本书几乎就是
design pattern的bible了吧。
S**I
发帖数: 15689
38
来自主题: Programming版 - 为什么java要用setter和getter
design pattern的经典用C++和很多C++程序员不懂design pattern不矛盾。
d****i
发帖数: 4809
39
来自主题: Programming版 - 为什么java要用setter和getter
这个倒是,很多C++程序员对于design pattern也都是一头雾水,不过那本书上的例子
的程序写的都很精美的说,看过以后让人拍案叫好。
x****u
发帖数: 44466
40
来自主题: Programming版 - 为什么java要用setter和getter
这个DP容易把菜鸟引入over design的坑里去。
z*******3
发帖数: 13709
41
来自主题: Programming版 - 为什么java要用setter和getter
gof那些pattern大部分其实都被java的各种框架什么轻松搞定了
比如singleton,一个@singleton就搞定了
或者用enum,现在很少还有人去自己实现singleton了
还有prototype也是写下配置文件就好了,或者直接调用clone()方法
factory的功能则多数spring所取代,flyweight等模式则在ejb容器中被实现
还有一些行为模式,比如iterator之类的都有现成的实现类,aop对应visitor什么
也都是用就行了,对于一般java开发人员来说,不需要自己去写这些模式
只需要会用就行了,如果经常自己去实现gof的那些模式
反倒是要看看是为什么了,为什么这个人在重复造轮子
而后在gof的基础之上,sun又搞出了一个j2ee core pattern
这个才是真正常见的对于java开发人员来说的design pattern
而就是这个core pattern,现在看也都有些陈旧了
z*******3
发帖数: 13709
42
来自主题: Programming版 - 为什么java要用setter和getter
set/get一个很重要常见的应用就是aop等拦截器需要嘛
要拦截对于某一个bean的属性的调用
直接拦截其get方法就行了
如果分散在其它方法里
那怎么拦截?
最常见的就是log的生成
不拦截每次都去写一个log方法?
还有如果不拦截的话,对于一些现有的jar包里面的类的使用
就无法改了,要拆开来后重写代码
如果没有代码的话,还需要先反编译,再写,再编译
麻烦得多
d*****b
发帖数: 9
43
来自主题: Programming版 - 为什么java要用setter和getter
"并发需要synchronized的地方会低?"
您这不叫断章取义吗? 原文是
""也许你辛辛苦苦写下了一百多行给某个public属性赋值的语句后,
东西,这时你就必须在每个赋值的地方进行改动。"
z*******3
发帖数: 13709
44
来自主题: Programming版 - 为什么java要用setter和getter
不是,我在给你新例子
比楼主说的这个极端情况要广泛得多,几乎所有得server都会遇到
就是dto模式,如何防止多个线程并发修改同一个数据源的问题
这个太常见了,是个server就会用到,我前几天还在同步我自己的数据源
加上并发修改异常处理才大概算搞定
z*******3
发帖数: 13709
45
来自主题: Programming版 - 为什么java要用setter和getter
另外关于直接变量的修改
这个你没有办法利用上接口
接口不定义变量,只定义方法
这样可以剥离耦合
比如a.int = b.int
那么这个时候你要连同B一起编译
而这个B只能是具体的实现类
这样耦合度明显增加
A和B的实现就很难拆开给两个人去写
因为A的编译需要用到B类,否则无法编译
而如果B是一个接口
那么a.int = b.getInt();
的话,A的编译只需要拿到B的接口就行了
B的实现跟A的实现分离
这也是最基本的分工的要求
否则你写的代码要等隔壁阿三写好才能编译
那就痛苦了
a9
发帖数: 21638
46
来自主题: Programming版 - 为什么java要用setter和getter
说实话,需要后加syncronized的情况非常少。
一个操作需不需要同步,应该在写这个方法的时候就应该考虑好。

么东
z*******3
发帖数: 13709
47
来自主题: Programming版 - 为什么java要用setter和getter
我不是在说复用的service bean
是entity bean
这个需要syncrhonized的情况太多了
复用的service bean也不是不需要synchronized
当写core java的时候遇到的就多了
大多数时候被写好的server给解决了而已
z*******3
发帖数: 13709
48
来自主题: Programming版 - 为什么java要用setter和getter
set用得其实少,get用得多
但是往往set需要synchronized
只不过现在hibernate什么都做得很好
以至于越来越少人真的去自己倒腾了
如果不synchronized的话
那么各个层面之间的entity bean的数据一致性就值得商榷了
这个时候会涉及hashcode的问题
如何保证两个不同的物理对象其实代表的是一个东西
就要用hashcode来解决冲突
首页 上页 1 2 3 4 5 6 7 8 9 10 下页 末页 (共10页)