1

次の質問をご覧ください。DataAccessプロジェクトのクラスの命名規則は何ですか。

JDKは、名前空間を使用してデータロジック層とビジネスロジック層を分離し、データアクセス層のIPersonDALなどのインターフェイスに名前を付けるためにハンガリアン記法を使用しないことについて説明しています。私は以下のコードでこの回答者の推奨事項に従いました:

Imports com.app.BusinessLogicLayer.Interfaces
Imports com.app.DataLogicLayer.Interfaces
Namespace BusinessLogicLayer

        Public Class Order
            Implements com.app.BusinessLogicLayer.Interfaces.IOrder
            Public Sub Insert()
                Dim IOrder As com.app.DataLogicLayer.Interfaces.IOrder = New com.app.DataLogicLayer.Order
            End Sub
        End Class
    End Namespace

    Namespace DataLogicLayer
        Public Class Order
            Public Sub Insert()

            End Sub
        End Class
    End Namespace

    Namespace BusinessLogicLayer.Interfaces
        Public Interface IOrder

        End Interface
    End Namespace

    Namespace DataLogicLayer.Interfaces
        Public Interface IOrder

        End Interface
    End Namespace

ビジネスロジック層のクラス(例:Orderはインターフェイス(ビジネスロジック層からのIOrder)を実装し、インターフェイス(データロジック層からのIOrder)を使用します。つまり、プレゼンテーション層はビジネスロジック層と通信し、ビジネスロジック層はインターフェイスを使用してデータロジック層と通信します。 。この理由のために注意してください。インターフェイスは名前空間で完全に修飾されている必要があります。このために; IPersonBLLやIPersonDALなどのハンガリアン記法を使用してインターフェイスに名前を付ける方がよいのではないでしょうか。

4

2 に答える 2

2

さて、これは主観的なトピックですが、ここに行きます...

まず、DALのような略語は避けてください。コード分​​析は頭字語と略語について怒鳴ります。あなたはそれを書き出すことになっています。私の経験では、それは賢明なアドバイスです。略語でいっぱいの古代のコードを開くと、多くの不要なWTFモーメントが発生します(しゃれが意図されています)。

綴りを説明する場合でも、次のようにBusinessLogicフォルダに50のクラスがある場合は次のようになります。

Company.Product.BusinessLogic
  個人エンティティ
  注文エンティティ
  材料エンティティ
  従業員エンティティ
  顧客エンティティ
  など。

私の腸は、リファクタリングの時間だと言っています。Entityタグを名前空間に移動する方が良いと思うので、次のようにします。

Company.Product.BusinessLogic.Entity
  人
  注文
  資料
  従業員
  顧客
  など

同じことがインターフェースにも当てはまります。

これにより、リファクタリングも簡単になります。エンティティを「BusinessObjects」と呼び始めたい場合は、クラス名やファイル名ではなく、名前空間の名前を変更するだけです。

クラス名を修飾するのは面倒な場合がありますが、通常は親の名前空間を指定するだけでよく、完全に修飾する必要はありません。Resharper->CleanupCodeはここで不思議に思います。

要約すると、参照を扱いやすくするためだけに、インターフェイス/クラス名にハンガリアン記法を追加しません。


更新:例

データアクセス層

Namespace Company.Product.DataAccess.Adapter
    Public Class Product
    End Class
End Namespace


ビジネスレイヤー

Imports Company.Product.DataAccess

Namespace Company.Product.BusinessLogic.Entity
    Public Class Product
        Dim adapter As New Adapter.Product()
    End Class
End Namespace


ユーザーインターフェイス(理想的には、UIはビジネスレイヤーとのみ対話する必要があり、データレイヤーと直接対話することはできません):

Imports Company.Product.BusinessLogic

Namespace Company.Product.UserInterface.Webpage
    Public Class Product
        Dim productEntity As New Entity.Product()
    End Class
End Namespace
于 2013-03-22T03:29:05.750 に答える
1

この理由のために注意してください。インターフェイスは名前空間で完全に修飾されている必要があります。このために; IPersonBLLやIPersonDALなどのハンガリアン記法を使用してインターフェイスに名前を付ける方がよいのではないでしょうか。

あなたが言っていることはわかりますが、名前を完全に修飾することがなぜ悪いのか、または「ハンガリアン」表記を使用してインターフェイスに名前を付ける方が「良い」のはなぜかわかりません。(そして私はこれをSimonyiのアプリハンガリー語の本当に悔い改めないファンとして言います。)

クラス/インターフェイスの名前と場所に関係なく、コンパイラは同じオブジェクトコードを生成することを忘れないでください。見かけのネストレベルは、コードを知覚できる程度に「遅く」することはありません。

名前を入力するのが本当に面倒な場合(そしてIntellisenseは慰めになりません)、usingディレクティブで名前空間エイリアスのようなものをいつでも使用できます。ただし、これらの使いすぎには注意が必要です。コードがさらに読みにくくなると思います。

于 2013-03-22T03:49:52.430 に答える