419 reputation
28
bio website sharp-gamedev.blogger.com
location Stockholm, Sweden
age 36
visits member for 3 years, 8 months
seen Nov 21 '12 at 12:03
The programmer formerly known as Joh. Joh used to think C++ was the greatest language on Earth, but he has now found the light in .net thanks to F#. Joh loved Linux and seldom used his installation of Windows. Due to his recent discovery and F#, he is now spending all of his computer time on Windows. He is not quite sure if this is a good thing or not.

Oct
7
comment How to fit beta versions into a numeric versioning scheme?
How do I know if 1.0.0.123 is the first, second... beta before 1.0.1.0? Moreover how do I distinguish between a bugfix release 1.0.1.1 and a beta of 1.0.2.0 ?
Oct
7
comment How to fit beta versions into a numeric versioning scheme?
What disturbs me a bit is that what we call "1.3 beta 2" is the 2nd beta that precedes 1.3. With your numbering scheme, it would be called "1.2.1.2". If I use "1.3.0.2" instead, I get the weird effect that "1.3.0.2" is before the final "1.3.0.0".
Oct
7
comment How to fit beta versions into a numeric versioning scheme?
In your example, does the beta release 1.2.1.1 follow the normal release 1.2.1.0 or precede it?
Oct
6
awarded  Student
Oct
6
asked How to fit beta versions into a numeric versioning scheme?
Sep
26
comment Has there been any formal work comparing ease of maintenance at the programming language level?
I found the paper again: citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.20.2141
Sep
17
comment Why don't many code review tools seem to be syntax aware or provide more in-depth analysis of changes?
I definitely think there is a market for tools that work at the level of the abstract syntax tree, e.g. code manipulation, highlighting changes... The skills needed to write parsers and understand the underlying structure of code may have been lacking, but it seems the advent of intellisense and refactoring tools in mainstream IDEs have changed that.
Sep
17
comment Has there been any formal work comparing ease of maintenance at the programming language level?
I saw a link on reddit earlier this summer pointing to a paper showing that of all complexity measures, the one that had the strongest correlation to the number of bugs was lines of code. Other more complex measures were not good indicators of number of bugs. A shame I can't find the paper again, but I'll keep looking.
Sep
17
comment Why is DRY important?
@Incognito: I have edited my answer. No concrete example, but hopefully what I meant is clear enough.
Sep
17
revised Why is DRY important?
How to recognize (some) cases of excessive DRY
Sep
17
comment *Code owner* system: is it an efficient way?
"it encourages badly documented hard to understand code as only the coder who wrote it is responsible for maintaining it". It depends on the type of programmer. If my name is attached to some code, I want that code to have really high quality. If I don't own it, I tend to do limit myself to minimal changes which when accumulated over time can affect code quality negatively. When an entire team works that way, it can also go horribly wrong.
Sep
17
comment *Code owner* system: is it an efficient way?
@Matthieu M.: Indeed. I agree that the stricter interpretation of ownership where changes by non-owners are forbidden is harmful.
Sep
14
comment *Code owner* system: is it an efficient way?
@Matthieu M.: If you own the code, you are responsible for it. Reversely, if you don't own the code, you can't be held responsible for it. It seems to me the two concepts are identical. The danger with code ownership is if people never work outside of their area of responsibility. That's the awful idea. Not ownership in itself.
Sep
14
comment *Code owner* system: is it an efficient way?
"awful idea" is too strong. The Linux kernel uses that model and it seems it has worked well.
Aug
26
answered Why is DRY important?
Jul
27
comment Are abstract classes / methods obsolete?
@Scott Whitlock: Your example using apples and fruits is a bit too detached from reality to judge whether going for inheritance is preferable to delegates in general. Obviously, the answer is "it depends", so it leaves plenty of room for debates... Anyway, I find that template methods occur a lot during refactoring, e.g. when removing duplicate code. In such cases, I usually don't want to mess with the type hierarchy, and I prefer to stay away from inheritance. This kind of surgery is easier to do with lambdas.
Jul
25
comment Are abstract classes / methods obsolete?
-1. I don't understand what "generic code vs inheritance" has to do with the question. You should illustrate or justify why "abstract classes have significant advantages over interfaces".
Jul
25
comment Are abstract classes / methods obsolete?
+1. As a side-note: "Partial implementations are an anti-pattern, despite the fact that template pattern formalizes them.". The description on wikipedia defines the pattern cleanly, only the code example is "wrong" (in the sense that it uses inheritance when it's not needed and a simpler alternative exists, as illustrated above). In other words, I don't think the pattern itself is to blame, only the way people tend to implement it.
Jul
25
comment Are abstract classes / methods obsolete?
"there is a fundamental difference [...] interfaces are far less reliable [...] than abstract classes". I disagree, the difference you have illustrated in your code relies on access restrictions, which I don't think have any reason to differ significantly between interfaces and abstract classes. It may be so in C#, but the question is language-agnostic.
Jul
25
comment Are abstract classes / methods obsolete?
+1, I prefer your answer to deadalnix'. Note that you can implement a template method in a more straight-forward way using delegates (in C#): public void DoTask(Action doWork)