2010-05-08 44 views
7

Tôi hiện đang đọc Phân tích và thiết kế hướng đối tượng của Head First. Cuốn sách nói rằng để viết phần mềm tuyệt vời (tức là phần mềm được thiết kế tốt, được mã hóa tốt, dễ bảo trì, tái sử dụng và mở rộng), bạn cần phải làm ba việc sau:Viết Phần mềm tuyệt vời

  1. Đầu tiên, hãy đảm bảo phần mềm tất cả mọi thứ khách hàng muốn nó làm
  2. Sau khi hoàn thành bước 1, áp dụng các nguyên tắc và kỹ thuật hướng đối tượng để loại bỏ bất kỳ mã trùng lặp nào có thể bị trượt trong
  3. Sau khi bước 1 và 2 hoàn tất, sau đó áp dụng các mẫu thiết kế để đảm bảo phần mềm này có thể duy trì và tái sử dụng trong nhiều năm tới.

Câu hỏi của tôi là, bạn có làm theo các bước này và theo thứ tự này khi phát triển phần mềm tuyệt vời? Nếu không, bạn thường làm theo các bước nào để đảm bảo nó được thiết kế tốt, được mã hóa tốt, dễ bảo trì, tái sử dụng và mở rộng?

+0

Tôi muốn hầu hết mọi người không làm 1) và sau đó làm nhiều như 2 và 3 cho đến khi ông chủ đá ở đó một ** vì không đáp ứng thời hạn! –

+0

Tôi đăng ký triết lý nghề thủ công phần mềm. Tất cả những gì tôi muốn làm là mã hóa hết khả năng của mình, và tôi không có ý định đi vào quản lý. Vì vậy, tôi rất buồn khi nghe điều này. – Anthony

Trả lời

1

Tôi đã đọc cuốn sách này. Tôi nghĩ rằng có một số giải thích sai ở khắp mọi nơi.

  1. Thứ nhất, đảm bảo các phần mềm làm mọi thứ khách hàng muốn nó để làm

    Cuốn sách được nói chắc chắn rằng bạn hiểu các yêu cầu của khách hàng trước khi bắt đầu thiết kế.

  2. Khi bước 1 hoàn tất, áp dụng Object Oriented nguyên tắc và kỹ thuật để loại bỏ bất kỳ mã trùng lặp mà có thể đã bị trượt trong

    Cuốn sách nói đến thiết kế với nguyên tắc OO

  3. Khi bước 1 và 2 đã hoàn thành, sau đó áp dụng các mẫu thiết kế để đảm bảo phần mềm được duy trì và có thể sử dụng lại trong nhiều năm tới.

    Sử dụng mẫu thiết kế.

+0

+1 Cảm ơn rất nhiều cho jrm82 trả lời của bạn. Bước 1 của bạn ở trên có ý nghĩa hơn với tôi, nhưng trong chương 1 trang 14, cuốn sách nói "Khi phần mềm của bạn hoạt động, bạn có thể tìm kiếm bất kỳ mã trùng lặp nào có thể bị trượt vào và đảm bảo bạn đang sử dụng các kỹ thuật lập trình OO tốt ". Tôi cho rằng khi họ nói "phần mềm hoạt động", họ có nghĩa là, nghĩa đen, được biên dịch và chạy. Thứ hai, không nên bước 3 đến trước 2? Tôi có nghĩa là bạn nên làm OO trong khuôn mẫu? – Anthony

2

Tôi không đồng ý với # 1 vì hầu hết các phần mềm tuyệt vời đều cần một số lần lặp lại lớn để trở thành thực sự tuyệt vời. Chỉ khác cách để thực sự đạt đượC# 1 (trong lần thử đầu tiên) là sao chép một số phần mềm đã sẵn sàng khác. Nhưng để tìm ra điều gì đó mới mẻ và độc đáo (như tôi đã làm với ClipMate vào năm 1991), bạn hãy nỗ lực hết mình, sau đó phát hành nó cho mọi người để xem khách hàng phải nói gì về nó. Thông qua các chu kỳ lặp lại của việc đánh giá lại sản phẩm do kết quả đầu vào và tương tác của khách hàng, cuối cùng bạn sẽ đạt được phần mềm tuyệt vời.

+0

Không có nghĩa là bạn không nên đầu tư nhiều nỗ lực nhất vào nó. Tôi nghĩ rằng điểm của danh sách là nhiều kỹ sư dành quá nhiều thời gian vào việc làm cho mã của họ tinh khiết hơn là giải quyết vấn đề nó được viết để giải quyết. – Puppy

+0

Chờ đã, bạn đang nói cách * duy nhất để nhận phần mềm để làm những gì khách hàng cần làm là sao chép một số phần mềm tuyệt vời khác? Một cách hợp lý, điều này sẽ gợi ý rằng phần mềm tuyệt vời có * không bao giờ tồn tại (và tôi không nói bạn sai ở đó), vì phần mềm tuyệt vời không thể được tạo mà không cần sao chép phần mềm đã có. – MusiGenesis

+0

@DeadMG, chắc chắn, tôi đồng ý. Quan điểm của tôi là không đặt quá nhiều cổ phiếu trong những gì khách hàng muốn, hay đúng hơn, nghĩ rằng họ muốn. –

9

Định hướng đối tượng không phải là điều bạn nghĩ đến như một suy nghĩ - bạn bắt đầu với phân tích và thiết kế OO và tiến hành triển khai OO. Tôi nghi ngờ bạn có thể đã đọc sai hoặc hiểu sai cuốn sách. Tương tự như vậy với các mẫu thiết kế - chúng không phải là tiện ích bổ sung.

+0

+1 Luôn luôn bắt đầu từ một cơ sở lý thuyết vững chắc - _always_ này tạo ra kết quả cụ thể nhất. –

+0

Đó là những gì tôi nghĩ. Tôi chưa bao giờ đọc cuốn sách Head Start, nhưng tôi không thể tin rằng họ ủng hộ việc ném bất cứ điều gì ra khỏi đó, * sau đó * làm cho nó hướng đối tượng, và * sau đó * làm cho các công cụ OOP phù hợp với các mẫu thiết kế. – MusiGenesis

+0

+1 Cảm ơn bạn đã trả lời Neil. Tôi nên nói rằng tôi mới bắt đầu đọc chương 1 và đây là lần đầu tiên tôi đọc bất kỳ cuốn sách nào của Head First. Tuy nhiên, sau khi đọc lại 3 bước nêu trên, tôi không thể không đăng câu hỏi này vì tôi không thể tưởng tượng được một chương trình đáp ứng tất cả yêu cầu của khách hàng trước, sau đó tôi sẽ thay đổi mã để cải thiện nó bằng cách bao gồm thiết kế phù hợp các mẫu sau đó! Bây giờ công bằng, như tôi đã nói, tôi chỉ ở chương 1, và cuốn sách nhắm vào người mới bắt đầu, vì vậy tôi nghi ngờ sau này trong cuốn sách họ có thể sửa đổi các bước này. – Anthony

1

Tôi thường bắt đầu với thiết kế hướng đối tượng. Nó sẽ phải là một bẩn/hack khá nhanh chóng không cần # 2 và # 3. Vấn đề là, không để quá liều vào chúng.

+0

+1 Từ những gì tôi đã đọc cho đến nay, trọng tâm của cuốn sách là OOD. HOwever tôi đoán là người mới bắt đầu họ mong đợi chúng tôi để sản xuất mã trùng lặp ở đây và ở đó, đó là nơi giai đoạn 2 đến trong tôi đoán. – Anthony

1

Nếu tôi diễn giải chính xác, điều đó nghe có vẻ hơi lố bịch. Nhưng có lẽ ý định là đúng - 1) có thể được diễn giải là "ở lại tập trung", đặc biệt tập trung vào nhu cầu kinh doanh. Điều đó không có nghĩa là bỏ qua tất cả các nhu cầu mã hóa, nhưng nhận được sự cân bằng đúng. Có rất nhiều thay đổi mã và tái cấu trúc mà không nghi ngờ gì là cải thiện chất lượng của mã, nhưng chúng phải được tăng trọng so với thời gian, rủi ro và sự chậm trễ gây ra cho dự án. Là một nhà phát triển, tất cả quá dễ dàng để (trên) ưu tiên các thay đổi mã trên nhu cầu kinh doanh.

Áp dụng nguyên tắc OO sau đó có vẻ không thực tế - nếu bạn chưa sử dụng nguyên tắc OO, phần mềm thực hiện những gì khách hàng muốn xây dựng ngay từ đầu? Có lẽ đó là gợi ý để tái cấu trúc liên tục, KISS, và giảm thiết kế phía trước ủng hộ một chu kỳ phát triển lặp đi lặp lại.

Có một yếu tố của sự thật trong 3) - nhận dạng các mẫu sau khi phần mềm được xây dựng và tái cấu trúc để cô lập các phần tử lặp đi lặp lại phổ biến, nhưng tôi nghĩ đây là một hậu quả tự nhiên của chu kỳ phát triển lặp lại.

+0

+1 Có, họ chắc chắn có ý định tập trung vào những gì khách hàng muốn đầu tiên và quan trọng nhất và phân phối trên mọi thứ họ muốn, nếu không phần mềm sẽ không "tuyệt vời". Nhưng tôi phải thừa nhận, để lại mô hình thiết kế cho bước 3 lo lắng cho tôi, nhưng để công bằng tôi chỉ ở chương 1 và tôi nghi ngờ những cải tiến sẽ được đưa vào danh sách này để người đọc có lợi khi người đọc tiến hành đến chương 10. – Anthony

1

Phần mềm tuyệt vời đầu tiên và quan trọng nhất phải làm mọi thứ mà khách hàng cần để thực hiện và ít nhất hầu hết những gì khách hàng muốn. Đây không phải là điều tương tự. Ngoài ra nó là tốt hơn để bắt đầu với một cái gì đó nhỏ và đơn giản, và phát triển nó hơn là cố gắng để xây dựng tất cả mọi thứ trong một ứng dụng ginormous.

Đối với hai điểm còn lại, chúng có vẻ hơi bối rối. Tránh trùng lặp là một nguyên tắc thiết kế, nhưng chỉ một trong nhiều nguyên tắc. Tại sao đơn nó ra để xem xét đặc biệt?Thay vì (nói) Lập trình với giao diện? Hoặc Nói không hỏi? Hoặc Tránh cửa sổ bị hỏng?

Hmmmm ...

Khi tôi bắt đầu gõ câu trả lời này, tôi có ý định nói rằng tôi không nghĩ rằng bạn có thể trang bị thêm các kỹ thuật OO hoặc các mẫu thiết kế. Nhưng có suy nghĩ về nó một số chi tiết nó đã xảy ra với tôi rằng đây không phải là trường hợp. Nó là khá phổ biến trong TDD thực hành cho việc thực hiện ban đầu - điều đơn giản nhất mà được mã để vượt qua thử nghiệm - được khá thủ tục. Nhưng một khi mã vượt qua các thử nghiệm của nó thì có một chu kỳ tái cấu trúc áp dụng các mẫu thiết kế và tạo ra một thực hiện hướng đối tượng hơn.

+0

Tại sao một giải pháp OO không phải là điều đơn giản nhất? –

+0

+1 Cảm ơn bạn đã trả lời hữu ích APC. Cuốn sách là nhằm vào người mới bắt đầu để OOAD nhưng tôi nghi ngờ sau này họ sẽ sửa đổi này như là một kinh nghiệm học tập cho người đọc, nhưng tôi không thể biết chắc chắn cho đến khi tôi hoàn thành nó – Anthony

1

Phần mềm tuyệt vời dựa trên thiết kế tốt và lập trình sạch sẽ với mẫu thiết kế phê duyệt (MVC, thành phần quá trình ..).

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