Open yumemi-kumagai opened 6 months ago
現在は、たとえば「Close」ボタンが押されたときに、@IBAction func dismiss(_:) を呼び出すようになっています。これだと閉じる操作で行うことと強く結びすぎていて、閉じる際に追加の処理が必要になったとき、名前と反する実装になる可能性があります。
@IBAction func dismiss(_:)
@IBAction では「Close ボタンが押された」ことを意味する名称にすると「閉じる処理」であることが明確になり、その中で必要な処理(今回なら dismiss を呼び出す)をすると読みやすいコードになりそうです。
@IBAction
dismiss
同じようにして、天気予報の更新も UI 操作に紐づいた名称のメソッドを @IBAction で呼び出すことで、同様の効果が得られそうです。特にここは既存のテストコードで顕著で、現在は loadWeather というその名前から、天気予報を取得するテストでこの @IBAction が直接呼び出されています。
loadWeather
ただ、テストとしては「更新ボタンが押されたこと」をテストしたい場面ではないはずで、将来的に意図しない副作用が含まれる可能性も生みそうです。また、テストコードで Sender を渡すことが求められ、無意味な値を渡さざるを得ないところも気になります。ここをボタン操作と更新操作で明確に分けることで、テストコードでもそういった懸念材料を払拭できそうです。
現在は、たとえば「Close」ボタンが押されたときに、
@IBAction func dismiss(_:)
を呼び出すようになっています。これだと閉じる操作で行うことと強く結びすぎていて、閉じる際に追加の処理が必要になったとき、名前と反する実装になる可能性があります。@IBAction
では「Close ボタンが押された」ことを意味する名称にすると「閉じる処理」であることが明確になり、その中で必要な処理(今回ならdismiss
を呼び出す)をすると読みやすいコードになりそうです。同じようにして、天気予報の更新も UI 操作に紐づいた名称のメソッドを
@IBAction
で呼び出すことで、同様の効果が得られそうです。特にここは既存のテストコードで顕著で、現在はloadWeather
というその名前から、天気予報を取得するテストでこの@IBAction
が直接呼び出されています。ただ、テストとしては「更新ボタンが押されたこと」をテストしたい場面ではないはずで、将来的に意図しない副作用が含まれる可能性も生みそうです。また、テストコードで Sender を渡すことが求められ、無意味な値を渡さざるを得ないところも気になります。ここをボタン操作と更新操作で明確に分けることで、テストコードでもそういった懸念材料を払拭できそうです。