New in C#4
Robert Fraser
fraserofthenight at gmail.com
Wed Oct 29 19:50:52 PDT 2008
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.
More information about the Digitalmars-d
mailing list