Programming

Buzzword Buster – Spaghetti Code

Definition: You have Spaghetti code when the flow in your application becomes so complex and tangled it resembles a bowl of spaghetti where the different execution paths are twisted and intertwined it’s hard to make out where they start and end. In software design, this is usually a danger associated with procedural programming or frequent, …

Buzzword Buster – Spaghetti Code Read More »

Buzzword Buster – Macaroni Code

Definition: You have Macaroni code when your application is chopped up into many little pieces and it’s difficult to see the big picture which may exist only in your (or someone else’s!) head. In software design, you can often end up with Macaroni code when you overuse/misuse/abuse abstractions, and it’s one of the main dangers …

Buzzword Buster – Macaroni Code Read More »

Buzzword Buster – IoC

Definition: Inversion of Control (IoC) refers to the inversion of the flow of control (the order in which individual statements, function calls, etc. are executed) in a software. You’ll often hear the term Hollywood principle being mentioned in the same breath as IoC, it simply states "Don’t call us, we’ll call you" which more or …

Buzzword Buster – IoC Read More »

DataContract Serialization by Reference using the IsReference Property

I came across this blog post the other day which introduced to me a cool addition to the DataContract serializer – the ability to generate XML by reference rather than by value: http://www.zamd.net/2008/05/20/DataContractSerializerAndIsReferenceProperty.aspx Not much for me to add to it really, just read the blog to see how it works.

Dealing with Circular References in WCF

Using entity classes in your application and WCF is complaining about the circular references between your classes? Well, I had the exact same problem not long ago, and I found this post on James Kovac’s blog about circular references and how to get around them: http://www.jameskovacs.com/blog/GoingAroundInCirclesWithWCF.aspx The key things to note from this post is …

Dealing with Circular References in WCF Read More »

The C# Dispose Pattern

The Dispose pattern is something we’ve all seen before, and it’s so tried and tested most of us (especially myself!) have been more than happy to apply without question. Whilst reading various blogs/articles I came across some differing opinion about this well known pattern and started to question what I had taken for granted myself. …

The C# Dispose Pattern Read More »

Memory leak in ADO.NET DataSet

Over the last couple of years, there have been many discussions/debates on DataSet vs Collections, and there was a very good article in MSDN magazine on just that: http://msdn.microsoft.com/en-gb/magazine/cc163751.aspx#S7 To add to the Dark Sides of DataSet, there is a little known feature/bug/annoyance in the DataTable.Select() method – every time you call the Select() method …

Memory leak in ADO.NET DataSet Read More »

Under the cover of i4o

I did some performance optimization work a little while back, and one of the changes which yielded a significant result was when I migrated some server side components (which are CPU intensive and performs a large number of loops) from using ADO.NET DataSets to using POCOs (plain old CLR object). The looping was then done …

Under the cover of i4o Read More »

Aspect Oriented Programming in .Net using PostSharp

I saw this article on D. Patrick Caldwell’s blog a little while back: http://dpatrickcaldwell.blogspot.com/2009/03/validate-parameters-using-attributes.html It was this article that got me interested in PostSharp and the possibilities that it can bring. PostSharp, in short, is a lightweight framework which introduces some Aspect-Oriented Programming into .Net. Some of the common usages I have seen include tracing …

Aspect Oriented Programming in .Net using PostSharp Read More »

By continuing to use the site, you agree to the use of cookies. more information

The cookie settings on this website are set to "allow cookies" to give you the best browsing experience possible. If you continue to use this website without changing your cookie settings or you click "Accept" below then you are consenting to this.

Close