クラスにマジック:ザ・ギャザリングのカードのような名前を付ける

 

アレックスブログ2
私はマジック:ザ・ギャザリングをプレイして育ちました。 子供の頃、私はカード名について興味深いことに気づきました。一般的な名前はありませんでした。 「ゾンビ」「エルフ」「ウィザード」という名前のカードはありませんでした。 「逃亡者ウィザード」、「ラノワールのエルフ」、「グレイブベイン・ゾンビ」、さらには「ストーム・クロウ」という名前のカードはありましたが、「クロウ」はありませんでした。 最近のカード名はさらに具体的で刺激的です。 「クロウ・オブ・ダーク・タイディングス」と「フレイムハート・ウェアウルフ」を目撃します。 なぜ? デザイナーは新しいカードのためにスペースを空けておく必要があるからです。 「ゾンビ」という名前のカードがあったとしたら、それです。 そのカードはゾンビとは何かを示しています。 別のゾンビカードを作りたい場合は、元の「ゾンビ」の影に隠れることになります。
これはソフトウェアエンジニアリングに応用できます。 クラスに付ける名前は、クラスについてどのように考えるか、クラスにどのような責任を割り当てるかを決定します。 User という名前のクラスがある場合、そのクラスに「ユーザー」の概念に関連するものを入れるのは理にかなっています。 それは問題だけどね。 置くのは理にかなっている 何でも User クラスのその概念に関連しています。 最終的には、ログイン情報、請求設定、電子メール設定、権限が必要になります。 大規模なクラスが問題であることは長い間知られていました。 同じ場所に多くのロジックがあるため読みにくく、ロジックが複雑に絡み合う可能性が高いため変更が難しく、そのためバグが発生しやすくなります。
クラス名は、時間の経過とともにクラスが開発するロジックの舞台を設定します。 コードを一度書いたらそれで終わりというわけではないことを覚えておく必要があります。 コードは継続的に進化しており、新しいニーズを満たすために継続的に変更されています。 各段階で、開発者は「このロジックのどこに意味があるのか​​?」と自問することになります。 スティーブン・ウルフラム氏が指摘したように、 「関数の名前は、人々が関数についてどう考えるかを直接決定します。 「開発者は、ロジックが属する場所を示す XNUMX つの標識としてクラス名に注目します。 彼らは、クラスによって具体化された概念を別のものとして見るでしょう。 名前と概念が広範である場合、開発者はクラスに多数のロジックを配置します。
汎用クラス名について注意すべきもう XNUMX つの点は、それらが説明的ではないということです。 User という名前のクラスを開いたとしても、そこに含まれる可能性のあるデータはすぐにはわかりません。 含まれている可能性のあるものはたくさんあります。 確認するにはそれを読んで、次回のために覚えておく必要があります。 これは、作業中の開発者に多くの認知的負担を課します。 大規模なクラスの詳細を覚えておくか、確認するために目を通さなければなりません。 名前が LoginCredentials のようなものであれば、そこに何が含まれるかは明らかです。 名前は、クラスの役割を制限することで読者をガイドします。
コードを理解するための豊富なヒントを提供するコードを探す必要があります。 名前はパズルの重要なピースです。 Magic: the Gathering からヒントを得て、User の名前をより刺激的な名前に変更しようとすると、それを分割する必要があることがすぐにわかります。 最終的には、より小規模で、より集中したクラスになるでしょうが、それも利点です。

著者

  • Adam McKenzie

    アダムは CTO として、HPC チームとカスタマー サクセス チームの管理を担当しています。 アダムはボーイングでキャリアをスタートし、787 年間 XNUMX に取り組み、主翼の設計、分析、最適化を行う構造およびソフトウェア エンジニアリング プロジェクトを管理しました。 アダムはオレゴン州立大学で機械工学の学士号を優秀な成績で取得しています。

類似の投稿