Nói chung, tôi tránh phát minh lại bánh xe nếu chức năng tôi mong muốn, hoặc một cái gì đó gần đúng với nó, tồn tại trong thư viện tiêu chuẩn của ngôn ngữ tôi sử dụng.
Tuy nhiên, nếu tôi phải kết hợp các thư viện của bên thứ ba, thì đó là một cuộc gọi phán xét tùy thuộc vào mức độ sử dụng và đánh giá cao của thư viện. Ý tôi là, chúng ta đang nói về Boost hay Bob's Kick-ass String-Parsing Tools 1.0?
Ngay cả khi thư viện nói chung là nổi tiếng và được đánh giá cao trong toàn ngành, nó vẫn là một sự phụ thuộc của bên thứ ba . Các lập trình viên thường chú trọng đáng kể vào các ưu điểm của việc tái sử dụng mã, trong khi thường che giấu sự nguy hiểm của các phụ thuộc. Một dự án có quá nhiều sự phụ thuộc của bên thứ ba có khả năng sụp đổ trong thời gian dài khi nó dần dần phá hủy thành một cơn ác mộng bảo trì.
Vì vậy, tận dụng mã hiện có là tốt - nhưng phụ thuộc là xấu . Thật không may, hai tuyên bố này là bất hòa với nhau, vì vậy mẹo là cố gắng tìm sự cân bằng phù hợp. Đó là lý do tại sao bạn cần xác định các phụ thuộc chấp nhận được . Như tôi đã nói, bất cứ điều gì trong Thư viện tiêu chuẩn của ngôn ngữ rất có thể là một sự phụ thuộc chấp nhận được. Chuyển từ đó, thư viện được đánh giá cao trên toàn ngành công nghiệp cũng thường được chấp nhận (như Boost cho C ++, hoặc jQuery cho Javascript) - nhưng họ vẫn còn ít mong muốn hơn so với thư viện chuẩn vì họ làm có xu hướng ít ổn định hơn so với các thư viện chuẩn .
Đối với các thư viện tương đối không rõ, (ví dụ: tải lên mới nhất trên SourceForge) đây là những phụ thuộc cực kỳ rủi ro và tôi thường khuyên bạn nên tránh những điều này trong mã sản xuất, trừ khi bạn đủ quen thuộc với mã nguồn để tự duy trì chúng.
Vì vậy, nó thực sự là một hành động cân bằng. Nhưng vấn đề là chỉ cần mù quáng nói "Mã tái sử dụng tốt! Phát minh lại bánh xe xấu!" là một thái độ nguy hiểm. Lợi ích của việc tận dụng mã của bên thứ ba phải được cân nhắc với những bất lợi của việc đưa ra các phụ thuộc.