【发布时间】:2021-02-24 22:24:40
【问题描述】:
你能告诉我一个在类中选择参数(属性)位置的一般原则吗?
例如,我可以有一个类:
class A {
X x;
Y y;
A (X x, Y y) {...}
void method() {...}
}
使用方法:
A a = new A(x, y);
a.method();
或者我可以上课:
class B {
X x;
B (X x) {...}
void method(Y y) {...}
}
使用方法:
B b = new B(x);
b.method(y);
重新表述这个问题:我应该封装什么以及我应该将什么作为接口的一部分保留?
【问题讨论】:
-
这完全取决于您的用例。
-
有些人通过发明这样的规则来赚钱,但对于这种特殊情况,我不知道有任何情况。但也许其他人是。有人吗?
-
我推荐阅读 Robert Martin 的 Clean Code。对象及其功能应该具有表现力和可读性。重构 SerialDate 的章节很棒。
-
@JohnMitchell 虽然 Martin 先生专注于制定规则,尤其是关于 cmets,但我不知道任何针对这种特定情况的规则。
-
所以您的问题收到的答案是“视情况而定”。例如;如果您的类应该是不可变的,那么变量应该是最终的并提供给构造函数。如果一个变量是灵活的,那么将其作为方法参数接收是有意义的。
标签: java oop object design-patterns interface