8章パターンマッチ

 歴史的にも、開発者は様々なチェック機能や比較機能などのビジネスルールを実装することがあります。場合によっては実装しづらいルールや、可読性の低いルール、メンテナンスが難しいルールになることもあります。ロジックが多岐に分岐していて、比較方法やネスト度合いも様々なルールを依頼されることもあるでしょう。

 こういった複雑な状況にも対応できるようにするため、現代的なプログラミング言語ではパターンマッチが導入されるようになっています。パターンマッチを使用すると、宣言的な文法によって特定の条件と特定の結果を対応付けることができます。C#の場合、継続して強化される機能の1つになっていますが、特にC# 7からは手厚いサポートがされるようになっています。

 本章のテーマとしては、パターンを使用してビジネスルールに対応するようなホテルの予約システムを構築する場面を想定しています。ルールの基準は顧客のブロンズ、シルバー、ゴールドのグレードに応じたもので、ゴールドが最上位のグレードとしてより長期間滞在したことがある顧客であることを示します。

 本章ではプロパティやタプル、型に対するパターンマッチについて説明します。また、いくつかの節ではパターンマッチを使用することで複数の条件を単純化できるということについても説明しています。驚くべきことにC#ではバージョン1.0からパターンマッチがサポートされています。本章の最初の節ではisおよびas演算子、そしてis演算子の新機能について説明します。

レシピ8.1 インスタンスを安全に変換する

課題

型付けが弱く、手続き的なパターン処理を行うレガシーコードをリファクタリングしたい。

解決策

 以下のコードは結果を返すようなクラスで実装されるインターフェイスを定義しています。 ...

Get C#クックブック ―プロフェッショナル開発者のためのモダンレシピ now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.