Đã có nghiên cứu về hiệu quả của OOP trong việc quản lý độ phức tạp của phần mềm chưa? [đóng cửa]


14

OOP thường được coi là một chiến lược hiệu quả để quản lý sự phức tạp trong phần mềm, trái ngược với lập trình thủ tục không OOP.

Đã có nghiên cứu nào thử nghiệm khái niệm này chưa? Có phải đã chứng minh rằng OOP thường giúp quản lý sự phức tạp trong các dự án lớn?


4
Mặc dù rất thú vị, IMHO, đo lường "độ phức tạp" và "hiệu quả" của các mô hình là một nỗ lực khó khăn và thiên vị. Mỗi chương trình là duy nhất, mọi nhà phát triển là duy nhất và thật khó để so sánh. Hơn nữa, năng suất phụ thuộc vào nhiều hơn một mô hình mà phụ thuộc vào các công cụ, hệ sinh thái, tài liệu học tập. Một nghiên cứu không thiên vị nên cho phép toàn bộ các nhóm sinh viên lập trình các yêu cầu giống nhau với ngôn ngữ và xem kết quả. Tuy nhiên, thậm chí họ có khả năng có kiến ​​thức trước khiến nó bị sai lệch. Tôi không biết về bất kỳ nghiên cứu nào như vậy.
dagnelies

Không phải nghiên cứu, nhưng một số lời tán gẫu hàn lâm: en.wikipedia.org/wiki/Object-oriented_programming#Criticism
Den

1
Đây là một câu hỏi mẹo vì OOP như được thực hiện trong ngành có xu hướng rất cấp bách. Vì vậy, chúng tôi đã chuyển từ các thủ tục chạm vào toàn cầu sang các phương thức sửa đổi các đối tượng sửa đổi các đối tượng khác sửa đổi các đối tượng khác; các tác dụng phụ có phần rõ ràng hơn nhưng vẫn còn nhiều hành động ở khoảng cách xa đang diễn ra. Mặt khác, khi bạn giảm thiểu tác dụng phụ và khiến mọi thứ trở nên bất biến, một số người sẽ cho rằng bạn đang lập trình chức năng.
Doval

2
Không có cách nào để thực sự đo lường nó - đó là một hiệu ứng lượng tử trong đó việc đo lường nó ảnh hưởng đến kết quả.
DeadMG

1
Để so sánh, người ta phải có một mô hình thay thế áp dụng cho các hệ thống lập trình rất lớn, được xây dựng bởi các lập trình viên về các kỹ năng thông thường (tức là không phải bởi một nhóm các chuyên gia hoặc các học giả hiện đại). Các hệ thống lớn có xu hướng liên quan đến mạng, cơ sở dữ liệu, cân bằng tải và dự phòng (tức là các máy không đáng tin cậy), trong số những thứ khác. Danh sách các vấn đề thứ hai chi phối bất kỳ cuộc tranh luận nào mà người ta có thể có đối với các mô hình ngôn ngữ lập trình.
rwong

Câu trả lời:


10

Tôi không biết về bất kỳ nghiên cứu nào với các phép đo định lượng. Như những người khác đã đề cập trong các bình luận cho câu hỏi của bạn, thực tế không thể đạt được điều đó. Tuy nhiên, có một số bài viết triết học cố gắng trả lời điều đó.

Bài viết yêu thích của tôi về chủ đề đó là Out of the Tar Pit của Ben Moseley & Peter Marks . Nó lý giải với các tuyên bố khác nhau từ các nguồn đáng kính về thiết kế hệ thống phức tạp đến kết quả khá thú vị.

Out of the Tar Pit kết luận rằng lập trình hàm thực sự là mô hình tốt nhất để hỗ trợ các giải pháp mà họ đang đề xuất. Điều này có ý nghĩa, bởi vì theo kinh nghiệm của tôi, các hệ thống OOP phức tạp trở nên rất gần với thủ tục theo thời gian và bắt đầu giống như OOP (chúng không có cú pháp và các thuộc tính khác, nhưng một luồng thực thi có thể trở nên khá giống nhau). Sự khác biệt thực sự đi kèm với mô hình khác nhau hoặc bằng cách kết hợp nó với OOP. Hiện tại, mô hình như vậy là lập trình chức năng mà cuối cùng có thể sử dụng được trong các ứng dụng kinh doanh phổ biến của các lập trình viên thông thường (vẫn đang ở đó).


5

Vâng đã có một số nghiên cứu. Đây là một: http://www.csm.ornl.gov/~v8q/Homepage/Papers%20Old/spetep-%20printable.pdf

Về cơ bản, nó kết luận rằng không có sự khác biệt có thể đo lường được giữa năng suất mã thủ tục và năng suất ngôn ngữ OO .... nhưng sự thật là, những loại câu hỏi này rất nhạy cảm với bối cảnh, không có nghiên cứu nào sẽ cho bạn biết bạn nên làm gì trong một tình huống nhất định .


Trong một thời gian dài đã có những nghiên cứu chỉ ra rằng việc đưa máy tính để bàn vào môi trường văn phòng không dẫn đến tăng năng suất.

@nocomprende bạn có lý do nào để tin rằng những nghiên cứu đó đã đưa ra kết luận sai không? Một PC từ năm 1989 được sử dụng bởi một nhân viên văn phòng trung bình vào năm 1989 hoàn toàn khác với một máy hiện đại được sử dụng bởi một công nhân hiện đại. Tương tự, việc áp dụng công nghệ đối tượng có thể hoặc không thể cải thiện theo thời gian.
Jørgen Fogh

1
@ JørgenFogh Tôi đoán rằng tôi đã đồng ý với tuyên bố rằng các nghiên cứu không phải lúc nào cũng cho thấy những gì dường như là lẽ thường. Các doanh nghiệp sẽ không bắt đầu sử dụng máy tính trong văn phòng nếu họ làm mọi thứ tồi tệ hơn. Mọi người sẽ không mất hàng thập kỷ để phát triển phương pháp OO nếu nó không giúp ích. Họ sẽ làm gì? Vâng, mọi người có thể sai, nhưng làm thế nào để bạn chứng minh nó kết luận theo cách này hay cách khác? Những gì nó đi xuống là: "Điều này có làm việc cho bạn ?"
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.