Phần mềm ý kiến ​​là gì?


200

Tôi thường thấy mọi người nói rằng một số phần mềm nhất định là "rất có ý kiến" hoặc Microsoft có xu hướng viết các khung "không có ý kiến". Điều này thực sự có ý nghĩa gì?


Câu trả lời:


206

Nếu một khung có ý kiến, nó sẽ khóa hoặc hướng dẫn bạn cách làm việc của họ.

Ví dụ: một số người tin rằng một hệ thống mẫu không nên cung cấp quyền truy cập vào các phương thức và chức năng do người dùng xác định vì nó để hệ thống mở để trả về HTML thô. Vì vậy, một nhà phát triển khung có ý kiến ​​chỉ cho phép truy cập vào các cấu trúc dữ liệu. Theo thiết kế, phần mềm đang giới hạn và khuyến khích người thiết kế thực hiện mọi thứ theo cách của họ.

Một ví dụ khác ( lấy từ liên kết tín hiệu ) là wiki . Các nhà thiết kế của wiki đã có rất nhiều ý kiến. Họ nghĩ rằng HTML quá phức tạp đối với mọi người để viết, vì vậy họ đã nghĩ ra những gì họ cảm thấy là một cách tự nhiên hơn để cập nhật nội dung. Họ cũng loại bỏ thiết kế lạ mắt vì họ cảm thấy trọng tâm phải tập trung vào nội dung hơn là thiết kế.

Apple có ý kiến ​​mạnh mẽ khi thiết kế sản phẩm của mình.

Thiết kế phần mềm không có ý kiến ​​giống như PERL / PHP. Nó cho phép nhà phát triển và tin tưởng nhà phát triển đưa ra quyết định đúng đắn và đặt quyền kiểm soát nhiều hơn trong tay họ.

Tôi cũng sẽ đặt Microsoft trong cột không có ý kiến. Một ví dụ điển hình về khung Microsoft không được đề cập : .NET. Bằng cách mở CLR và thông số kỹ thuật, nó đã mở nó cho tất cả các loại ngôn ngữ và phong cách triển khai.


18
Tôi sẽ không nói "khóa bạn", thay vào đó nó không làm cho nó dễ dàng chuyển hướng khỏi con đường "vàng". Con đường vàng thường là thực tiễn tốt nhất, một cái gì đó nên làm việc cho hầu hết mọi người hầu hết thời gian.
dpan

5
Tôi đồng ý rằng khóa hơi mạnh, nhưng tôi sẽ loại bỏ ý nghĩa tiêu cực đó bằng cách lưu ý xem có bao nhiêu sản phẩm thành công.
cgp

32
Chà, rõ ràng là câu trả lời này có ý kiến;)
dpan

6
Một khung công tác là một khung được thiết kế theo cách mà người dùng sẽ trải nghiệm ít sự khác biệt nhất với khung đó khi khung được sử dụng theo cách không vi phạm các giả định của nhà thiết kế khung.
Cripplingsmurf

2
Tôi đồng ý với altCognito. .NET khuyến khích nhà phát triển kết hợp Mô hình và Chế độ xem trong ứng dụng WinForms bằng cách dễ dàng đưa logic kinh doanh vào các phương thức được tạo bởi sự kiện nhấp vào nút, chẳng hạn. Bằng cách này, Microsoft gián tiếp khuyến khích các nhà phát triển thiển cận khóa mã của họ vào khuôn khổ của họ. Một thiết kế sạch hơn sẽ thực thi hoặc khuyến khích các thực tiễn tốt hơn, như buộc phương thức nhấp vào nút để gọi một chức năng thứ hai bằng Mô hình logic, trong một mô-đun riêng biệt. Không phải là thiết kế sạch không thể đạt được trong .NET, mặc định nó không được khuyến khích.
Jared Updike

62

Phần mềm ý kiến ​​có nghĩa là về cơ bản có một cách ( đúng cách ™) để làm mọi thứ và cố gắng làm khác đi sẽ rất khó khăn và bực bội. Mặt khác, thực hiện mọi thứ đúng cách ™ có thể giúp phát triển phần mềm rất dễ dàng vì số lượng quyết định mà bạn phải đưa ra giảm đi và khả năng của các nhà thiết kế phần mềm tập trung vào làm cho phần mềm hoạt động được tăng lên. Phần mềm ý kiến ​​có thể là tuyệt vời để sử dụng, nếu được thực hiện tốt, nếu vấn đề của bạn ánh xạ vào giải pháp độc đáo. Nó có thể là một nỗi đau thực sự để giải quyết những phần của vấn đề của bạn mà không ánh xạ lên các công cụ được cung cấp. Một ví dụ ở đây sẽ là Ruby on Rails.

Phần mềm không có ý kiến, mặt khác, để lại rất nhiều tính linh hoạt cho người dùng (nhà phát triển). Nó không đăng ký một phương pháp giải quyết vấn đề, nhưng cung cấp các công cụ linh hoạt có thể được sử dụng để giải quyết vấn đề theo nhiều cách. Nhược điểm của điều này có thể là do các công cụ rất linh hoạt, có thể tương đối khó để phát triển bất kỳ giải pháp nào. Nhiều hơn nữa giải pháp có thể phải được mã hóa bằng tay bởi người dùng (nhà phát triển) vì khung không cung cấp đủ trợ giúp. Bạn cũng phải suy nghĩ nhiều hơn về cách cung cấp giải pháp và các nhà phát triển tầm thường có thể kết thúc bằng các giải pháp kém hơn so với việc họ đã mua vào một số phần mềm gây tranh cãi. PERL có lẽ là ví dụ kinh điển của phần mềm không có ý kiến.

Lý tưởng của tôi là một khuôn khổ không quan điểm, nhưng một khuôn khổ với những quy ước mạnh mẽ. Tôi sẽ đặt ASP.NET MVC trong danh mục này. Trong thực tế, tất cả các phần mềm đều được đánh giá ở một mức độ nào đó (mặc dù có lẽ không phải PERL). MVC có các quy ước mạnh mẽ trong việc lựa chọn mô hình nhưng cung cấp nhiều cách khác nhau để giải quyết các vấn đề trong các quy ước đó. Một số trong những cách thậm chí có thể phá vỡ mô hình. Được sử dụng một cách chính xác, tuy nhiên, theo các quy ước phát triển trong một khung như vậy có thể là một niềm vui thực sự.


22

Về cơ bản, phần mềm hoạt động theo cách mà các tác giả của nó nghĩ rằng nó nên hoạt động, thay vì cố gắng làm hài lòng tất cả mọi người. Điều đó có nghĩa là nhiều người sẽ không thích nó, nhưng những người sẽ thích nó.

Rails có lẽ là ví dụ điển hình của một khung có ý kiến: bạn làm mọi thứ theo cách của họ, và mọi thứ đều suôn sẻ. Nếu bạn không, bạn đang đau. Nhưng điều đó không sao - nếu bạn không muốn làm mọi thứ theo cách của họ, bạn không muốn sử dụng Rails.


1
Tôi đồng ý với điều này .... Tôi có một phần mềm bị mờ ... và nó bị mờ vì đó là dự án thú cưng nhỏ của tôi ... Tôi không biết nó sẽ được chấp nhận rộng rãi ... một số người thích nó, những người khác phàn nàn .. nhưng tất cả đều hiểu đó là dự án thú cưng của tôi
TimothyP

8

Để cân bằng, tôi sẽ cung cấp một mô tả (khá quan điểm) có lợi hơn cho cách tiếp cận có ý kiến ​​(ngược lại với một số câu trả lời khác).

Các khung ý kiến ​​cung cấp một "con đường vàng", được cho là cách thực hành tốt nhất cho hầu hết mọi người và hầu hết các kịch bản (trong mắt các tác giả).

Tuy nhiên, điều này không nhất thiết có nghĩa là khóa. Nó có nghĩa là nó có thể đòi hỏi một số nỗ lực thêm để làm những việc khác nhau.

Các khung ít quan tâm hơn cung cấp một số tùy chọn khác nhau và tùy thuộc vào bạn để quyết định.

Các khung ý kiến ​​thường loại bỏ gánh nặng từ nhà phát triển để phát minh lại bánh xe hoặc suy nghĩ lại cùng một vấn đề và do đó giúp tập trung vào vấn đề thực sự trong tay.

Trong thế giới nguồn mở, bạn có thể tìm thấy nhiều khung công tác đang cạnh tranh, vì vậy bạn vẫn có một sự lựa chọn. Bạn chỉ cần chọn con đường vàng của riêng bạn.


1
+1, Cảm thấy giống như các ứng dụng doanh nghiệp đề cập của bạn. Siebel có một con đường vàng không dễ bị phá vỡ, mặc dù nó có thể được thực hiện và tôi đã làm việc trong một nhóm đôi khi đã làm. Nó có thể giúp phát triển nhanh hơn vì bạn không phải phát triển các yếu tố UI, lưu trữ dữ liệu và logic kinh doanh mọi lúc.
J. Polfer

5

Phần mềm ý kiến ​​được xây dựng và thiết kế theo cách mà nó giúp bạn dễ dàng thực hiện mọi việc theo một cách nhất định. Nó ủng hộ các mẫu thiết kế nhất định hơn các mẫu khác. Trong quá trình đó, nó làm cho khó đi chệch khỏi phong cách phát triển phần mềm mà nó được phát triển. Một cách khác để đặt nó là nó ủng hộ "Công ước về cấu hình". tức là các tùy chọn cấu hình rất hạn chế vì phần mềm đảm nhận nhiều khía cạnh cấu hình. Phần mềm ý kiến ​​thường nhanh hơn để làm chủ một khi các giả định được hiểu.

Mặt khác, phần mềm không được khuyến khích đưa ra một vài giả định. Và kết quả là, các khung phát triển phần mềm / phần mềm không được chú ý thường có nhiều tùy chọn cấu hình. Một nhà phát triển thường phải đưa ra nhiều quyết định liên quan đến các khía cạnh khác nhau của phần mềm. Thông thường, các công cụ khác nhau được phát triển để làm cho việc xử lý các tùy chọn khổng lồ này dễ dàng hơn. vd


5

tl; dr :

  • Ý kiến : ví dụ: Ruby on Rails . Có một cách đặc biệt ưa thích để làm mọi việc, và bạn nhận được rất nhiều sự hỗ trợ trong việc thực hiện theo cách đó. Làm những việc khác theo cách khác là khó, hoặc đối với một số hệ thống là không thể (Cassandra xuất hiện trong tâm trí).
  • Không có ý kiến : ví dụ Perl 5 . Bạn có thể làm bất cứ điều gì bạn thích, bất kỳ cách nào bạn thích, theo bất kỳ phong cách nào. Tất cả các phong cách đều mở, hợp lệ và được hỗ trợ.

3

Rất nhiều người đang tham khảo ASP.NET MVC như là một khung "không được đề cập" và tôi chỉ muốn cân nhắc với một vài suy nghĩ về điều đó.

Đúng là ASP.NET MVC không bắt buộc quá nhiều; bạn có thể sử dụng bất kỳ giải pháp kiên trì nào bạn thích, có thể là Linq-to-SQL, ADO.NET Entities, NHibernate, v.v.

Mặt khác, khung công tác MVC có xu hướng ủng hộ "quy ước về cấu hình", để trích dẫn Phil Haack, trong đó gợi ý rất nhiều về mô hình được xác định trước để định vị bộ điều khiển, khung nhìn, mô hình và mã khác. Mặc dù bạn có thể thay đổi hành vi này, nhưng việc bơi theo dòng chảy sẽ dễ dàng hơn và đối với hầu hết mọi người, không có vấn đề gì khi làm điều đó.

Ngoài ra xung quanh ASP.NET MVC còn có rất nhiều người có quan điểm, mà tôi thấy dẫn đến rất nhiều hướng dẫn thiên vị đòi hỏi phải bao quát, ví dụ thử nghiệm đơn vị và tiêm phụ thuộc; Tôi là tất cả để kiểm tra tốt và phân tách các mối quan tâm, nhưng tôi nhận thấy rằng các chủ đề như vậy bị đẩy xuống cổ họng một chút, thường đi trước để bao quát những điều cơ bản hữu ích hơn.

Một lần nữa, tôi phải thừa nhận rằng trong các lĩnh vực đó, khung công tác hoàn toàn mở để áp dụng bất kỳ giải pháp thử nghiệm đơn vị nào bạn muốn, cũng như bất kỳ khuôn khổ tiêm và phụ thuộc nào bạn muốn sử dụng, vì vậy tôi đoán rằng nó cung cấp một ví dụ khác về tính linh hoạt, ngay cả trong "bash bible" của thử nghiệm đơn vị, vv dường như đang diễn ra.


2

Đó là số lượng các công ước được thực hiện trong một khung hình và số lượng quyết định đã được đưa ra.

Ví dụ, nếu có 5 (hoặc nhiều hơn) các cách khác nhau để gửi dữ liệu biểu mẫu cho một hành động của bộ điều khiển (đó là trường hợp trong ASP.NET MVC), thì khung có vẻ khá "không có ý kiến" - quyết định được đưa ra gửi bạn

Tuy nhiên, nếu khung cho phép (thông qua vô hiệu hóa trực tiếp các cách khác hoặc bằng cách khuyến khích mạnh mẽ) chỉ một cách để thực hiện điều đó (đó là trường hợp với Fubu MVC), bạn có thể nói rằng quyết định đã được đưa ra bởi khung , do đó làm cho khung ý kiến.


1

Ví dụ bạn sẽ thấy rất nhiều tại thời điểm này là khung công tác ASP.NET MVC. Nó có thể mở rộng đáng kinh ngạc nhưng đó là sự sụp đổ của nó trong một số khía cạnh, không có thịt cho nó. Bạn muốn truy cập dữ liệu? Bạn sẽ phải tự viết nó. Bạn muốn một số AJAX đang diễn ra? Như trên.

Tuy nhiên, vì nó có khả năng mở rộng rất cao, nếu bạn xây dựng dựa trên nó, bạn có thể biến nó thành một khung công tác. Đây là những gì mà MVCContrib thích, họ cung cấp cho bạn các phương thức cụ thể để thực hiện những việc đó có nghĩa là bạn phải viết ít mã hơn.

Điều này không có nghĩa là nếu bạn muốn thoát khỏi ý kiến, thường có nhiều việc phải làm hơn là nếu bạn đang làm việc trên phiên bản vanilla. Đây là một kịch bản 80/20 mặc dù. Nếu bạn chọn đúng khung ý kiến ​​của mình, bạn sẽ chỉ muốn thoát khỏi các ý kiến ​​20% thời gian và bạn sẽ có năng suất cao trong 80% thời gian khác.


ASP.NET MVC dường như phù hợp một cách tự nhiên với khung công tác ASP.NET AJAX và thậm chí bao gồm các bổ sung dành riêng cho MVC cho thư viện đó, vì vậy tôi không đồng ý rằng việc lựa chọn triển khai Ajax là hoàn toàn không thiên vị. Ngoài ra, thư viện không yêu cầu cụ thể hoặc thậm chí đề xuất ue của jQuery, nhưng nó đóng gói nó, cử chỉ lén lút theo hướng đó trong khi nói, "nhìn này".
Cướp
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.