多くの Umbraco の例では、同じ種類の作業に対して 2 つの異なるアプローチが見られます。時々、人々はINodeを選択し、クエリし、返します。他の人はNodeですべてを行います。
どちらが好ましい働き方か誰か教えてもらえますか?
私は Umbraco に詳しくありませんが、答えは Umbraco に固有のものである必要はないと思います。
を返すINode
と、 から拡張された任意のクラスを (内部的に) 返すことができるという点で、将来の柔軟性が得られますINode
。INode
のすべてのプロパティとメソッドが含まれている場合Node
、これを行っても機能が失われることはありません。
たとえば、IEnumerable
vsを使用する機会を考えてみましょうList
IEnumerable<int> x = MyClass.MyMethod();
このクラスの例では、次の両方の定義MyMethod
が有効です。
public static IEnumerable<int> MyMethod()
{
return new List<int>() { 1, 2, 3 };
}
....
public static IEnumerable<int> MyMethod()
{
return new int[] {1, 2, 3};
}
MyMethod
これにより、各呼び出し元を変更せずにの実装を変更できます。
メソッドについては、そのコンテキストに関連するすべての機能を提供する最も単純な型を返す必要があります。返されるリストを変更する必要がある場合、MyMethod
返すことIEnumerable
は悪い選択です (不変であるため)。
マシューが言うように、それはあなたが何を達成しようとしているかによります。
しかし、あなたが初心者で何をしているのかわからない場合は、Node を返すことをお勧めします。そうしないと、ある時点で INode を Node にキャストし直す必要があるからです (これは必ずしも大きな問題ではありませんが、通常はコードを抽象化されていない Node クラスに結合することになるため、最初に INode を返す目的を無効にします)。