Refactoring: Not for VB 2005 (for the most part)

The problem with making confident predictions about the future is that time has a way of making a liar out of you despite your best intentions. As Steven posted Friday, VB will not have any refactoring features beyond “rename symbol” in VB 2005. This was an extremely painful cut and one that we tried to move heaven and earth to avoid, but in the end we didn’t feel we could get the features into the product in a high-quality way without causing serious risk to our shipping goals. Balacing the cries for refactoring against the cries for us to ship as soon as possible was difficult, and we really regret the fact that it ain’t going to happen this time (for the most part… it’s not like rename symbol is chopped liver or anything!).

On the other hand, it does mean that we get a while longer to have lots of colorful, humorous arguments about whether we should have a “Refactoring” menu in VB or not. Oh, joy… 

40 thoughts on “Refactoring: Not for VB 2005 (for the most part)

  1. Daniel Moth

    < ![CDATA[The fact that the C# team made EnC and the VB team couldn't make refactoring is what most will focus on - no doubt. My disbelief is that you prioritised the My feature above refactoring. It doesn’t even come near in usefulness. I hope the bet that VB2005 is making to finally bring the VB6 devs on to .NET pays of. I know that existing .NET (VB) devs are slowly losing faith in the language that tries too hard to please the hobbyist, enthusiast etc (that should only be the Express team’s job).

  2. DM

    < ![CDATA[Um, here's a silly question: Why isn't the IDE abstracted from the language? It seems like a waste to have two implementations of the same thing.

  3. Karl

    < ![CDATA[I'm sure the decision was indeed a hard one, refactoring is really a great feature. I use reshaper for c# constantly when coding - and its an amazing addition to the IDE. I think VB.Net is in a very difficult place. There was some good discussion a while back about VB.Net being too difficult and I tend to agree. For this reason I think features such as My, while not useful for a lot of us, are the right way for VB.Net to go. My one question though, which I’ve asked myself since .Net was released, is why aren’t we seeing smaller more frequent updates? Why is it that when a feature can’t make it an upcoming version, it has to be postponed for a version 3 years off? Why can’t you guys simply patch VS.Net to support better refactoring 4 months down the line? karl]]>

  4. Taiwo

    < ![CDATA[Paul: You mentioned in a recent blog that the work that the VB.NET team did on EnC was useful as a springboard for the C# team to include EnC in C#. As DM pondered in his feedback on this topic, why is the VB.NET team not taking advantage of the work that the C# team has done on Refactoring, especially since there was strong feedback a while back that VB.NET users wanted Refactoring features? In any case, as a couple of people have sugested, it is hoped that you will be able to provide an interim update that includes full Refactoring features after Visual Studio 2005 ships but before the next release. Can you promise this? Thanks. Taiwo]]>

  5. Fan

    < ![CDATA[Very disappointed to hear about it. Anyhow we have to face to the truth. Microsoft could publish a "Visual Basic 2005 Resource Kit" soon to offer a 3rd party refactoring tool.
    Is there any other "big" changes in BETA2 (and the final release) except refactoring? C# can get a such complex feature (EnC) so we have reasons te believe that VB will have something more too. If not, VB can hardly attract more developers who have already chosen C#.]]>

  6. Jens

    < ![CDATA[I feel the same, EnC in C#, no refactoring in VB.NET. Seems like some languages are more equal than others, despite what MS keeps telling us. As a professional VB developer of large business applications I find this a real problem ... ]]>

  7. Phil Wells

    Serge – If MS had left a compiler out of VS.NET but 3rd parties were providing one would you be satisfied with that too? Refactoring support is no different. If VS is supposed to be a fully-functional IDE it needs to have it built in. JetBrains’ ReSharper is a great tool but should we really have to shell out an extra $100 on top of the cost of VS.NET?

  8. Pingback: Sam Gentile's Blog

  9. Greg Low

    The irony in all this is that refactoring support would most help with the migration of the VB6 folk’s code, the very people we seem to be stuffing the language up to help.

  10. Bob

    < ![CDATA[My employer has 100+ MSDN Universal licenses and a lot of legacy VB6/ASP code. Some of that code will not be migrated to .NET, but that sill leaves a significant amount of code that will be. The Upgrade Wizard/Utility will help us get a lot of code converted over. Refactoring would have helped clean up the ummm, less than optimal code produced by the Upgrade process. In addition, since we have a lot of developers with little or no .NET experience, we will also have a need to clean up the code produced by these folks until they get through the .NET learning curve. Given that, "It’s the runtime, stupid" and VB.NET will NOT have full refactoring for a while, perhaps we should simply have the people learn C# instead of VB.NET. Cleaning up the inevitable non-optimal code would seem to be easier with C# and refactoring than VB.NET with limited refactoring.

  11. Pingback: Sam Gentile's Blog

  12. Lan

    < ![CDATA[Refactoring is one of important thing for creating literate
    code. must have it… Maybe even instead of EnC, if we have possibility of choice.]]>

  13. Pingback: Dan McKinley

  14. Karl

    < ![CDATA[People who read Paul's/MSDN blogs can likely be categorized as early adopters and/or more "hardcore" programmers. It think its safe to say that we are likely to have a very different VB.Net wishlist than everyone else. It's probably also safe to say that we are an overwhelming minority with an overwhelming voice. Someone in the .Net word needs to start worrying about all those people who call themeselves techno-junkies and build Access and VBA applications or simple VB6 forms, because right now the learning curve is far too big. How can this not be one of VB.Net's key job? VB.Net needs to be a language that lets you whip something out quickly (uncomparable productivity) with as little programming knowledge as possible (uncomparable ease). It also needs to provide more power and capability, but can rest assured that if it fails to provide such flexibility, that .Net provides good alternatives (C# or C++). These languages shouldn't be in competition, they should be positioned to fill a niche with some overlap. Refactoring, iterators and even generics are pretty useless things to a whole lot of programmers, whereas background compilation with superior IDE support, My, verbose syntax, late binding, Microsoft.VisualBasic and a lot more are what really matters. VB.Net doesn't need iterators or refactoring (though it's great if it has it), because another language already provides them, it needs to be innovative and become an absurdly easy language with amazing ROI. If C# jumped off a bridge, should VB.Net too? It isn't us vs them (btw, I'm a them 😉 )...
    # of people that would switch to C# for iterators

    is less than

    # of people who understand how iterators will help them

    is less than

    # of people who actually understand iterators

    is less than

    # of people who’d like to better understand iterators

    all of which is a lot less than

    # of people who know and or care what an iterator is


  15. Dan Blake

    I’m having a little trouble with the third-party tool concept for refactoring. Why would a third-party vendor want to spend a large amount time and money developing an extensive product, when Microsoft has said that it will put the functions in VS in the future and eliminate the need for the third-party product? The two products that Microsoft mentions on their website as solutions either are not specific to refactoring (kinda like using a bulldozer when what you need is a good shovel). Or they are difficult to use, incomplete, and buggy.

  16. Shaun

    < ![CDATA[Refactoring is very, very good and very important. Given the choice between Refactoring and EnC, though, I'd have to pick EnC. If I had to pick between EnC, Refactoring, or Multiple Inheritance (or Mixins), though… I’d have to go with MI. I’m on board with more frequest VS updates… VS2003 was a minor update for VS2002. Maybe we need the same type of interum release after every major VS upgrade.

  17. Darrell Scott

    < ![CDATA[Sorry, this is a terrible decision. Refactoring is far and away the most useful feature I was looking forward to seeing in VB.Net Whidbey. Our next big project involves substantially revamping an existing VB.Net codebase, and we were looking to refactoring as a way of facilitating this. Multiple Inheritance is considered bad practice by some in the OO community, and EnC is nice, but an incremental improvement.]]>

  18. Hilton Giesenow

    < ![CDATA[When I saw the refactoring abilities in whidbey I was seriously impressed. When I discovered they were not to appear in is was shocked to an equal degree. By and large the team has done absolutely brilliant work but I definitely agree with refactoring over EnC. How’s this for a view – EnC is for fixing your own code, Refactoring is for fixing someone else’s ;-). Seriously though, while I probably won’t switch, this would be my first real impetus to move to C#. A major argument for VB is its RAD abilities. Refactoring is in some ways a big part of RAM (rapid application maintenace – did I just coin a term?) – the work we all really love!]]>

  19. Pingback: Dan Fernandez's Blog

  20. Pingback: Le weekly DanWatts

  21. Shaun

    < ![CDATA[There's nothing wrong with Multiple Inheritance. Those in the OO community who oppose it often don't understand it or haven't encountered the specific problems that are easily solved by it. Some say that you don’t need it. Given that logic, you don’t need inheritance at all. You also don’t need event driven programming. You don’t need Windows or a GUI. But all of these are handy. It’s like a CROSS JOIN… you don’t need them very often and all of the books tell you that you’ll never need them. When you do need them, however, they are VERY important.

  22. Jim

    This is so stupid. Refactoring is one of the biggest improvements in VS.NET 2005. I can’t believe MS would drop the ball on this one. Are they trying to get VB developers to quit using the language?

  23. Pingback: Rob Windsor's Weblog

  24. Pingback: Rob Windsor's Weblog

  25. Pingback: Programando .NET

  26. Jim

    < ![CDATA[> My disbelief is that you
    > prioritised the My feature

    > above refactoring. It doesn’t

    > even come near in

    > usefulness.

    Agreed. AFAIK, the My pseudo-namespace doesn’t give us anything we couldn’t already do. Refactoring is much more important to me.

    > I know that existing .NET

    > (VB) devs are slowly losing

    > faith in the language

    Count me among the people who’s losing faith. Microsoft needs to make up it’s mind: Is VB.NET a toy language or a tool for professional developers. Which is it going to be?]]>

  27. Jim

    < ![CDATA[I also agree with Karl. I would rather have smaller, incremental releases rather than major ones. If Microsoft doesn't want to polute the industry with too many versions of .NET, how about an IDE-only update? Imagine how cool it would be if Microsoft had released a VS.NET 2004 based on .NET 1.1 but with an improved IDE with refactoring, better intellisense, discardable projects, etc. I would have bought that in a heart beat!]]>

  28. Doug e. Fresh

    VB is supposed to be the easiest of languages to learn.C# should be used by those doing new projects that have some experience in VB. It will better them as programmers and get them more familiar with the syntax of c++. Programmers should try to learn new things not stick to one language forever. VB is great as a simple and quick language that will always have a useful place.

  29. Mike Meeks

    < ![CDATA[It's sickening! Introducing: VB.NET 2002, ahhh 2003, ahhh 2005 – when do we come to point to where we the {Programmers} get a return on our investment. We now have spent thou$ands of dollars on upgrades and for what? Of all of the Money$ that Microsoft has made on these NET-Versions – I think they owe the VB-Net Community more than just Features. Now I hear, that they are already working on the next version VB9 – which will be probably be Visual Basic 2007. A new Net Version! When does it end! How can anyone even think of programming a detail business application – when Microsoft can’t even get the details right or even finished! All Net Sucks – until we have something we can sink our teeth into and come to some point to where we have a stable version that will last at least a few years! ]]>


Leave a Reply