Tôi đã triển khai lại một số cấu trúc dữ liệu, chức năng và lớp học được tích hợp sẵn của ngôn ngữ trong một số trường hợp. Là một nhà phát triển nhúng, lý do chính tôi sẽ làm đó là tốc độ hoặc hiệu quả. Các thư viện và kiểu chuẩn được thiết kế hữu ích trong nhiều tình huống, nhưng có nhiều trường hợp tôi có thể tạo phiên bản chuyên biệt hơn được tùy chỉnh để tận dụng các tính năng và hạn chế của nền tảng hiện tại của tôi. Nếu ngôn ngữ không cung cấp một cách để mở và sửa đổi các lớp hiện có (ví dụ như bạn có thể trong Ruby), thì việc triển khai lại lớp/hàm/cấu trúc có thể là cách duy nhất để thực hiện.
Ví dụ: một hệ thống tôi đã sử dụng CPU MIPS đã nhanh chóng khi làm việc với các số 32 bit nhưng chậm hơn khi làm việc với các số nhỏ hơn. Tôi đã viết lại một số cấu trúc dữ liệu và chức năng để sử dụng các số nguyên 32 bit thay vì các số nguyên 16 bit và cũng chỉ ra rằng các trường được căn chỉnh với các ranh giới 32 bit. Kết quả là một sự gia tăng tốc độ đáng chú ý trong một đoạn mã đã bị tắc nghẽn các phần khác của phần mềm.
Điều đó đang được nói, đó không phải là một quá trình tầm thường. Cuối cùng tôi phải sửa đổi mọi chức năng sử dụng cấu trúc đó và cuối cùng tôi cũng phải viết lại một vài chức năng thư viện chuẩn. Trong trường hợp cụ thể này, lợi ích lớn hơn công việc. Tuy nhiên, trong trường hợp chung, thường không đáng để gặp rắc rối. Có một tiềm năng lớn cho các vấn đề khó gỡ lỗi, và nó hầu như luôn hoạt động hơn. Trừ khi bạn có các yêu cầu hoặc hạn chế cụ thể mà các cấu trúc/lớp học hiện tại không đáp ứng, tôi khuyên bạn không nên triển khai lại chúng.
Như Michael đề cập, thực sự hữu ích khi biết cách để triển khai lại cấu trúc ngay cả khi bạn không bao giờ làm như vậy. Bạn có thể tìm thấy một vấn đề trong tương lai có thể được giải quyết bằng cách áp dụng các nguyên tắc và kỹ thuật được sử dụng trong các cấu trúc dữ liệu hiện có.
như kết hợp truy cập ngẫu nhiên của ArrayList cùng với add() và iterator.remove() của LinkedList để nhận giải pháp hiệu quả hơn cho nhân viên bán hàng du lịch? – Jason
ví dụ ... nhưng xin đừng quên, rằng việc biết cách tạo ra một triển khai thực sự tốt không phải là dễ dàng như nó trông giống như. Bạn có thể muốn ghi nhớ nhiều điều - hiệu suất, giới hạn phức tạp về giao diện, đồng thời và những thứ khác. Đây là một bài tập tốt, nhưng phần lớn thời gian, khi tình hình cho phép, tránh thực hiện lại thư viện chuẩn ngôn ngữ, hầu hết các lần, bạn có thể làm cho nó sai. Nếu bạn đang tìm kiếm các ví dụ trong Java, Bộ sưu tập của Google có một số triển khai cụ thể của riêng chúng, hãy kiểm tra chúng :) –