Điều gì về API tuyệt vời làm cho chúng tuyệt vời? Tôi nghĩ rằng việc tuân thủ câu thần chú "làm một việc và làm tốt" là một dấu hiệu tốt và việc ánh xạ tốt đến miền vấn đề là rất quan trọng, nhưng API tuyệt vời có điểm gì chung?
Điều gì về API tuyệt vời làm cho chúng tuyệt vời? Tôi nghĩ rằng việc tuân thủ câu thần chú "làm một việc và làm tốt" là một dấu hiệu tốt và việc ánh xạ tốt đến miền vấn đề là rất quan trọng, nhưng API tuyệt vời có điểm gì chung?
Câu trả lời:
Bạn phải cẩn thận để tránh thêm từ vựng mới chỉ vì lợi ích của API. API yêu thích của tôi giải thích mọi thứ cho tôi bằng từ vựng tôi đã hiểu. Dọc theo những dòng đó:
Tôi đã phải suy nghĩ về khoảng nửa tá lớp trừu tượng. Đừng làm tôi suy nghĩ về các lớp thêm. Đừng cho tôi quá nhiều điều mới để học mà sẽ không thêm giá trị cho mục tiêu cuối cùng của tôi. Ví dụ: tránh sử dụng lớp tệp đặc biệt của riêng bạn hoạt động khác với loại tệp của ngôn ngữ chỉ khiến bạn nghĩ rằng cách của bạn tốt hơn cách thường được chấp nhận. Hãy gắn bó với cách thức được chấp nhận chung, ít nhất là trong các giao diện của bạn, tốt hơn hoặc tồi tệ hơn.
Ví dụ: đừng cố che giấu sự thật rằng phần "mô hình" trong khung MVC của bạn là phần đầu cho cơ sở dữ liệu. Tận dụng các từ vựng nổi tiếng xung quanh "cơ sở dữ liệu". Tôi biết chìa khóa nước ngoài là gì. Tôi biết những hàng và cột là gì. Nói chuyện với tôi trong những điều khoản.
Tương tự như làm việc với những ý tưởng cụ thể. Đừng che giấu sự thật rằng chúng ta đang xử lý các tệp hoặc cơ sở dữ liệu hoặc hàng trong cơ sở dữ liệu. Tôi biết những điều này. Nếu tôi đang xử lý một container, như Danh sách, rất có thể tôi cần biết độ phức tạp thuật toán của các hoạt động chung. Bạn có thể đơn giản hóa điều đó bằng cách chỉ cho tôi biết "danh sách được liên kết" hoặc "mảng". Một bộ ý tưởng khổng lồ sẽ đột nhiên được đưa ra để làm theo những gì bạn đang làm và tất cả sẽ đột nhiên có ý nghĩa. Đừng tạo ra bộ ý tưởng của riêng bạn mà tôi phải học khi tôi đã đi kèm với một bộ thuật ngữ phong phú và hữu ích để áp dụng cho vấn đề.
Nếu tôi đang sử dụng API của bạn để mở tệp hình ảnh thuộc bất kỳ loại nào, tôi không cần phải suy nghĩ nhiều về pngs vs gifs vs jpgs. Bạn sẽ làm điều đó cho tôi. Đó là năng lực cốt lõi của bạn, không phải của tôi. Tôi có một số hiểu biết mơ hồ rằng bạn có một số phép thuật để làm điều này cho tôi.
Một API hữu ích có các mục sau:
X
hoàn toàn khác với quy ước được đặt ra bởi phần còn lại của API.Câu hỏi này được giải quyết trong "Thiết kế API thực tế: Lời thú tội của kiến trúc sư khung Java" của Jaroslav Tulach từ nhóm NetBeans.