Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to build Object Oriented Skills? [closed]

Tags:

oop

Being a core developer for couple of years, coding applications seeing the class diagrams, sequence diagrams, I decided to improve my self, taking the next step of designing. As I'm an OO developer, I'm interested in improving my design skills.

For Example, I had a hard time designing a currency converter.

My questions to the SO:

  • Is it by experience the design skills can be acquired?
  • Will learning books/blog/material over internet etc help?
  • Is it that one needs the domain knowledge of the application being developed?
  • Knowing Design patterns, principles?
  • Studying 'Code Complete' book ?
  • Need to have Problem-solving skills?

In short, given a problem, I just want to solve it in Object-oriented way??

like image 554
jai Avatar asked May 08 '10 12:05

jai


1 Answers

You have to do bad OO design before you can do good OO design.

A fantastic project would be take your currency converter and slowly move the code to use OO concepts. OO is a creative process: there are no wrong answers, but worse and better do exist. Basically, when your code retains functionality and gets shorter/easier-to-read, it's better. When it gains flexibility without adding more code, that's better too. But it's a creative process. Use a version control system like GIT to be able to "undo" easily, try stuff out, and MAKE MISTAKES. OO design is a process.

  • Is it by experience the design skills can be acquired?

Yes.

  • Will learning books/blog/material over internet etc help?

Yes.

  • Is it that one needs the domain knowledge of the application being developed?

Yes, but I think that knowing the domain too well can screw up good design. When working with Airline programmers, I noticed that the known, unquestioned abstractions ("ticket," "reservation") inhibited good OO design. Your OO model is not the real world model. It's a model for your program.

  • Knowing Design patterns, principles?

Yes, more is better, always.

  • Studying 'Code Complete' book ?

Lots of people say it's a great book. But, have you read Italo Calvino? Or Jorge Luis Borges? All kinds of books may help.

  • Need to have Problem-solving skills?

No. You get problem-solving skills by applying OO (or any other paradigm).

like image 144
Dan Rosenstark Avatar answered Oct 10 '22 01:10

Dan Rosenstark