Skip to content

IBAction の名称を、操作を意味するものに変えると良いかもしれません。 #75

@yumemi-kumagai

Description

@yumemi-kumagai

現在は、たとえば「Close」ボタンが押されたときに、@IBAction func dismiss(_:) を呼び出すようになっています。これだと閉じる操作で行うことと強く結びすぎていて、閉じる際に追加の処理が必要になったとき、名前と反する実装になる可能性があります。

@IBAction では「Close ボタンが押された」ことを意味する名称にすると「閉じる処理」であることが明確になり、その中で必要な処理(今回なら dismiss を呼び出す)をすると読みやすいコードになりそうです。

同じようにして、天気予報の更新も UI 操作に紐づいた名称のメソッドを @IBAction で呼び出すことで、同様の効果が得られそうです。特にここは既存のテストコードで顕著で、現在は loadWeather というその名前から、天気予報を取得するテストでこの @IBAction が直接呼び出されています。

ただ、テストとしては「更新ボタンが押されたこと」をテストしたい場面ではないはずで、将来的に意図しない副作用が含まれる可能性も生みそうです。また、テストコードで Sender を渡すことが求められ、無意味な値を渡さざるを得ないところも気になります。ここをボタン操作と更新操作で明確に分けることで、テストコードでもそういった懸念材料を払拭できそうです。

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions