如何命名具有相同含义但不同类型的两个变量
问题描述:
我有一个方法可以解析一个字符串并将其转换为布尔值。 法律价值观是“真实的”和“虚假的”。如何命名具有相同含义但不同类型的两个变量
boolean convertStringToBoolean(String text) {
if (text.equals("true") {
return true;
} else if (text.equals("false")) {
return false;
} else {
throw new IllegalArgumentException(text);
}
}
当我使用这个变量时,我得到一个命名问题。
void doSomething(String isSpecificReadString) {
boolean isSpecificRead = convertStringToBoolean(isSpecificReadString);
...
}
问题是该参数带有一个意思,我想保留它的名字。 含义不会因为类型改变而改变。 到目前为止,我的解决方案只是将参数类型后缀。 但我不喜欢这个解决方案。
我该怎么称呼变量来解决这个问题?
答
受Andy Turner启发,我可以制作两个doSomething
方法。 一种采用String和另一种采用布尔值的方法。 然后String方法可以调用布尔方法。 如下:
void doSomething(String isSpecificRead) {
doSomething(convertStringToBoolean(isSpecificReadString));
}
void doSomething(boolean isSpecificRead) {
...
}
答
到目前为止,我的解决方案只是将该类型后缀到参数。 但我不喜欢这个解决方案。
Java中的强类型语言以这种方式工作。
变量在运行时不能改变它们的类型。
您必须接受语言限制。
将方法中的数据从一个类型转换为另一个类型可能会导致此问题。
但是你的实际解决方案相当好。
意图很明确,您保留目标变量的自然名称。
您确实只为将要转换的输入(临时/中间变量)添加了类型后缀,而不是将用于下一个语句的输出。
定义您从该方法调用的过载'doSomething的空隙(布尔isSpecificRead)';或者你直接调用,如'doSomething(convertStringToBoolean(text))'。 –
这可以归结为一个意见的问题,所以SO是脱离主题。做你认为最简单,最清楚的事情,并坚持不懈,你会没事的。 –
当然,问题是:为什么'doSomething'首先接受''true“'/'”false“''String? –