Jeremy Miller of CodeBetter.com recently posted about his experiences with Java.

The references to Visual UnSafe (SourceSafe) and tdate libraries in Java are particulary hilarious.
I personally use Eclipse the same company that create ReSharper for .NET.  (an invaluable tool for C# developer by the way).

The Interface Segregation Principle (ISP) - CLIENTS SHOULD NOT BE FORCED TO DEPEND UPON INTERFACES THAT THEY DO NOT USE

*This is the definition straight out of the Object Mentor article book.

Translation:  Avoid “fat” interfaces or interface pollution.  In other words, do not make your classes implement interfaces that have methods/properties the class does not need.  This is a code smell and should be an indicator that the interface should be split into two interfaces and each applied only as needed.

The example in the article (pgs 2-7) explains it all.

I had purchased the “Agile Principles, Patterns, and Practices in C#” (PPP) book by Robert C. Martin (aka Uncle Bob) at the beginning of August 2006 and began reading it, but soon began to think that a lot of it’s content was from the articles you can find on Object Mentor’s website (Uncle Bob’s company).  I stopped reading it.  I have read most if not all those articles already.  I had intended to go back to the book and articles and compare the differences and have not.

Object Mentor, mainly Michael Feathers (author of the VERY good book “Working Effectively with Legacy Software”), had visited the team that I’m currently about two years ago.  They had distributed mousepads that had the acronym SOLID on them.

S = Single Responsibility Principle (SRP)
O = Open/Closed Principle (OCP)
L = Liskov Substitution Principle (LSP)
I = Interface Segregation Principle (ISP)
D = Dependency-Inversion Principle (DIP)
 *Each link will go to the original articles on Object Mentor’s site.

Each one of these principle has it’s own chapter in the PPP book.

I have been racking my brain as to what ISP was.  I decided to pick up the book again tonight and have compared it to the article.  The book has made a GOOD number of additions/refactorings to the articles.

I recommend the PPP book to any developer who wants clean, testable, and extensible code.
The book has much more information than just these OOP principles.

I just recently finished reading the “A Journey with Domain Driven Design (and NHibernate)” series on Ben Scheirman’s blog.

It is a very good introduction to TDD, NHibernate, DDD, NUnit.

I’m personally trying to learn NHibernate.  I already practice the other items at my current position.

Ayende mentions the above blog and others to help a developer get started with NHibernate.

Comments

Chris Patterson: I really would like to see Ben roll this up into a PDF I can read on the toilet. I think it is a great series.

Will Gant: Looks like the link is dead now.

Will Gant: He changed the url scheme. http://benscheirman.com/2006/07/a-journey-with-nhibernate-part-1  http://benscheirman.com/2006/07/a-journey-with-nhibernate-part-2  http://benscheirman.com/2006/07/a-journey-with-nhibernate-and-ddd-part-3  http://benscheirman.com/2006/07/a-journey-with-domain-driven-design-and-nhibernate-part-4  http://benscheirman.com/2006/08/a-journey-with-domain-driven-design-and-nhibernate-part-5  http://benscheirman.com/2006/09/a-journey-with-domain-driven-design-and-nhibernate-part-6  http://benscheirman.com/2006/11/a-journey-with-domain-driven-design-and-nhibernate-part-7  http://benscheirman.com/2006/12/a-journey-with-domain-driven-design-and-nhibernate-part-8  http://benscheirman.com/2007/06/a-journey-with-domain-driven-design-and-nhibernate-part-9  New links, if that helps anyone.

Jason Meridth: Links fixed.  Will, thank you for the links.  Saved me a ton of time.

I’m currently studying up on the Castle Project.  It is currently scheduled for release in January of 2007, but the public API code is pretty much complete; it won’t change.

There is a good article on InfoWorld and I’ve found 2 others on CodeProject (1 2).  The second one from CodeProject talks about Castle on Rails.  I believe this is now called MonoRail, mimicing the Ruby on Rails Framework.  The article made it look VERY easy to setup a website with Monorail.  A co-worker recently mentioned he would try to setup a new site with the tool and see how it works out.  I may just do the same thing.

If you are not familiar with Inversion of Control, the first article from CodeProject and a recent article from MSDN are worth the read.  They highlight usage of the Windsor Container, the IoC control from the Castle Project.

Good IoC Explanations/Articles:(this will be updated throughout today)
Martin Fowler
Wikipedia
DevX

Open Source Inversion of Control Containers in C#:
StructureMap: written by Jeremy Miller, one of my favorite bloggers off CodeBetter.com.
Castle: discussed above
Spring.NET: another IoC container, based on the Java Spring Framework