I deal a lot with other people’s and legacy code. One of the things I see very often is what I call "misuse of code comments". Let me provide an exhaustive list of what code comments are for: Describing why code isn’t doing something obvious There, done. What code comments are not for (not complete): The Obvious // set the value of i i = value; It’s obvious that the code is doing that; the comment adds no value here. The compiler provides no validation that the "i" in the comment really applies to any variable in the line the … Continue reading What Code Comments are Not For.
[Update: 25-Jan-12 5:45 pm; fixed typo] I was reminded recently of the misconceptions of the volatile modifier in C#, and I’d thought I’d pass along the recommendations of other’s that is tantamount to “avoid the volatile modifier”. The volatile modifier in C# “indicates that a field might be modified by multiple threads that are executing at the same time” . The first problem is that documentation. What does that really mean to someone developing code that uses multiple threads? Does that make the code “thread-safe”? The answer is “maybe”; the real answer is “rarely”. Most people just stick volatile on … Continue reading Avoid the volatile Modifier
One of the great sessions at Codemash was a dual-speaker session with Bill Wagner and Jon Skeet—Async from the Inside. In that session Bill and Jon describe (in great detail) the state machine that the C# compiler generates when it compiles async code involving the await keyword. When the Async CTP was released this state machine was one of the first things I noticed when I was reflecting through some generated code. I too noticed the type of the state variable (int) and wondered, at the time, if that would be an issue. All the information Bill, Jon and I … Continue reading C#, Async, Limits, oh my!