Take the 2-minute tour ×
Programmers Stack Exchange is a question and answer site for professional programmers interested in conceptual questions about software development. It's 100% free, no registration required.

Possible Duplicate:
Best books on the theory and practice of software architecture?

In life it doesnt matter if you do one thing for 15 years. You will end up waking one day and asking stuff that are equal to "how do i walk?" :)

My specific question is that as a new entrant to C# and OOP i am stepping into many little "details" that need to be addressed.

Written a lot of code in VB.NET / cobol / simple php e.t.c surely does not help much into the OOP world...

So , even after reading entry level books for C# and watching some videos i recently found out about the "factory model design" for applications.

I would appreciate if any of you guys recomment some reading on application design architecture for further reading...

share|improve this question

marked as duplicate by William Shakespeare, Walter, Yannis Rizos Apr 9 '12 at 6:32

This question has been asked before and already has an answer. If those answers do not fully address your question, please ask a new question.

2 Answers 2

up vote 5 down vote accepted
share|improve this answer
    
i just got the second one. Thanks!!!! –  e4rthdog Apr 7 '12 at 20:05
    
No problem! :) Great to hear that someone took my suggestions. –  Billjk Apr 7 '12 at 20:07

SOLID is a very good starting point. These are the 5 basic principles of object oriented design, which state what follows:

  1. Single responsibility principle: your objects (classes) should have single responsibility. In other words, there should be only one reason to change given entity/class.
  2. Open/Closed principle: classes should be open for extension, closed for modification. Classes itselves shouldn't change much, yet they should provide extension points so their behavior can be altered/expanded by future implementators.
  3. Liskov substitution principle: each object should be replacable by its more specific subtype without altering correctness of program. As in, if something works with Mammal type, it should work just as good with Tiger and Panda types.
  4. Interface segregation principle: by Wiki "many client specific interfaces are better than one general purpose interface". This goes in pair with SRP and decoupled design - you should prefer multiple task-specific entities instead of single general-purpose one.
  5. Dependency inversion principle: you should design by contract, not by concrete implementation. Which often narrows down to having contracts (interfaces) passed arround as dependencies instead of their implementations (classes).

Reading up on those topics should probably spawn new questions and lead you to further research. Which should probably include (among others) following important concepts:

share|improve this answer
    
+1: Very good and clear answer! I have seen so many problems that would have simply been avoided if the Open / Close principle were applied consistently! –  Giorgio Apr 8 '12 at 8:22

Not the answer you're looking for? Browse other questions tagged or ask your own question.