Một câu hỏi khó xử, cởi mở, nhưng đó là một vấn đề tôi luôn luôn chống lại:
Phần mềm dễ bảo trì và hoạt động với phần mềm được thiết kế tốt. Cố gắng tạo ra một thiết kế trực quan có nghĩa là đặt tên cho các thành phần của bạn theo cách mà nhà phát triển tiếp theo có thể suy ra chức năng của thành phần đó. Đây là lý do tại sao chúng tôi không đặt tên cho các lớp của mình là "Type1", "Type2", v.v.
Khi bạn mô hình hóa một khái niệm trong thế giới thực (ví dụ như khách hàng), điều này thường đơn giản như đặt tên kiểu của bạn sau khi khái niệm thế giới thực được mô hình hóa. Nhưng khi bạn đang xây dựng những thứ trừu tượng, theo định hướng hệ thống hơn, thì rất dễ để hết những cái tên vừa dễ đọc vừa dễ tiêu hóa.
Nó trở nên tồi tệ hơn (đối với tôi) khi cố gắng đặt tên cho các họ loại, với kiểu cơ sở hoặc giao diện mô tả những gì các thành phần phải làm, nhưng không phải là cách chúng hoạt động. Điều này tự nhiên dẫn đến mỗi loại dẫn xuất cố gắng mô tả hương vị của việc triển khai (ví dụ IDataConnection
và SqlConnection
trong .NET Framework), nhưng làm thế nào để bạn thể hiện một cái gì đó phức tạp như "hoạt động bằng cách phản chiếu và tìm kiếm một bộ thuộc tính cụ thể"?
Sau đó, khi cuối cùng bạn đã chọn một tên cho loại mà bạn nghĩ mô tả những gì nó đang cố gắng thực hiện, đồng nghiệp của bạn hỏi "WTF điều này DomainSecurityMetadataProvider
thực sự làm gì? "
Có bất kỳ kỹ thuật tốt nào để chọn một tên có ý nghĩa tốt cho một thành phần, hoặc làm thế nào để xây dựng một họ các thành phần mà không bị nhầm lẫn tên?
Có bất kỳ thử nghiệm đơn giản nào mà tôi có thể áp dụng cho một tên để có cảm giác tốt hơn về việc liệu tên đó có "tốt" hay không và có trực quan hơn với người khác không?