Là mã khoa học một lĩnh vực đủ khác nhau để bỏ qua các tiêu chuẩn mã hóa phổ biến?
Không, không phải vậy.
Mã nghiên cứu thường bị "vứt bỏ" và được viết bởi những người không phải là nhà phát triển theo nền tảng, tuy nhiên thông tin học thuật của họ rất mạnh. Một số mã nghiên cứu tôi đã viết sẽ khiến tôi khóc . Nhưng nó đã làm việc!
Một điều cần xem xét là người gác cổng cho các dự án thúc đẩy những gì được bao gồm. Nếu một dự án lớn bắt đầu như một dự án mã học thuật / nghiên cứu, kết thúc hoạt động và bây giờ là một mớ hỗn độn, ai đó phải chủ động để cấu trúc lại nó.
Phải mất rất nhiều công việc để cấu trúc lại mã hiện tại mà không gây ra vấn đề. Đặc biệt là nếu nó ở tất cả các tên miền cụ thể hoặc không có bài kiểm tra. Bạn sẽ thấy OpenCV có một hướng dẫn phong cách rất toàn diện, ngay cả khi không hoàn hảo. Áp dụng hồi tố này cho tất cả các mã hiện có? Đó là .. không dành cho người yếu tim.
Điều này thậm chí còn khó khăn hơn nếu tất cả các mã đó hoạt động. Bởi vì nó không bị hỏng. Tại sao phải sửa nó?
Tuy nhiên, các dự án thịnh vượng, được duy trì và sử dụng rộng rãi!
Đây là câu trả lời, theo một nghĩa nào đó. Mã làm việc vẫn hữu ích và vì vậy nó có nhiều khả năng được duy trì.
Nó có thể là một mớ hỗn độn, đặc biệt là ban đầu. Một số trong những dự án này có thể bắt đầu như một dự án 1 lần mà "không cần phải sử dụng lại bao giờ và có thể bị vứt bỏ."
Cũng xem xét rằng nếu bạn đang thực hiện một thuật toán phức tạp, có thể có ý nghĩa hơn khi có các phương thức lớn hơn bởi vì bạn (và những người khác quen thuộc với khía cạnh khoa học) về mặt khái niệm có thể hiểu thuật toán tốt hơn. Công việc luận án của tôi liên quan đến tối ưu hóa. Có logic thuật toán chính là một phương thức dễ hiểu hơn đáng kể so với việc cố gắng tách nó ra. Nó chắc chắn đã vi phạm quy tắc "7 dòng trên mỗi phương thức" nhưng điều đó cũng có nghĩa là một nhà nghiên cứu khác có thể xem mã của tôi và hiểu nhanh hơn các sửa đổi của tôi đối với thuật toán.
Nếu việc triển khai này được trừu tượng hóa và được thiết kế tốt, tính minh bạch này sẽ bị mất đối với những người không lập trình .
Đối với người trả lời đồng nghiệp: Câu hỏi này đề cập đến cơ sở mã của các thư viện nguồn mở cho các nhiệm vụ chuyên sâu tính toán trong một hoặc nhiều lĩnh vực khoa học. Câu hỏi này không phải là về mã vứt đi. Vui lòng tạm dừng một lát để đảm bảo bạn nắm được mọi khía cạnh được tô sáng trước khi viết câu trả lời.
Tôi nghĩ mọi người thường có ý tưởng rằng tất cả các dự án nguồn mở đều bắt đầu, "hey tôi có một ý tưởng tuyệt vời cho một thư viện sẽ cực kỳ phổ biến và được sử dụng bởi hàng ngàn / triệu người khác" và sau đó mọi dự án đều xảy ra như thế.
Thực tế là nhiều dự án được bắt đầu và chết. Một tỷ lệ rất nhỏ các dự án "làm cho nó" đạt đến mức OpenCV hoặc VTK, v.v.
OpenCV bắt đầu như một dự án nghiên cứu từ Intel. Wikipedia mô tả nó là một phần của "một loạt các dự án." Bản phát hành không beta đầu tiên của nó là năm 2006, hoặc bảy năm sau khi nó được bắt đầu. Tôi nghi ngờ rằng mục tiêu ban đầu là các phiên bản beta có ý nghĩa, không phải là mã hoàn hảo.
Ngoài ra, "quyền sở hữu" của OpenCV đã thay đổi đáng kể. Điều này làm cho các tiêu chuẩn thay đổi, trừ khi tất cả các bên có trách nhiệm áp dụng các tiêu chuẩn chính xác giống nhau và giữ chúng trong suốt thời gian của dự án.
Tôi cũng nên chỉ ra rằng OpenCV đã xuất hiện trong vài năm trước khi Tuyên ngôn Agile rằng Clean Code lấy cảm hứng từ được xuất bản (và VTK gần 10). VTK đã được bắt đầu 17 năm trước khi xuất bản Mã sạch (OpenCV là "chỉ" 9 năm trước).