2016-10-27 43 views
0
case class AlertWindowDto(id: String) 

protected val InitialWindowPeriodOneOnPeak = AlertWindowDto(ValidId) 

protected val ValidId = "someSite" 

我看到这些在不同的不同类别的行。只是我理解了。为什么我需要那样的领域

一般来说,如果我正在创建一个虚拟对象或某个类的对象,那么我会给出一些值或空或空字符串。什么是需要创建另一个字段ValidId并分配一些值并将该字段分配给最终对象。

是否有任何好处,或任何有助于测试用例。

你能帮我吗。

+2

想象一下这个'someSite'字符串应该在代码中的多个位置使用的情况。现在这种方法带给你2个优点。 1.它可以节省你的拼写错误2.如果由于某种原因需要更改此字符串,则只需更改一次即可。 –

+0

然后还有另一个原因与jvm如何处理字符串有关。 –

+0

你应该检查魔术字符串/数字,这是不好的直接使用代码https://en.wikipedia.org/wiki/Magic_string –

回答

3

想象一下:

protected val InitialWindowPeriodOneOnPeak = AlertWindowDto("someSite") 

是否传达"someSite"是一个警告窗口,有效的身份证信息?

这是一个微不足道的例子,但总体思路是,有时分解表达式并给它们分配名字对表达意义很有用。

我还会补充说,这个命名信息在类型中越多越好。例如,下面是实现相同结果的另一种方式,不使用变量名称。

case class ValidId(value: String) extends AnyVal 
case class AlertWindowDto(id: ValidId) 
protected val InitialWindowPeriodOneOnPeak = AlertWindowDto(ValidId("someSite")) 

相同的信息,但“有效的ID”信息现在存储在类型系统中。