Từ vẻ ngoài của câu hỏi về codereview mà bạn đã hỏi, bạn đang ở giai đoạn lạm dụng nó. Tôi nghĩ đó là một vấn đề khá phổ biến trong số những người khám phá ra tầm quan trọng của thiết kế tốt.
Nó thực sự là một bước tự nhiên và thậm chí có thể cần thiết với bất kỳ kỹ năng nào bạn chọn. Khi bạn bắt đầu học một cái gì đó, bạn càng nâng cao kiến thức về một kỹ năng và bạn càng áp dụng nó, kết quả của bạn càng tốt và dường như bạn đang đi thẳng để thành thạo. Vấn đề là, mục tiêu mới của bạn không phải là chất lượng kết quả của bạn, mà là bạn đã tích lũy được bao nhiêu kiến thức về kỹ năng của mình.
Làm chủ thực sự một kỹ năng liên quan đến sự hiểu biết khi nào nên sử dụng nó và khi nào không. Lạm dụng kỹ năng đó có lẽ là cách duy nhất để phát triển sự hiểu biết như vậy. Chắc chắn, bạn có thể đọc về điều này, nhưng đọc không thay thế cho kinh nghiệm.
Đối với một điều, đọc về các mẫu thiết kế là một khởi đầu tồi tệ IMHO. Đọc về các nguyên tắc thiết kế OO, chẳng hạn như RẮN và GRASP là tốt hơn. Sau khi làm quen với chúng, nghiên cứu các mẫu thiết kế phổ biến là một ý tưởng tốt, bởi vì bạn sẽ thấy những nguyên tắc đó có thể được áp dụng như thế nào để hình thành các thành ngữ cụ thể.
Người ta khẳng định rằng khi các mẫu xuất hiện trong việc sử dụng ngôn ngữ, thì ngôn ngữ đó thực sự thiếu một tính năng. Trong khi tuyên bố này là rất triệt để, có rất nhiều sự thật trong đó. Do đó tôi sẽ đề nghị, bạn nhìn và chơi xung quanh với các ngôn ngữ khác để hiểu rõ hơn về các khái niệm bạn đang tìm kiếm và cũng để tìm hiểu về các khái niệm mới. Một danh sách rút gọn sẽ là Squeak, Ruby và Lisp.
Đối với Danh sách, đề xuất cá nhân của tôi là Cấu trúc và Giải thích các Chương trình Máy tính , đã dạy tôi rất nhiều về thiết kế, bằng cách cho tôi thấy người ta có thể tạo ra các giải pháp mạnh mẽ cho các vấn đề phức tạp như thế nào, ít hơn là trừu tượng rõ ràng và (de) sáng tác trong một cách từ trên xuống.
Vì vậy, đây là những gì tôi đề nghị:
- viết mã (và cố gắng hiểu điều gì làm cho nó xấu)
- đọc mã (và cố gắng hiểu những gì làm cho nó tốt)
- trao đổi kiến thức với người khác. đưa ý tưởng của bạn để thử nghiệm.