Vì bạn không phải là một lập trình viên chuyên nghiệp, tôi khuyên bạn nên gắn bó với sự đơn giản. Lập trình viên sẽ dễ dàng hơn rất nhiều khi lập trình viên lấy mã thủ tục, đã được mô đun hóa của bạn và biến nó thành OO sau đó, hơn là để họ sửa một chương trình OO được viết xấu. Nếu bạn không có kinh nghiệm, có thể tạo các chương trình OO có thể biến thành một mớ hỗn độn không giúp ích gì cho bạn hoặc bất cứ ai đến sau bạn.
Tôi nghĩ rằng bản năng đầu tiên của bạn, mã "thứ này - thứ kia" trong ví dụ đầu tiên là bản nhạc phù hợp. Đó là rõ ràng và rõ ràng những gì bạn muốn làm. Đừng lo lắng quá nhiều về hiệu quả mã, sự rõ ràng quan trọng hơn nhiều.
Nếu một đoạn mã quá dài, hãy chia nó thành các đoạn có kích thước cắn, mỗi đoạn có chức năng riêng. Nếu nó quá ngắn, hãy cân nhắc sử dụng ít mô-đun và sắp xếp nhiều hơn.
---- Bản thảo: Bẫy thiết kế OO
Làm việc thành công với lập trình OO có thể khó khăn. Thậm chí có một số người coi toàn bộ mô hình là thiếu sót. Có một cuốn sách rất hay tôi đã sử dụng khi lần đầu tiên học lập trình OO có tên Thinking in Java (bây giờ là phiên bản thứ 4). Cùng một tác giả có một cuốn sách tương ứng cho C ++. Thực sự có một câu hỏi khác về các lập trình viên đối phó với những cạm bẫy phổ biến trong lập trình hướng đối tượng .
Một số cạm bẫy rất tinh vi, nhưng có rất nhiều cách để tạo ra vấn đề theo những cách rất cơ bản. Ví dụ, một vài năm trước có một nhân viên thực tập tại công ty tôi đã viết phiên bản đầu tiên của một số phần mềm tôi được thừa hưởng và anh ấy đã tạo giao diện cho mọi thứ có thểmột ngày nào đó có nhiều triển khai Tất nhiên, trong 98% các trường hợp chỉ có một triển khai duy nhất, do đó, mã được tải với các giao diện không được sử dụng khiến việc gỡ lỗi rất khó chịu vì bạn không thể lùi lại một cuộc gọi giao diện, vì vậy cuối cùng bạn phải thực hiện tìm kiếm văn bản để triển khai (mặc dù bây giờ tôi sử dụng IntelliJ đã có tính năng "Hiển thị tất cả các triển khai", nhưng vào ngày trước tôi không có điều đó). Quy tắc ở đây cũng giống như đối với lập trình thủ tục: luôn luôn mã hóa một thứ. Chỉ khi bạn có hai hoặc nhiều thứ, hãy tạo ra một sự trừu tượng.
Một loại lỗi thiết kế tương tự có thể được tìm thấy trong Java Swing API. Họ sử dụng mô hình đăng ký xuất bản cho hệ thống menu Xoay. Điều này làm cho việc tạo và gỡ lỗi các menu trong Swing trở thành một cơn ác mộng hoàn toàn. Điều trớ trêu là nó hoàn toàn vô nghĩa. Hầu như không bao giờ có tình huống trong đó nhiều chức năng sẽ cần phải "đăng ký" để nhấp vào menu. Ngoài ra, đăng ký xuất bản là một misfire hoàn chỉnh ở đó bởi vì một hệ thống menu thường luôn được sử dụng. Nó không giống như các chức năng đang đăng ký và sau đó hủy đăng ký ngẫu nhiên. Việc các nhà phát triển "chuyên nghiệp" tại Sun tạo ra một sai lầm như thế này chỉ cho thấy việc các chuyên gia tạo ra những cú vặn vít hoành tráng trong thiết kế OO dễ dàng đến mức nào.
Tôi là một nhà phát triển rất chuyên nghiệp với nhiều thập kỷ kinh nghiệm trong lập trình OO, nhưng thậm chí tôi sẽ là người đầu tiên thừa nhận có rất nhiều điều tôi không biết và thậm chí bây giờ tôi rất thận trọng khi sử dụng nhiều OO. Tôi đã từng nghe những bài giảng dài từ một đồng nghiệp là một người nhiệt tình OO về cách thực hiện các thiết kế cụ thể. Anh ấy thực sự biết những gì anh ấy đang làm, nhưng thành thật mà nói tôi đã có một thời gian khó hiểu các chương trình của anh ấy bởi vì họ có các mô hình thiết kế tinh vi như vậy.