2008-09-18 32 views
5

Khi nói đến việc sử dụng các mẫu thiết kế, tôi đoán có ba loại cửa hàng. Những người không biết một mẫu nếu nó chạm vào mặt họ - chúng thường thích cách tiếp cận Ctrl-C/Ctrl-V để tái sử dụng mã. Những người dành hàng giờ mỗi ngày để tìm kiếm mã kế thừa của họ với hy vọng triển khai một mô hình tuyệt vời hơn - chúng thường dành nhiều thời gian hơn để tái cấu trúc mã của các chương trình đơn giản hơn bao giờ được chi tiêu trong một trăm năm bảo trì. Và cuối cùng, những người đi theo con đường trung gian bằng cách sử dụng các mẫu khi họ có ý nghĩa, và mã hóa bất cứ điều gì đến trước cho mã tiếp xúc tối thiểu.Các nguồn lực tốt nhất cho các mẫu thiết kế và cách sử dụng của chúng là gì?

Tôi tự hỏi liệu có ai đã khóa một cách tiếp cận tốt để kết hợp cân bằng việc sử dụng mẫu trong vòng đời phát triển phần mềm hay không. Ngoài ra, tài nguyên tốt nhất trên Web cho các mẫu, yếu tố thúc đẩy của họ là gì và sử dụng đúng cách?

Cảm ơn.

+0

Sẽ tốt hơn nếu bạn yêu cầu một tài nguyên cho mỗi câu trả lời. Hơn các câu trả lời đúng cách có thể được sắp xếp theo phiếu để tiết lộ tốt nhất. SO câu hỏi có nghĩa là để làm việc theo cách đó. –

Trả lời

6

Có rất nhiều 'mô hình' gia đình khác nhau trên mạng, nhưng dùng câu hỏi của bạn về rộng nhất của nó ...

tôi khuyên bạn nên: Organisational Patterns

  • Các Hillside Nhóm

    • Jim Coplien của wiki
    • Kevlin Henney của site có rất nhiều liên kết tuyệt vời & giấy tờ

    ngoại tuyến (yêu thích của tôi):

    ngoại tuyến (phổ biến):

    • GOF Design Patterns
    • Fowler của Refactoring: Cải thiện thiết kế của Bộ luật hiện tại
  • 0

    Tôi nghĩ rằng có chứa thông tin tài nguyên web tốt nhất về mô hình và refactoring - http://sourcemaking.com

    +0

    Trang web này xây dựng trên các mẫu được liệt kê trong cuốn sách GoF. Trong khi đây là cuốn sách được biết đến rộng rãi nhất về các mô hình thì thường không được coi là đã thực hiện một dịch vụ cho chất lượng phần mềm hay chuyển động mẫu. –

    0

    Định nghĩa và câu trả lời ban đầu là nguồn gốc của khái niệm, trong Design patterns. Cuốn sách này đề cập đến khái niệm này ở cấp độ rất gần, thay vì quản lý nói rằng đã thâm nhập vào khu vực. Quan điểm của họ là các mẫu thiết kế chỉ là tên cho các thành ngữ phổ biến; họ liệt kê một số và biện minh cho vị trí của họ.

    Chúng tránh kiểu "Tôi nên sử dụng mẫu thiết kế nào", thay vì xử lý sự cố là "Tôi có tự nhiên bước vào một khu vực nổi tiếng không? Nếu có, người khác có thể giúp tôi không?". Các mẫu thiết kế, với tôi, không giống như các thành phần prefab mà bạn dán lại với nhau để tạo ra một giải pháp. Chúng chỉ là kho lưu trữ hướng dẫn khi bạn bắt gặp một tình huống tương tự như một người khác đã phản đối, và đặt tên để cho phép mọi người tham khảo các tình huống chung trong cuộc trò chuyện.

    4
    +0

    Trang web này mô tả chi tiết các mẫu được liệt kê trong sách GoF. Trong khi đây là cuốn sách được biết đến rộng rãi nhất về các mô hình thì thường không được coi là đã thực hiện một dịch vụ cho chất lượng phần mềm hay chuyển động mẫu. –

    1

    Tốt sử dụng các mẫu phụ thuộc vào kiến ​​thức ge và kinh nghiệm; không có công thức cho nó. Một điều tốt cần làm là có một người có kinh nghiệm áp dụng các mô hình một cách thận trọng để thường xuyên xem xét mã của mọi người khác trong nhóm để đảm bảo họ không lạm dụng hoặc lạm dụng các mẫu thiết kế. Họ không phải là công thức nấu nướng trước khi nướng - họ cần kỹ năng để áp dụng hiệu quả và điều đó phải được học.

    Tiếp xúc đầu tiên và tốt nhất của tôi với các mẫu thiết kế là Portland Pattern Repository.

    1

    Mọi người đều sử dụng các mẫu mọi lúc. Họ chỉ có thể không biết điều đó. Ngay cả một điều đơn giản như 'lặp qua danh sách' là một mẫu.

    Tôi nghĩ cách tốt nhất để kết hợp các mẫu vào chu kỳ làm việc của bạn là chỉ sử dụng chúng và tham khảo chúng theo tên khi thảo luận và khi nhận xét mã của bạn. Hy vọng rằng, điều này sẽ dẫn đến sự lan truyền của kiến ​​thức.

    Vì vậy, ví dụ: bạn đã nhận thấy rằng những gì bạn đang làm là rất phù hợp với Observer. Bạn nói với đồng nghiệp của bạn "Này, việc này sẽ thực sự dễ dàng nếu chúng ta biến đối tượng này thành Observer, và đối tượng này là đối tượng của nó."

    Hoặc đồng nghiệp của bạn sẽ hiểu ngay lập tức - đó là mô hình tiết kiệm thời gian - hoặc bạn có thể giáo dục họ, và lần sau khi bạn đề cập đến Observer họ sẽ hiểu ngay lập tức.

    Và đồng thời, bạn đang truyền bá kiến ​​thức và họ sẽ phát hiện cơ hội sử dụng các mẫu mới mà họ đã học được từ bạn. Điều này đi cả hai cách của khóa học. Lần tới có thể là họ dạy bạn một mẫu mới.

    Tất cả điều này phụ thuộc vào đồng nghiệp của bạn không phải là kiểu người gật đầu và giả vờ hiểu điều gì đó khi họ không làm. Bạn cần họ nói "Này, bạn đã đề cập Observer, tôi không nghĩ rằng tôi biết đó là gì."

    0

    Mẫu thiết kế vui nhộn ở chỗ bạn chỉ biết sử dụng mẫu khi bạn hiểu đầy đủ về mẫu áp dụng. Những thứ như Chiến lược, Observer, Iterator bạn có thể, sau khi thực hành ít, sử dụng mà không suy nghĩ quá khó.Nếu bạn đang ở trong C# bạn sử dụng Iterator tất cả các thời gian (IEnumerable ...) mà không cần suy nghĩ của nó như là một mô hình.

    Theo tôi, các mẫu đơn giản này là các mẫu tốt nhất. Bạn đã có một công việc để làm, và cố gắng để shoehorn vấn đề của bạn thành một mẫu khác khi nó không khá phù hợp là một sự lãng phí thời gian của bạn, và kết quả trong mã xấu.

    Lời khuyên của tôi là xem sơ đồ uml cho mẫu và nếu nó khá đơn giản, hãy thử và tìm hiểu nó đủ rõ để bạn có thể nhớ lại sau. Một mẫu với một hợp đồng đơn giản có thể hữu ích hơn thường xuyên hơn.

    1

    Tôi là một người hâm mộ lớn của bộ truyện và đã đọc nhiều sách của họ, vì vậy tôi khuyên bạn nên Head First Design Patterns. Bạn có thể đọc nó trực tuyến qua số điện thoại Safari Bookshelf của O'Reilly, nhưng bản in ra giấy cũng có kèm theo một áp phích mẫu tuyệt vời.

    0

    Tôi sẽ sử dụng Mẫu thiết kế của Gang of Four để tự đặt mình

    0

    Tôi đồng ý với các tham chiếu này, nhưng không thân thiện với người mới. Để các mẫu thiết kế học tập bắt đầu nhanh một cách dễ dàng:

    Head First : design pattern

    Sau đó, bạn có thể kiểm tra những cuốn sách tiên tiến hơn một khi bạn nhận được bức tranh lớn (rất nhiều ví dụ thực tế ;-))

    2

    Việc sử dụng "mô hình" phụ thuộc ở một mức độ cao từ

    1. ngôn ngữ sử dụng
    2. mục tiêu một muốn đạt được.

    Mẫu thiết kế có thể được đặt tên được đánh giá cao bằng các ngôn ngữ như C++, Java và các loại tương tự. Chúng ẩn tính không linh hoạt giới thiệu với tất cả các loại vấn đề đánh máy. Dưới đây là một liên kết về mẫu nào "tồn tại" trong các ngôn ngữ ít hạn chế hơn: http://norvig.com/design-patterns/

    Ví dụ khác là định hướng lập trình theo khía cạnh, trong đó mọi thứ có thể được "giới thiệu" bằng ngôn ngữ không được thiết kế cho nó.

    Triết lý đằng sau các công cụ đã sử dụng cũng có ảnh hưởng lớn. Chỉ cần so sánh hãy nói các chương trình và giải pháp PHP hoặc Visual Basic trung bình trong Smalltalk, Common Lisp, Haskell và những thứ tương tự.

    Các yếu tố cú pháp cũng có tác động lớn. Bạn sẽ thấy tấn các vòng tương tự hãy nói trong C, C++ (iterators) nhưng nếu bạn nhìn vào languags có hỗ trợ cho các hàm bậc cao hơn, bạn sẽ chỉ tìm thấy một vài vòng lặp.

    Sau đó, bạn phải xem những người cách làm lập trình truy cập, từ dưới lên hoặc từ trên xuống, tăng trưởng từng phần hoặc xây dựng Pyramides, hoặc bất kỳ sở thích cá nhân khác

    tôi khuyên bạn nên đọc các liên kết đã đề cập, và sau đó kiểm tra việc triển khai trong " khác nhau "ngôn ngữ ....

    Kính trọng Friedrich

    1

    Tôi không thể đồng ý hơn với nhận xét ở trên. Tôi sử dụng các mẫu thiết kế mà tôi có thể nhưng luôn dựa vào phần còn lại của nhóm để thực sự hiểu được lợi ích của một mẫu cụ thể. Nếu không, bạn kết thúc với mã xấu xí và một wrapper nhẹ mà hơi giống với mô hình.

    Là một bên http://www.developer.com có một vài bài viết mỗi tháng liên quan đến các mẫu thiết kế và ứng dụng của chúng. Chúc may mắn!

    Các vấn đề liên quan