C# Static Code Analysis with NDepend

Have you heard about the “goto fail” fail? This is a security bug which was introduced by Apple in one of the iOS updates. Long story short, there was a piece of unreachable code which had to perform an important security check of a certificate. But it was unreachable. This is a huge defect in the software of this kind. Any meaningful static analysis [...]

By |2016-06-28T11:14:58+03:00April 24th, 2016|.NET, C#|1 Comment

Objects Equality in C#. Important Facts That You Should Know

Don’t forget that if you want to get my upcoming video courses with 50% discount, then fill the following  form. C# provides many ways to compare objects, not only to compare class instances, but also structures. Actually, there are so many ways, that it requires to put them in order. All those possible options of comparing confuse people in case of misunderstanding them and [...]

By |2016-04-26T16:47:23+03:00April 2nd, 2016|C#, CodeProject, .NET, Best Practices|0 Comments

Money Type as Value Object, or Don’t Rely on Primitive Types!

Primitive Types Obsession Problem Today I’m going to discuss the problem of using primitive types instead of abstractions. This problem was discussed in the blog of Mark Seemann. Read it, if you haven’t read it yet. In this post I’m going to talk about Money type as an abstraction instead of using decimal type for representing money-values. In the last project I’ve been participating [...]

By |2016-04-26T16:35:43+03:00March 17th, 2016|.NET, Best Practices, C#, Design, Refactoring|0 Comments

When Method Is Better Than Property?

That’s a well known question. Actually, I knew the difference between methods and properties long ago. Despite of that, recently I stumbled upon my own incorrect choice between those semantic constructions. That’s why I decided to write this post – in order to solidify the understanding of the difference between property and method. Method vs Property fail in BCL The most notorious fail of [...]

By |2019-01-11T11:17:18+03:00February 27th, 2016|Design, .NET, Best Practices, C#, CodeProject|0 Comments

Make Your Asynchronous C# Code Cancellable

When I was a newcomer I faced with a chunk of long-running code that didn’t support cancellation. I needed to cancel it somehow. Unfortunately, I had no access to that code, so I couldn’t modify it. I was struggling with the requirement to be able to cancel that code. I was thinking about the problem for two days as I remember and I couldn’t believe that it’s actually not possible to cancel random code. Yes, there is the Thread.Abort method presented since .NET 1, but it’s strongly not recommended to use it, because we can’t predict what will happen to the code which is going to be aborted. It’s even almost (or absolutely) impossible to write code which is reliable in case it is aborted by Thread.Abort, because it’s even not guaranteed that your finally-blocks will be executed. One will say that I’m talking about self-evident things, but I’ve heard many times from developers exclamations like, “why we can’t simply use Thread.Abort in order to interrupt that function?” That’s why I decided to write this post, showing how simple it is to write cancellable code.

By |2019-01-11T11:17:39+03:00January 22nd, 2016|.NET, Best Practices, C#, CodeProject, Multithreading|3 Comments

Handling Errors and Exceptions. Part 2 – Discussion.

The previous blog post received many comments, and this approves that the problem of handling errors\exceptions is palpitating. I thought I’m going to address practical points of errors\exceptions handling in the second part. But I feel I need to address comments of readers firstly. […]

By |2019-01-11T11:17:52+03:00October 2nd, 2015|Best Practices, C#, CodeProject, Design|2 Comments

Handling Exceptions and Errors. Part 1 – Intro.

In this article we will discuss exception handling best practices. There is a lack of meaningful information about exception handling on the Internet, so let’s go. Have you ever seen that recommendation to avoid exception handling like this: [code language=”csharp”] try { //do something } catch(Exception ex) { } [/code] Well, indeed, I agree that this exception handler looks pretty bad. But is it [...]

By |2016-07-27T17:38:53+03:00September 21st, 2015|C#, CodeProject, Design, .NET, Best Practices|3 Comments

UpdateableSpin Synchronization Primitive

Today we are going to look at a relatively rare case of synchronization. There are no appropriate C# synchronization primitives out of the box. In order to understand the case we’re going to talk about you can imagine the following case: “Your code makes a call to the third-party library’s method and you have to wait that method until the end. That method performs [...]

By |2016-04-26T18:47:45+03:00August 22nd, 2015|.NET, C#, CodeProject, Multithreading|0 Comments

Null-Checking Semantics Obscurity

This topic is going to be simple, yet an interesting one. I’ll try to expose here my feelings about a certain case of null-checking. It’s a well-known fact that introducing null-values considered by its inventor, Tony Hoare, as a billion-dollar mistake. Despite of some “modern” practices like making classes immutable, applying Null-Object pattern or using Code Contracts extensively, we still often want to declare [...]

By |2019-01-11T11:18:25+03:00August 8th, 2015|Refactoring, .NET, Best Practices, C#, CodeProject, Design|0 Comments
Go to Top