2017-08-25 121 views
-1

我有一个方法可以解析一个字符串并将其转换为布尔值。 法律价值观是“真实的”和“虚假的”。如何命名具有相同含义但不同类型的两个变量

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); 
    ... 
} 

问题是该参数带有一个意思,我想保留它的名字。 含义不会因为类型改变而改变。 到目前为止,我的解决方案只是将参数类型后缀。 但我不喜欢这个解决方案。

我该怎么称呼变量来解决这个问题?

+1

定义您从该方法调用的过载'doSomething的空隙(布尔isSpecificRead)';或者你直接调用,如'doSomething(convertStringToBoolean(text))'。 –

+0

这可以归结为一个意见的问题,所以SO是脱离主题。做你认为最简单,最清楚的事情,并坚持不懈,你会没事的。 –

+1

当然,问题是:为什么'doSomething'首先接受''true“'/'”false“''String? –

回答

0

受Andy Turner启发,我可以制作两个doSomething方法。 一种采用String和另一种采用布尔值的方法。 然后String方法可以调用布尔方法。 如下:

void doSomething(String isSpecificRead) { 
    doSomething(convertStringToBoolean(isSpecificReadString)); 
} 

void doSomething(boolean isSpecificRead) { 
    ... 
} 
0

到目前为止,我的解决方案只是将该类型后缀到参数。 但我不喜欢这个解决方案。

Java中的强类型语言以这种方式工作。
变量在运行时不能改变它们的类型。
您必须接受语言限制。

将方法中的数据从一个类型转换为另一个类型可能会导致此问题。
但是你的实际解决方案相当好。
意图很明确,您保留目标变量的自然名称。

您确实只为将要转换的输入(临时/中间变量)添加了类型后缀,而不是将用于下一个语句的输出。

相关问题