类字段命名问题,一个类初始化时某个值为 null,只有调用另一个类的方法,该类的某个字段才会有内容,这个字段怎么命名?

2020-06-29 10:16:12 +08:00
 tctc4869

已知有一个类,不知道这个类有多少个类型字段,但是至少有一个字段的类型是知道的,类型是动态的。换成 java 里就是 Object,换成 c#就是 Object,Dynamic 。

为了方便称呼,把该类称为 A 类,把该字段称为 A 字段。A 类实例创建时,A 字段是 null 值。

此时有一个 B 类,B 类里有一个方法的形式参数是 A 类,称呼该方法为 B 方法。调用 B 类实例的 B 方法,传入 A 类实例,之后 A 类实例的 A 字段就有了内容,并且这个内容要么是 B 类实例里的某个字段,要么是 B 类实例与 A 类实例的其他字段内容运算产生的结果。只有这两种可能。

请问 A 类里的 A 字段叫什么名字比较好一点

1431 次点击
所在节点    程序员
11 条回复
wysnylc
2020-06-29 10:26:07 +08:00
命名问题老世纪难题了
GM
2020-06-29 10:31:03 +08:00
setA(Object value);

hahahaha
cruii
2020-06-29 11:29:47 +08:00
placeholder (狗头
zsdroid
2020-06-29 11:30:01 +08:00
不管类型怎么多变,总知道这个字段的作用吧。
aguesuka
2020-06-29 12:06:37 +08:00
attachment
xiangyuecn
2020-06-29 12:15:54 +08:00
泛型啊。泛型类 或者 泛型方法 想怎么定义就怎么定义

伪代码意思意思
class B{
func b<T>(A<T> aaa,.......T val){
aaa.setVal(val);
}
}

class A <T>{
T value
func val(T val){
value=val
}
}


B bbb=new B()

A<str> a1=new A<str>()
A<int> a2=new A<int>()

bbb.b(a1, "abc") // a1.value="abc"
bbb.b(a2, 123) // a2.vlaue=123
dallaslu
2020-06-29 13:00:46 +08:00
externalAssignmentValue
Lalavava
2020-06-29 18:48:37 +08:00
首先根据问题描述
这里问题应该不在取什么名字
而是你的这种设计本来就糟糕透顶
你在外部对一个对象实例内部字段进行初始化
试想一下如果别人看你的代码
他必须搜索所有代码 去找到你在什么地方进行了初始化
因为你可以在任何地方进行初始化
而且初始化这个字段的位置可以和 new A 的地方没任何关系

对于你描述的场景
如下代码应该是比较好的
class A<T> {
public A(Supplier<T> initializer) {
a = CompletableFuture.supplyAsync(initializer);
}

public T getA() {
try {
return a.get();
} catch (InterruptedException | ExecutionException e) {
throw new RuntimeException(e.getCause());
}
}

private final CompletableFuture<T> a;
}

class B {
public int foo() {
return 0;
}
}

public class Main {
public static void main(String[] args) {
var a = CompletableFuture.supplyAsync(B::new).thenAccept(b -> new A<Integer>(b::foo));
}
}
tctc4869
2020-06-29 19:55:53 +08:00
@Lalavava
任何设计工具都有可能找到合适它的用武之地,用不好工具,别人阅读远吗无法理解,这些现象不过程序员素质造成的。

而且真有礼貌,素质可真好啊,在说糟糕透顶之前,应该问一下,这个设计思路的最终目的是用在哪里的么?为什么要这么设计,没有可代替的更容易让人理解的方案么。在得到最终原因回答之后(但我也没有说),再说教至少是有理了
msg7086
2020-06-30 03:28:38 +08:00
b_data b_storage b_info b_result 等等。本质上还是要写清楚用途。
lijialong1313
2020-06-30 09:33:09 +08:00
我听着这像 XY 问题,建议详细描述为什么要这么做。

我想象不到为什么需要实例 B 来初始化一个实例 A 的字段值,如果需要这个字段值,可以直接使用实例 B 而并非实例 A,即使其基于 A 、B 运算结果

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/685520

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX