0
私は、私たちのアプリから電子メールを送信する際に使用する電子メールアプリを選択するオプションをユーザーに与えるためのクラスを作成しています。将来の開発者が `switch`` default`節を悪用するのを防ぐ方法は?
私はdefault
を指定しているので、次のことを実行しようとしていますが、警告が表示されます。 default
はそこにあります。なぜなら、将来の開発者が追加したクライアントにケースを追加するのではなく、デフォルトを使用しないようにしたいからです。
private enum EmailApp {
case appleMail
case gmail
case outlook
typealias EmailAppConfiguration = (title: String, scheme: String?, path: String?)
var configuration: EmailAppConfiguration {
switch self {
case .appleMail:
return ("Apple Mail", nil, nil)
case .gmail:
return ("Gmail", "googlegmail://", "co")
case .outlook:
return ("MS Outlook", "ms-outlook://", "compose")
default:
preconditionFailure("Unhandled email client. DO NOT use the default. Explicitly define the configuration when you add a new app.")
}
}
}
私は警告が気に入らない。私はスイッチの前に前提条件の失敗を行うためにguard
を置くことができましたが、それはあまりにも醜いでしょう。あなたならどうしますか?
switch文からデフォルトを削除するだけです。 Swiftで列挙型を使用する利点は、それだけです。あなたはデフォルトを必要としません。開発者はそれをコード化することはできません。 (もう1つの選択肢はenumに.undefinedMailClientのケースを追加し、デフォルトを使用する代わりにそれをコーディングすることです。 – dfd
(1)Swiftの 'switch'は、すでに作成済みのものでなければなりません。 (2)将来、新しい列挙型を 'enum'に追加すると、' switch'が完全ではないので、コンパイラは警告を出します。あなたのコードにしてください。ガイダンスとしてコメントを入れ、それをそのままにしておきます –