由买买提看人间百态

topics

全部话题 - 话题: getter
首页 上页 1 2 3 4 5 6 7 8 下页 末页 (共8页)
N***m
发帖数: 4460
1
来自主题: Programming版 - hibernate问题
欢迎大虾指点。
My Reply:
1。我在学hibernate,想测试annotation放在getter method:)
2。放在field上可能会破坏封装,所以不建议这么用。
不过我不知道hibernate啥时候会破坏:)
3。也许还有其它原因?
g*****g
发帖数: 34805
2
来自主题: Programming版 - c++ 设计问题求助
Add some getter for A, pass A to B.

class
p*u
发帖数: 2454
3
来自主题: Programming版 - c++ 设计问题求助

class
check out boost::type_traits::is_same, then use template getter and setter
methods in A.
p*u
发帖数: 2454
4
来自主题: 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
5
No, define your own getters/setters.
X****r
发帖数: 3557
6
来自主题: 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
7
来自主题: Programming版 - 请教一个C++问题
我就是写个snippet.
那些,getter setter 都 save 了。也不是重点啊。
你不会介意吧?
g*****g
发帖数: 34805
8
来自主题: 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
9
来自主题: Programming版 - C# is light-years ahead of Java now
语言最开始都是以简单为目的,之后随着各种需求,尤其是为了跟上新的语言的步调,
再简单的也会变复杂。
就现在来说,光看程序的话,我觉得C#比Java更清晰简洁,比如setter/getter就比
java简洁吧(当然你也可以说这是sugar syntax,根本不需要,但是对用过的就会觉得
C#这方面要简洁些),这就好像也有很多人觉得C才是最简单易懂的没有其他花哨的东西
一样,一个道理。
g*****g
发帖数: 34805
10
来自主题: Programming版 - 问一个设计模式的问题
Pass A to B, add getter in A for C and D.
v*****r
发帖数: 2325
11
来自主题: 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
12
来自主题: Programming版 - iphone 程序开发没我想象的那么容易
工作了。
原来是 viewController 中CalculatorBrain 的getter 写错了。
-(CalculatorBrain*)brain
{
[[CaculatorBrain alloc] init];
}
导致
[self.brain pushOperand] always init stack.昨天typing code 在这一点上草了,
用debugger查了好长时间才找到的。
should be:
@sythetize brain = _brain;
-(CalculatorBrain*)brain
{
if (_brain == nil) {
_brain = [[CaculatorBrain alloc] init];
}
return _brain;
}
v*****r
发帖数: 2325
13
来自主题: 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
14
来自主题: Programming版 - iphone 程序开发没我想象的那么容易
工作了。
原来是 viewController 中CalculatorBrain 的getter 写错了。
-(CalculatorBrain*)brain
{
[[CaculatorBrain alloc] init];
}
导致
[self.brain pushOperand] always init stack.昨天typing code 在这一点上草了,
用debugger查了好长时间才找到的。
should be:
@sythetize brain = _brain;
-(CalculatorBrain*)brain
{
if (_brain == nil) {
_brain = [[CaculatorBrain alloc] init];
}
return _brain;
}
d**********x
发帖数: 4083
15
……
d****n
发帖数: 1637
16
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里没用到,但是将来会用到,没必要都在开始放进去。还记不住。
g*****g
发帖数: 34805
17
This is the encapsulation principle in OOP. It looks verbose, but when you
change the implementation, you can keep the contract intact.
e.g. You may introduce another variable that's directly linked to this
variable, you are supposed to update these two values at the same time. Now
you can update that variable in the setter and all callers won't be affected.
When you are making public APIs, or modulized a big system. These patterns
to help decoupling are important.
c*********e
发帖数: 16335
18
oop原则之一,变量都是private的,不能直接动。要动,只能通过setter来改变。
n*w
发帖数: 3393
19
does pojo violate oop principle?
c*********e
发帖数: 16335
20
pojo没违反阿,javabean里面照样有getxxx,setxxx method啊。
z*******3
发帖数: 13709
21
pojo的本意是不需要继承任何特定的接口和父类
早先年版本的ejb往往要求继承特定的接口,struts等要求继承特定的抽象类
因为这种模式其实很糟糕,群众往往弄不清楚要override的方法到底是做什么的
使得j2ee早期的推广面临着很大的困难
最常见的就是ejb的那4个接口,其中的stateful还有4个方法要override
没有多少人真能弄懂到底这些方法是做什么用的
spring出现之后,不需要继承任何特定的接口和类,简单很多很多
所以一下子就使得spring在很短时间内推广开来
全民皆编java也就是那个时候开始的
另外严格意义上的pojo连特定的annotation都不要求
但是因为annotation其实比xml要简单
所以广义的pojo就也包括那些要求使用特定annotation的java bean了
d**********x
发帖数: 4083
22
这个嘛。。我的实际感觉是比例要比1/10高很多,高多少不知道,但是想象一下,某个
关键的数据类出了问题的时候,你要监视每一个成员的变化。。。
好吧,就算是1/10,也是很高的一个比例了
c*****m
发帖数: 1160
23

:) 我把原贴更新了一下,增加了一些自己的想法。1/10是我瞎猜的
g*****g
发帖数: 34805
24
另外一个变量可以是个private变量。比如有个变量a,为了方便或者效率,你有个另一
变量永远是2*a.
没有setter怎么弄?
设计模式不是讲究概率,目的就是为了decoupling。内部API随便写写还没事反正可以
refactor。一旦第三方要调用,你这么弄,一旦需要改,第三方都得跟着改代码。很多
时候这是不能接受的。

SetThisVariable(
d**********x
发帖数: 4083
25
按照他的意思,这个东西不应该叫做setX,应该叫做updateX之类的东西

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

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

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

还沉
d****i
发帖数: 4809
36
来自主题: 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
37
来自主题: Programming版 - 为什么java要用setter和getter
design pattern的经典用C++和很多C++程序员不懂design pattern不矛盾。
d****i
发帖数: 4809
38
来自主题: Programming版 - 为什么java要用setter和getter
这个倒是,很多C++程序员对于design pattern也都是一头雾水,不过那本书上的例子
的程序写的都很精美的说,看过以后让人拍案叫好。
x****u
发帖数: 44466
39
来自主题: Programming版 - 为什么java要用setter和getter
这个DP容易把菜鸟引入over design的坑里去。
a9
发帖数: 21638
40
来自主题: Programming版 - 为什么java要用setter和getter
我比较货币于用public变量,需要重构的时候用IDE改成get set很方便。

setter
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
并发需要synchronized的地方会低?
随便一个server都会遇到类似的问题啊
难倒有server是单线程的?

setter
z*******3
发帖数: 13709
43
来自主题: Programming版 - 为什么java要用setter和getter
set/get一个很重要常见的应用就是aop等拦截器需要嘛
要拦截对于某一个bean的属性的调用
直接拦截其get方法就行了
如果分散在其它方法里
那怎么拦截?
最常见的就是log的生成
不拦截每次都去写一个log方法?
还有如果不拦截的话,对于一些现有的jar包里面的类的使用
就无法改了,要拆开来后重写代码
如果没有代码的话,还需要先反编译,再写,再编译
麻烦得多
d*****b
发帖数: 9
44
来自主题: Programming版 - 为什么java要用setter和getter
"并发需要synchronized的地方会低?"
您这不叫断章取义吗? 原文是
""也许你辛辛苦苦写下了一百多行给某个public属性赋值的语句后,
东西,这时你就必须在每个赋值的地方进行改动。"
z*******3
发帖数: 13709
45
来自主题: Programming版 - 为什么java要用setter和getter
不是,我在给你新例子
比楼主说的这个极端情况要广泛得多,几乎所有得server都会遇到
就是dto模式,如何防止多个线程并发修改同一个数据源的问题
这个太常见了,是个server就会用到,我前几天还在同步我自己的数据源
加上并发修改异常处理才大概算搞定
z*******3
发帖数: 13709
46
来自主题: 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
47
来自主题: Programming版 - 为什么java要用setter和getter
说实话,需要后加syncronized的情况非常少。
一个操作需不需要同步,应该在写这个方法的时候就应该考虑好。

么东
z*******3
发帖数: 13709
48
来自主题: Programming版 - 为什么java要用setter和getter
我不是在说复用的service bean
是entity bean
这个需要syncrhonized的情况太多了
复用的service bean也不是不需要synchronized
当写core java的时候遇到的就多了
大多数时候被写好的server给解决了而已
d*****b
发帖数: 9
49
来自主题: Programming版 - 为什么java要用setter和getter
抱歉.刚才没看出你是用反问的语句形式举个新例子.不过显然你的例子更常见.
基本上我的理解就是:当你给那个属性赋值的同时还一定要干点儿其它事时,用setter把
它们放一块.没这需要时就别用.
z*******3
发帖数: 13709
50
来自主题: Programming版 - 为什么java要用setter和getter
set用得其实少,get用得多
但是往往set需要synchronized
只不过现在hibernate什么都做得很好
以至于越来越少人真的去自己倒腾了
如果不synchronized的话
那么各个层面之间的entity bean的数据一致性就值得商榷了
这个时候会涉及hashcode的问题
如何保证两个不同的物理对象其实代表的是一个东西
就要用hashcode来解决冲突
首页 上页 1 2 3 4 5 6 7 8 下页 末页 (共8页)