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

protected val InitialWindowPeriodOneOnPeak = AlertWindowDto(ValidId) 

protected val ValidId = "someSite" 

私はこれらのラインが異なるクラスにあるのを見ました。ちょうど私は理解のためにまとめました。なぜそのようなフィールドが必要なのですか

一般的に、私はクラスのダミーまたはいくつかのオブジェクトを作成している場合、いくつかの値またはnullまたは空の文字列を与えます。別のフィールドValidIdを作成し、ある値を割り当てて、そのフィールドを最終オブジェクトに割り当てる必要があります。

何か利点がありますか、テストケースに役立ちます。

お願いします。

+2

この 'someSite'文字列がコード内の複数の場所で使用されるはずです。今、このアプローチは2つの利点をもたらします。 1.それはタイプミスからあなたを救う2.何らかの理由でこの文字列を変更する必要がある場合は、ただ一度それを変更する必要があります。 –

+0

そして、文字列がjvmによってどのように扱われるかと関係している別の理由があります。 –

+0

あなたは魔法の文字列/数字をチェックする必要があります。コードhttps://en.wikipedia.org/wiki/Magic_stringで直接使うのは良くありません –

答えて

3

はこれを想像:

protected val InitialWindowPeriodOneOnPeak = AlertWindowDto("someSite") 

それは"someSite"が警告ウィンドウのための有効なIDであるという情報を伝えていますか?

これはほんの一例ですが、表現を分解して名前を付けることは、意味を表現するうえで大変です。

さらに、この名前付け情報がタイプに多く含まれていればいいと私は付け加えます。たとえば、変数名を使用せずに同じ結果を達成する別の方法があります。

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

「有効なID」情報は同じタイプシステムに保存されるようになりました。

関連する問題