Thanks to Judge Dale Kimball, we may finally be rid of SCO. Since he ruled that they never owned UNIX patents, they owe Novell 95% of the money they got from Microsoft and Sun for the license rights they sold. It’s doubtful they have the money, so they’ll probably have to declare bankruptcy. It couldn’t happen to a more deserving company.
Author: Scott
Refactoring
An excellent post by Julian Bucknall of Developer Express on refactoring–more specifically the eight refactorings he uses most. Of the ones he names, I use the 8th one (use string.format) the most. As you might expect with inherited code, there are plenty of places where strings are concatenated with plus signs. I root them out of every piece of code I rewrite, and highlight them in code reviews.
SQL Server Table Properties
I needed a T-SQL statement to get the created date of a couple of tables as part of a project. One of my colleagues came up with this query:
SELECT create_date FROM sys.objects WHERE type = ‘U’ AND name = ‘<tablename>’
It works in SQL Server 2005.
The SQL Server 2000 equivalent is:
SELECT crdate FROM sysobjects WHERE xtype = ‘U’ and name = ‘<tablename>’
Jeremy D. Miller on Software Teams
His top three preferences in brief:
- internalized discipline over externally-enforced discipline
- coaching over enforcement
- collaboration over direction
It’s easy to agree with these preferences, but whether or not they can be put into practice depends very heavily on the members of the team. Unless you’re in a startup environment, you inherit people and culture as well as code. While he makes a brief nod to hiring in the first section of his post, having the right people in the right places makes for much better results.
Miller does the best job of explaining his third preference. Providing the rationale and context for a course of action gives a developer input and an opportunity to buy into an idea. The success of this approach still depends on the having the right people. I follow it with my own employees as much as possible.
Is Fit Testing Dead?
Jeremy Miller asks that question in this post.
I haven’t had a chance to use it on any projects, but I really like the idea of customer-facing tests. Miller describes them very well as “executable requirements”. The comments highlight a number of alternatives to Fit, including FitNesse, Green Pepper, and ZiBreve.
From the comment volume on Miller’s post, it seems that only the specific implementation of Fit is on its way out. The idea looks very much alive.
Implementing IDisposable
One of the FxCop rule violations I found in one of my projects had to do with IDisposable not being implemented. My search for examples of how to resolve this yielded a lot of helpful links, including these:
- An MSDN article on correct implementation of IDisposable
- A older CodeProject article on IDisposable that takes an odd shot at unit testing
- A newer CodeProject article on IDisposable and the dispose pattern
- A Channel9 discussion on IDisposable
Comma-delimited strings in SQL with COALESCE
I came across a nice how-to post this morning. When it comes to databases, I’m a fan of anything that eliminates the need to use cursors.
ALT.NET–>NOT.NET?
I came across this James Avery post via Mike Gunderloy’s blog. Avery attempts to make a similar point to one Martin Fowler puts forward about the best developers moving away from the .NET platform. Beyond the sort of anecdotal evidence I’ve read, I don’t see much abandonment of .NET as a platform.
When I read this post by Dave Laribee, I decided that Avery missed his point. The point of ALT.NET isn’t as a bridge to a different set of tools, but to recognize two things:
- The best solutions on the .NET platform won’t always come from Microsoft.
- The best ideas from other software development communities can work very well on the .NET platform.
The existence of tools like NUnit and log4net, frameworks like Spring.NET and rules engines like Drools.net is more likely to keep developers using the .NET Framework than it is to encourage them to switch to Ruby on Rails. Because a lot of ALT.NET is free and open source, there’s plenty of incentive to use it instead of the Microsoft alternative (which increasingly comes with hefty licensing fees).
Strongly-typed datasets and queries without matching select clauses
I learned an annoying lesson about these late last week. I’d created the dataset by dragging and dropping the necessary tables from SQL Server in Visual Studio 2005. Then I added a query to one of the tables that didn’t include every one of its columns. Unfortunately, a number of the columns my query didn’t return didn’t allow nulls. I ended up modifying my query to include those columns, even though I don’t use them. I didn’t try removing the columns from the dataset, but that probably would have worked too.