" Mẫu giao diện không đổi là cách sử dụng giao diện kém "
Bất cứ ai đã đặt ra giả thuyết này, dù có thể là một bậc thầy, họ đã đưa ra giả thuyết này trên cơ sở nhu cầu tiếp tục thực hiện những thói quen và thực hành xấu một cách hiệu quả. Giả thuyết dựa trên việc thúc đẩy tính hợp lệ của các thói quen thiết kế phần mềm xấu.
Tôi đã viết một phản hồi phản bác lại giả thuyết đó ở đây: Cách tốt nhất để triển khai các hằng số trong Java là gì? giải thích sự vô căn cứ của giả thuyết này.
Trong 10 năm, câu hỏi đó vẫn để ngỏ, cho đến khi nó được đóng lại trong vòng 2 giờ sau khi tôi đăng lý do của mình để bác bỏ giả thuyết này, do đó làm cho những người theo đuổi giả thuyết sai lầm này một cách thân thiết để tranh luận.
Đây là những điểm tôi đã bày tỏ chống lại giả thuyết
Cơ sở để giữ giả thuyết này là sự cần thiết của các phương pháp và các quy tắc HẠN CHẾ để đối phó với các tác động của các thói quen và phương pháp luận phần mềm xấu.
Những người ủng hộ quan điểm " Mô hình giao diện không đổi là cách sử dụng giao diện kém" không thể đưa ra bất kỳ lý do nào khác ngoài lý do gây ra bởi nhu cầu đối phó với tác động của những thói quen và tập quán xấu đó.
Giải quyết vấn đề cơ bản.
Và tại sao không tận dụng và khai thác mọi tính năng ngôn ngữ của cấu trúc ngôn ngữ Java để thuận tiện cho riêng bạn. Không cần áo khoác. Tại sao lại phát minh ra các quy tắc để ngăn cản lối sống kém hiệu quả của bạn để phân biệt đối xử và buộc những lối sống hiệu quả hơn?
Vấn đề cơ bản
là tổ chức thông tin. Thông tin làm trung gian cho quá trình, và hành vi của thông tin đó trước tiên phải được hiểu, cùng với cái gọi là quy tắc kinh doanh - trước khi thiết kế hoặc bổ sung các giải pháp cho quy trình. Phương pháp tổ chức thông tin như vậy được gọi là chuẩn hóa dữ liệu cách đây vài thập kỷ.
Khi đó, chỉ có thể thực hiện được kỹ thuật của một giải pháp bởi vì việc điều chỉnh mức độ chi tiết và mô đun của các thành phần của giải pháp với mức độ chi tiết và mô đun của các thành phần thông tin là chiến lược tối ưu.
Có hai hoặc ba trở ngại đáng kể đối với việc tổ chức thông tin.
Sự thiếu nhận thức về sự cần thiết của "chuẩn hóa" mô hình dữ liệu.
Các tuyên bố của EF Codd về chuẩn hóa dữ liệu còn thiếu sót, khiếm khuyết và không rõ ràng.
Mốt mới nhất giả mạo là kỹ thuật nhanh là quan niệm sai lầm rằng người ta không nên lập kế hoạch và điều kiện tổ chức các mô-đun trước vì bạn có thể cấu trúc lại khi bạn tiếp tục. Việc tái cấu trúc và thay đổi liên tục mà không bị cản trở bởi những khám phá trong tương lai được sử dụng làm cái cớ. Sau đó, các khám phá cơ bản về hành vi của thông tin quá trình, bằng cách sử dụng các thủ thuật kế toán để trì hoãn lợi nhuận và cạnh tranh, do đó kiến thức thiết yếu và việc xử lý chúng được coi là không cần thiết bây giờ.
Sử dụng Hằng số Giao diện là Thực hành Tốt.
Đừng tạo ra các quy tắc hoặc đưa ra bất kỳ phản đối nào chống lại nó chỉ vì bạn yêu thích thói quen lập trình chạy và chạy đặc biệt của mình.
Không cấm sở hữu súng với lý do có người không biết cầm súng hoặc dễ lạm dụng súng.
Nếu các quy tắc bạn xây dựng dành cho những người mới lập trình không thể viết mã chuyên nghiệp và bạn tự đếm mình trong số đó thì hãy nói như vậy - đừng khai báo fatwa của bạn là áp dụng cho các mô hình dữ liệu chuẩn hóa đúng cách.
Một lý luận ngớ ngẩn - Các giao diện không được những người sáng lập ngôn ngữ Java dự định sử dụng theo cách đó?
Tôi không quan tâm ý định ban đầu của những người sáng lập ra Hiến pháp Hoa Kỳ là gì. Tôi không quan tâm đến những ý định bất thành văn chưa được sửa đổi. Tôi chỉ quan tâm đến những gì được hệ thống hóa về văn bản trong Hiến pháp thành văn và cách tôi có thể khai thác chúng cho hoạt động hiệu quả của xã hội.
Tôi chỉ quan tâm đến những gì mà các thông số kỹ thuật của ngôn ngữ / nền tảng Java cho phép tôi và tôi dự định khai thác chúng một cách đầy đủ để đủ cho tôi một phương tiện để thể hiện các giải pháp phần mềm của mình một cách hiệu quả và hiệu quả. Không cần áo khoác.
Sử dụng Hằng số Enum thực sự là một Thực hành Kinh khủng.
Nó yêu cầu viết thêm mã để ánh xạ tham số thành giá trị. Thực tế là những người sáng lập Java đã không cung cấp ánh xạ tham số-giá trị mà không có văn bản của bạn rằng mã ánh xạ chứng tỏ Hằng số Enum cũng giống như việc sử dụng ngôn ngữ Java ngoài ý muốn.
Đặc biệt là vì bạn không được khuyến khích chuẩn hóa và thành phần hóa các thông số của mình, nên sẽ có ấn tượng sai rằng các thông số được trộn vào túi Enum có cùng thứ nguyên.
Hằng số là Hợp đồng API
Đừng quên điều đó. Nếu bạn đã thiết kế và chuẩn hóa mô hình dữ liệu của mình và chúng bao gồm các hằng số, thì những hằng số đó là hợp đồng. Nếu bạn không chuẩn hóa mô hình dữ liệu của mình, thì bạn nên tuân theo những điều đã được đưa ra về cách thực hành mã hóa hạn chế để đối phó với thói quen xấu đó.
Do đó, Interfaces là một cách hoàn hảo để thực hiện hợp đồng của Constants.
Một giả định kỳ lạ - Điều gì sẽ xảy ra nếu giao diện vô tình được triển khai.
Đúng vậy. Bất kỳ ai cũng có thể vô tình triển khai bất kỳ giao diện nào. Sẽ không có gì cản đường những lập trình viên vô tình như vậy.
Thiết kế và chuẩn hóa mô hình dữ liệu của bạn chống rò rỉ
Không đặt các nghị định hạn chế để bảo vệ các hoạt động xấu được cho là có thể gây rò rỉ các thông số không được rút gọn / đi lạc vào API. Giải quyết vấn đề cơ bản, thay vì đổ lỗi cho Hằng số giao diện.
Không sử dụng IDE là một phương pháp không tốt
Một lập trình viên hoạt động bình thường và HIỆU QUẢ không phải ở đó để chứng minh cô ấy có thể ở dưới nước trong bao lâu, cô ấy có thể đi được bao xa trong cái nóng chói chang hoặc mưa giông ẩm ướt. Cô là sử dụng một công cụ hiệu quả như một chiếc xe hơi hoặc xe buýt hoặc ít nhất là một chiếc xe đạp để mất 10 dặm của mình để công việc hàng ngày.
Đừng đặt ra những hạn chế đối với các lập trình viên đồng nghiệp chỉ vì bạn có một nỗi ám ảnh về chủ nghĩa khổ hạnh bí truyền với lập trình ít IDE.
Một vài khuôn khổ được thiết kế để giúp các lập trình viên tiếp tục thực hành các thói quen xấu một cách hiệu quả.
OSGI là một khuôn khổ như vậy. Và sắc lệnh chống lại Hằng số giao diện cũng vậy.
Do đó, câu trả lời kết luận ...
Hằng số giao diện là một cách hiệu quả và hiệu quả để đưa vào Hợp đồng các thành phần được thiết kế tốt và chuẩn hóa của mô hình dữ liệu.
Hằng số giao diện trong một giao diện riêng được đặt tên thích hợp được lồng trong một tệp lớp cũng là một phương pháp hay để nhóm tất cả các hằng số riêng của bạn thay vì phân tán chúng trên toàn bộ tệp.