Không chắc nếu đây là một câu hỏi ngớ ngẩn, nhưng tôi chỉ nhận thấy điều này:Tại sao các tên tham số cần thiết trong định nghĩa giao diện? Tôi được phép chọn tên tham số mới trong quá trình thực
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)
{
}
}
Bên trong việc thực hiện của tôi, tôi đã gọi là tham số thứ hai của tôi 'maxRecords.' Tuy nhiên, trong giao diện, nó được định nghĩa là 'đếm'. Trình biên dịch vẫn xem xét giao diện được triển khai, điều này tốt, nhưng có thể dẫn đến một chút mơ hồ. Rõ ràng, tôi nên đổi tên một trong các tham số để khớp với các tham số khác.
Tôi đã chơi xung quanh một chút trước khi thực hiện đổi tên và nhận thấy điều gì đó thú vị. Tôi không được phép khai báo giao diện của mình là:
public interface IActivityDao : IDao<Activity>
{
IList<Activity> GetAllSinceSequence(long, int);
}
Đây có phải là trình biên dịch được bảo vệ quá mức chống lại C# symantics không? Mục đích của các tên tham số trong phương thức của giao diện khác với cách nào để làm cho mã dễ đọc hơn? Dường như với tôi rằng nó mời sự mơ hồ nếu các tên tham số không bị ép buộc khi triển khai.
Bạn xứng đáng được thăng hạng nhiều hơn. Bạn có câu trả lời tốt nhất cho đến nay. Bạn đã trả lời câu hỏi của OP khá ngắn gọn. – Enigmativity
Vâng, sắp xếp. Câu trả lời, trong khi rõ ràng, không thực sự giải quyết câu cuối cùng của bài viết của tôi. Tại sao không đảm bảo rằng các thông số sẽ được đặt tên giống nhau trong quá trình triển khai? Nếu ý định duy nhất là tự tài liệu và rõ ràng - tại sao không mang lại sự rõ ràng đó cho đến khi triển khai? Tôi không muốn vô tình quảng cáo phương pháp của mình khi chấp nhận 'đếm' khi tôi thực sự mong đợi 'maxResults'. –
Vì bạn có thể muốn tự tài liệu cụ thể hơn ở cấp độ triển khai. Giả sử bạn đã tạo một giao diện IBinaryMathOperation, với một phương thức Execute (int operand1, int operand2). Sau đó, bạn đã triển khai một lớp AddOperation thực hiện giao diện. Các toán hạng "" cho một phương thức thêm được đặc biệt gọi là "bổ sung", và bạn có thể muốn gọi chúng là trong thực thi cụ thể của Execute(). – KeithS