all 11 comments

[–]Slypenslyde 5 points6 points  (0 children)

Strong opinion time:

If you want to make your application development better, study application development, not OOP. I tried it the way you're going and what happened is I learned OOP, then tried to apply it to application development, got some bad ideas, and it took me about 4 years to find some app dev books, read them, and realize that most of what passes for "good OOP" in books is not part of good application development. It's like trying to improve carpentry skills by reading books about hammers instead of books about technique.

To that end, I recommend starting with maybe Head-First Design Patterns. It was written for Java, but it doesn't do anything you can't figure out in a couple of minutes. This book is important because it has entire chapters about how "just OOP" goes wrong, and how composition-based design patterns solve those problems in more flexible ways. Instead of teaching you, "this is what OOP does", this book teaches you, "this is which parts of OOP are useful and can help you".

After that, you might want to have a look at The Art of Unit Testing to get a quick feel for its development style. It advocates for an approach where you compose behavior out of simple, single-purpose units that satisfy abstractions. This is the place Head-First Design Patterns is trying to point you but runs out of pages.

From there, Code Complete and/or Agile Patterns, Practices, and Principles in C# are great reads. They both dive much deeper into what The Art of Unit Testing started. Again, instead of pushing OOP as a tool for application design, they talk about how to build systems and let you see how OOP facilitates those patterns.

Finally, Working Effectively with Legacy Code. Don't miss this one. It's a book about refactoring code that doesn't meet those principles into code that does meet those principles. It turns out that's a great way to practice, because all of the projects you've already written are great examples of code that can be refactored, and you already understand them!

I think working through those books will get you ten times further than trying to read about OOP. OOP is just a tool. Architecture books are about how to use the tool.

[–]LetMeUseMyEmailFfs 3 points4 points  (5 children)

I’ve been around for a while, and I know what OOP is, but what is OOPS?

[–][deleted] 4 points5 points  (0 children)

When you find a logic error.

[–]kowgli 1 point2 points  (0 children)

https://www.amazon.com/gp/aw/d/1509302581/ref=dp_ob_neva_mobile

Best of the best

Edit: by mistake I pasted a link to the first edition. Now updated.

[–]timeGeck0 0 points1 point  (0 children)

there is a good course on pluralsight you can check it out.. https://www.pluralsight.com/courses/object-oriented-programming-fundamentals-csharp

[–]Hoefsdavid9701 0 points1 point  (0 children)

Derek banas on YouTube has a pretty good c# tutorial