2009-02-20 23 views
5

Tôi đã đọc tất cả các cuốn sách về lý do tại sao để tạo ra một lớp và những thứ như "tìm kiếm danh từ trong yêu cầu của bạn" nhưng nó dường như không đủ. Các lớp học của tôi dường như làm tôi lộn xộn. Tôi muốn biết nếu có một số loại số liệu hoặc thứ gì đó mà tôi có thể so sánh các lớp học của mình và xem liệu có thiết kế tốt hay không. Nếu không, ai là tôn giáo nổi tiếng nhất của OO, nơi tôi có thể có được những lời khuyên thiết kế lớp học phù hợp?Desigining Proper Classes

+0

+1, tôi cũng muốn biết cũng – krebstar

Trả lời

2

nếu bạn đã quen thuộc với thiết kế cơ sở dữ liệu, đặc biệt là các khái niệm về bình thường, thì câu trả lời là đơn giản: một lớp dữ liệu tập trung nên đại diện cho một thực thể trong hình thức bình thường thứ ba

nếu đó không phải là hữu ích, hãy thử này thay vì:

  • một lớp là một tập hợp các yếu tố dữ liệu và các phương pháp hoạt động trên chúng
  • một lớp nên có một trách nhiệm đặc biệt, tức là nó sẽ đại diện cho một điều trong mô hình của bạn; nếu nó đại diện cho nhiều hơn một điều thì nó phải là nhiều hơn một lớp.
  • tất cả các phần tử dữ liệu trong một lớp phải được liên kết một cách hợp lý/có liên quan với nhau; nếu họ không, chia nó thành hai hoặc nhiều lớp
  • tất cả các phương pháp trong một lớp học nên hoạt động chỉ trên các thông số đầu vào của họ và các yếu tố dữ liệu của lớp - xem Law of Demeter

đó là về như xa như tôi có thể đi với lời khuyên trừu tượng chung (không viết một bài luận dài); bạn có thể đăng một trong các lớp của bạn để phê bình nếu bạn cần lời khuyên cụ thể

+0

@ [Celebrus]: cảm ơn bạn –

0

tôi nghĩ thiết kế Object là nhiều nghệ thuật vì nó là khoa học. Phải mất thời gian và thực hành để hiểu cách thiết kế các lớp học thanh lịch & sạch sẽ. Có lẽ nếu bạn có thể đưa ra một ví dụ về một lớp đơn giản bạn đã thiết kế mà bạn không hài lòng với người dùng SO có thể phê bình và đưa ra con trỏ. Tôi không chắc chắn có bất kỳ câu trả lời chung bên ngoài những gì bạn đã đọc trong các văn bản.

+0

, bạn đang sử dụng ngôn ngữ nào? mặc dù OOD là ngôn ngữ trung lập, sử dụng các tính năng ngôn ngữ cụ thể trong lớp học của bạn có thể làm cho nó sạch hơn. – Jason

0

Tôn giáo OO được kính trọng nhất mà cá nhân tôi biết là StackOverflow. Đặt tên lớp của bạn ở đây và tôi cho rằng bạn sẽ nhận được một số lượng đánh giá tốt.

+0

Tốt hay không tốt? – orbfish

0

Các lớp thường được sử dụng để mô hình hóa các khái niệm về miền sự cố. Một khi bạn có một vấn đề được xác định rõ (hay còn gọi là tập các ca sử dụng), bạn sẽ có thể xác định tất cả những người tham gia. Một tập con của những người tham gia sẽ là nội tại đối với hệ thống bạn đang thiết kế. Bắt đầu với một hộp đen lớn làm hệ thống của bạn. Hãy phá vỡ nó xuống, như và khi bạn có thêm thông tin. Khi bạn có một mức độ mà họ không còn có thể được chia nhỏ (thành các khái niệm trong lĩnh vực vấn đề của bạn), bạn bắt đầu nhận được các lớp học của bạn.

Nhưng sau đó, đây là chế độ xem chủ quan của một người không phải là guru. Tôi muốn đề nghị một chút muối vào thực đơn.

4

Tạo các lớp bắt đầu sạch sẽ và sau đó lộn xộn là một phần cốt lõi của OO, đó là khi bạn cấu trúc lại. Nhiều nhà phát triển cố gắng nhảy đến thiết kế lớp hoàn hảo ngay từ đầu, theo kinh nghiệm của tôi, điều đó là không thể, thay vào đó bạn vấp ngã, giải quyết vấn đề và sau đó refactor. Bạn có thể thu hoạch, các lớp cơ sở và giao diện khi thiết kế nổi lên.

+0

nếu bạn không biết cách thiết kế một lớp học tốt ở nơi đầu tiên, rất có thể là bạn cũng không biết cách cấu trúc lại lớp để làm cho nó tốt hơn ... ;-) –

+0

Đó là sự thật nhưng quan điểm của ông cũng đúng, và đã bị bỏ lỡ ở nơi khác. – orbfish

0

Số liệu? Không phải như vậy mà bạn tin tưởng họ.

Các lớp học của bạn có đang thực hiện công việc làm cho chương trình hoạt động và giữ cho nó có thể duy trì thông qua nhiều bản sửa đổi không?

Nếu có, bạn đang làm tốt.

Nếu không, hãy tự hỏi tại sao không, và sau đó thay đổi những gì không hoạt động.

2

Cố gắng tập trung vào hành vi thay vì cấu trúc. Đối tượng là các thực thể 'sống' với hành vi và trách nhiệm. Bạn bảo họ làm việc. Hãy xem cách tiếp cận CRC-card để giúp bạn lập mô hình theo cách này.

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