2011-11-19 29 views
5

tôi đọc đoạn văn sau đây về kiến ​​trúc từ Microsoft .Net: Architecting Applications for the Enterprise, bởi Dino Esposito và Andrea saltarello:Sự khác biệt giữa lập trình khai báo và bắt buộc là gì?

Bất cứ khi nào bạn có một cách tiếp cận khai báo để mã hóa chứ không phải là một cách tiếp cận bắt buộc , bạn đang ủy thác một số trách nhiệm đối với một số lớp khác mã - một lớp mà bạn không kiểm soát hoàn toàn. Vì vậy, bạn đang cuối cùng hy vọng rằng công cụ trung gian sẽ hiểu bạn một cách chính xác và sẽ không gặp phải bất kỳ sự cố nào của chính nó trên đường đi. Trong việc phát triển phần mềm , ủy quyền cho bên thứ ba giúp phát triển nhanh hơn, nhưng bạn nên đảm bảo rằng người dùng có được chính xác những gì bạn muốn họ.

Điều này không có nghĩa là bạn không nên tin tưởng Visual Studio 2008 hoặc các sản phẩm dựa trên thuật sĩ tương tự. Vấn đề là cái gì đó hoàn toàn khác. Trong một hệ thống lớn, có khả năng được phát triển bởi một số nhóm, lập trình khai báo cổ điển không hoạt động. Bạn cần có trong bản trình bày một lớp mã quyết định nội dung sẽ hiển thị, ở đâu để cài đặt đọc và cách áp dụng chúng. Lập trình khai báo vẫn là một tùy chọn tuyệt vời, nhưng chỉ khi bạn viết động cơ và trình thuật sĩ.

Ai đó có thể giải thích cho tôi một cách đơn giản những gì chính xác là lập trình khai báo và bắt buộc?

+0

thấy điều này [SO bài] [1] cho một compaison của f # và C# [1]: http : //stackoverflow.com/questions/952318/what-are-the-benefits-of-using-c-sharp-vs-f-or-f-vs-c –

+0

@AshokPadmanabhan: Chỉ hiếm khi áp dụng, bởi vì nó về C# so với F #, và chỉ một phần về lập trình bắt buộc so với lập trình * chức năng * (là một tập con khá cụ thể của lập trình khai báo). – delnan

+0

Trình thuật sĩ và lập trình khai báo thậm chí có liên quan như thế nào? – CodesInChaos

Trả lời

2

Lập trình tuyên bố - Cần làm gì

Lập trình bắt buộc - Bạn muốn làm gì.

Lập trình tuyên bố yêu cầu nhà phát triển nói điều cần làm. Lập trình bắt buộc đòi hỏi các nhà phát triển phải xác định từng bước cách thực thi mã.

Ví dụ: LINQ trong C# là khai báo.

Đọc tại đây để biết thêm: http://www.informit.com/articles/article.aspx?p=1330154&seqNum=4

+1

LINQ là IMO lập trình hàm đơn giản. Databinding, xác nhận các thuộc tính vv sẽ là những gì tôi gọi declarative. – CodesInChaos

+0

@CodeInChaos - Lập trình hàm và khai báo không loại trừ lẫn nhau. Và LINQ là khai báo bởi vì bạn nói những gì bạn muốn, và hệ thống biết làm thế nào để có được nó, có thể là từ xml, sql, vv – manojlds

7

Tuyên bố - Tôi sẽ mô tả những gì tôi muốn bạn làm, bạn tìm ra (SQL, XSLT).

Bắt buộc - Tôi sẽ cho bạn biết chính xác phải làm gì, từng bước một (C#, Java).

+1

SQL có vẻ chức năng hơn khai báo với tôi. Tôi nghĩ XSLT chỉ là lập trình hàm với cú pháp xml, nhưng tôi không biết đủ về nó để chắc chắn. – CodesInChaos

+0

@CodeInChaos - Cả hai đều được mô tả là khai báo. Tôi chỉ cần nhìn vào các mục wikipedia cho cả hai, mà đồng ý với điều này. – Oded

7

Ví dụ.

lập trình khai báo:

<asp:DropDownList runat="server" DataSourceID="ObjectDataSource1" /> 
<asp:ObjectDataSource runat="server" ID="ObjectDataSource1" ItemUpdating="..." /> 

Imperative lập trình:

ObjectDataSource source = new ObjectDataSource(); 
source.ItemUpdating += ...; 

DropDownList list = new DropDownList(); 
list.ID = ""; 
list.DataSource = source; 
list.DataBind(); 
Các vấn đề liên quan