これは愚かな質問ですが、私はちょうどこの気づいたかどうかわからない「MaxRecordsプロパティ」私は私の二番目のパラメータと呼ばれている私の実装の内部インターフェイス定義でパラメータ名が必要なのはなぜですか?私は、実装
public interface IActivityDao : IDao<Activity>
{
IList<Activity> GetAllSinceSequence(long sequence, int count);
}
public class ActivityDao : AbstractNHibernateDao<Core.Domain.Activity>, IActivityDao
{
public IList<Activity> GetAllSinceSequence(long sequence, int maxRecords)
{
}
}
をそれでも、インターフェイスでは、「カウント」として定義されています。コンパイラはまだ実装されているインタフェースを考慮していますが、それは良いですが、あいまいさを招く可能性があります。明らかに、私は他のパラメータと一致するようにパラメータの名前を変更する必要があります。
名前を変更する前にちょっと遊んで面白いことに気づいた。
これはコンパイラがC#のsymanticsに対して過度に保護されているということですか?インタフェースのメソッドのパラメータ名は、コードを読みやすくする以外の目的には何の目的がありますか?実装時にパラメータ名が強制されないと、あいまいさを招くようです。
あなたはより多くのupvotesが必要です。あなたはずっと最高の答えを持っています。 OPの質問には非常に簡潔に答えました。 – Enigmativity
まあ、並べ替え。答えは、明らかに、私の記事の最後の文には実際には言及していません。実装時にパラメータの名前が同じになるという保証がないのはなぜですか?唯一の意図が自己文書化であり、明確であるならば、その明快さを実装に至るまで徹底してみてはどうでしょうか?私は実際に 'maxResults'を期待しているときに私のメソッドを誤って 'count'を受け入れるものとして宣伝したくありません。 –
実装レベルでは、より具体的な自己文書化が必要な場合があります。 Execute(int operand1、int operand2)メソッドを使用してIBinaryMathOperationインターフェイスを作成したとします。次に、インターフェイスを実装するAddOperationクラスを実装しました。 addメソッドの "オペランド"は、特に "加点"と呼ばれ、Execute()の特定の実装で呼び出すことができます。 – KeithS