New in C#4
Bruno Medeiros
brunodomedeiros+spam at com.gmail
Fri Nov 7 09:27:00 PST 2008
Ary Borenszweig wrote:
> Bruno Medeiros escribió:
>> Ary Borenszweig wrote:
>>> Robert Fraser escribió:
>>>> Denis Koroskin wrote:
>>>>> I once had the following Color class:
>>>>>
>>>>> class Color
>>>>> {
>>>>> this (byte alpha, byte red, byte green, byte blue) { ... }
>>>>> }
>>>>>
>>>>> and used it as follows:
>>>>>
>>>>> Color c = new Color(255, 0, 255, 0); // opaque green color
>>>>>
>>>>> After refactoring, alpha became last argument in ctor:
>>>>>
>>>>> this(byte red, byte green, byte blue, byte alpha) { ... }
>>>>>
>>>>> Note that this change didn't raise any compilation error, nothing
>>>>> that would notify my of possible error.
>>>>>
>>>>> Needless to say that I didn't enjoy searching all the code that
>>>>> used Color to reorder parameters (although some artifact were nice :)
>>>>> It would save me quite some time if I initialized all my instances
>>>>> as follows:
>>>>>
>>>>> Color c = new Color(alpha: 255, red: 0, green: 255, blue: 0);
>>>>>
>>>>> Now compiler could raise an error if parameters order was changed.
>>>>> Even better - compiler could reorder parameters for me
>>>>> automatically if given that all of them are specified and no params
>>>>> ommited (unlike Python). This makes code more robust to refactoring.
>>>>
>>>> The first thing I thought of when reading this is Eclipse JDT's
>>>> "Change Method Signature" refactoring that will look up all the
>>>> calls in your project & automatically reorder the parameters for you.
>>>
>>> Me too. :-)
>>
>> Of course I also ate a piece of that cake. ^^
>>
>> I keep getting the impression that we 3 are the only people in the D
>> NG that have used JDT extensively.
>> That's unfortunate because I feel most people here don't realize how
>> much an IDE like JDT (or something comparable, like IntelliJ IDEA, but
>> not VS) can shape and improve the development workflow (and thus have
>> potential implications in language design).
>> And it's not something that can be easily understood in foresight -
>> one really has to try it out (rich IDE functionality) for some time
>> and even then, you might not notice it until it is *taken* from you.
>> Fun story, that happened to me:
>>
>> When I started looking for work after graduation, recruiters asked me
>> if I had preference for working with C# or Java. I had no
>> anti-Microsoft bias (apparently some people do, even in the
>> workplace), so I judged both in terms of language only, and I really
>> didn't have much of a preference then (note, this was considering C#
>> only up to version 2.0 only). I was slightly inclined to Java, but
>> only because I had used it more.
>> But months later, when I started working on a project that had a
>> desktop client, I tried using C# (to take advantage of the WinForms
>> designer) I was vexed as Visual Studio (C# 2005) seemed primitive in
>> comparison. Suddenly many of the things I had taken from granted were
>> gone, and I missed them a lot more than I expected (one example is the
>> Ctrl-1 "Assign to Local Variable" refactoring which gradually become
>> one of my most used refactoring, almost as much as Refactor-Rename).
>
> I recently discovered you can do the same with Ctrl+2, L :-)
>
> Of course in D that'll be
>
> auto whatever = <your expression here>;
>
> Do here's a clear example where a language helps not being repetitive,
> and that kind of shortcut becomes less useful.
>
> But refactoring is an essential thing in TDD, and I think that can't be
> easily supported by any language without using a proper IDE.
>
> I also have the sensation we are the only guys that used JDT. In my
> workplace everyone feels very, very comfortable using Java; not because
> of the language itself, but because of Eclipse. It's amazing the speed
> boost you get once you get used to it. You don't have to look at
> external documentation files, you don't have to read someone else's code
> to understand what's going on. You don't need to remember lots of names,
> where's everything is located.
>
"you don't have to read someone else's code to understand what's going
on." - Hum, I agree with the rest of what you said, but not necessarily
on this one. In fact I do a lot of "browsing" with Eclipse (Ctrl-click,
Open Type, etc.), in order to read other's code.
--
Bruno Medeiros - Software Developer, MSc. in CS/E graduate
http://www.prowiki.org/wiki4d/wiki.cgi?BrunoMedeiros#D
More information about the Digitalmars-d
mailing list