While a well implemented Objected Oriented code is a hallmark of a good program, a poor implementation of the same could lead to utter chaos as the project progresses. Object Oriented Abusers are a particular genre of Code Smells which refers to incorrect or incomplete implementation of Object Oriented Concepts. Switch Statements Switch Statements are … Continue reading Code Smells : Object Oriented Abusers
Month: February 2018
Code Smells : Bloaters (Primitive Obsession, Long Parameter List, Data Clumps)
Primitive Obsession If there is a code smell I often misses, then it has to be Primitive Obsession. Quite honestly, I have been guilty of falling for Primitive Obsession more than once. This particular type of Code Smell refers to the tendency of Developers to use primitive types instead of small objects for stimulating certain … Continue reading Code Smells : Bloaters (Primitive Obsession, Long Parameter List, Data Clumps)
Caliburn.Micro #006 : Event Aggregators & Window Managers
Consider the classic scenario when you need to show the currently logged in User Name in your main Window, once you have successfully logged in. The The login Window is supposed to be a Modal Dialog, and isn't remotely aware of the Label displaying Username in the Main Window. WPF handles Modal Dialogs and messaging … Continue reading Caliburn.Micro #006 : Event Aggregators & Window Managers
Code Smells : Bloaters (Long Methods, Long Class)
Code Bloats or Code Bloaters are probably the most common signs of code smells you can see in any branch of code. In fact, eradicating bloaters act as the first step towards refactoring your code. Bloaters are nothing but classes or methods that have grown excessively over a long time marking it difficult to work … Continue reading Code Smells : Bloaters (Long Methods, Long Class)
Command Query Separation(CQS)
One of the side effect of using a method out of a library (for which you do not have source code) is that you are not pretty sure if it changes state of a related object. And if it did, when you are least expecting them to, you might have more headaches than you could … Continue reading Command Query Separation(CQS)
Caliburn.Micro
Caliburn.Micro is a extremely lightweight MVVM Framework. This series provides an introduction/refresher to developing WPF applications with Caliburn.Micro 1. Caliburn.Micro: Introduction 2. Caliburn.Micro: Bindable Collections & Events 3. Caliburn.Micro: Events (Short Hand Syntax) 4. Caliburn.Micro:Bootstrapper with SimpleContainer 5. Caliburn.Micro: Bootstrapper with MEF 6. Caliburn.Micro: Event Aggregators & Window Managers 7. Caliburn.Micro: Bootstrapper with Unity 8. Caliburn.Micro: … Continue reading Caliburn.Micro
YAGNI Principle
We developers have a common problem - We tend to overthink and over engineer. We tend to over think into the future attempting to foresee some of the features that we might require in the project. But most often than not, those features might require a lot of changes resulting in technical debt, or not … Continue reading YAGNI Principle
Fail Fast Principle
There are 3 keys ways a developer usually approaches error handling in code. Ignore Fail Safe Fail Fast We have, at different point of writing code, used all three approaches. There are times when have good reasons to ignore a particular exception scenario, while at other times, we are opt for Fail Safe approach. Fail … Continue reading Fail Fast Principle
StarFish Retrospective
"At regular intervals, the team reflects on how to become more effective, then tunes and adjusts its behavior accordingly" - 12th Principle, Agile Manifesto It doesn't need any explanation why Retrospectives are important in any scrum team. Question is, how can we make Retrospective Sessions more effective. I was in conversation with a friend recently … Continue reading StarFish Retrospective
Mutation Testing
Even with TDD, the quality or coverage of the existing Unit Tests are always a concern for the developer. "Have I done enough ?" That's one question that haunts him throughout. Mutation Testing is a structural testing method that attempts to add more value to Unit Tests by aiding in identifying the 'misses' in Unit … Continue reading Mutation Testing