Re: C# 3.0 partial methods and automatic properties

Davy J <[email protected]> Tue, 28 Nov 2006 15:33:32 +0100
Newsgroups gmane.comp.windows.devel.dotnet.cx
Message-ID <[email protected]>
For the comments try ghostdoc, takes the pain out of commenting procedures.

Dave,

On 11/23/06, Sebastien Lorion <[email protected]> wrote:
> - Very rarely is there a need to override the behavior of the "event"
> keyword (mostly when the class has many events, needs weak referencing on
> its delegates and/or locking issues).
>
> - We declare variables *all* the time and with generics, the syntax of doing
> so becomes quite cumbersome with never ending lines. Until C# 3.0, you can
> use a trick, which is to use an import statement:
>
> using FooDictionary = System.Collections.Generic.Dictionary<string,
> System.Collections.Generic.Dictionary<string, MyNamespace.Foo>>;
> // or using StringFooDictionary = ...
>
>
> Now for properties, none of the above applies. Except for the most simple
> getter/setter, you need to put more logic in your properties. YMMV, but for
> me, this happens quite a lot, if for no other reason than to raise a
> PropertyChanged event. So the usefulness of the new syntax seems marginal,
> at least in regards to the features you mention.
>
> Really, I think there are areas that need much more attention at this
> moment.
>
> Like the current need to duplicate XML comments everywhere. How great would
> it be if the IDE by default would take the comment on the base/interface
> method and we only need to override as needed? We can put documentation in
> separate files for that, but A) that does not solve the problem when the doc
> is from an external library, B) I like to see my comments inline period.
>
> And what about exceptions? Aren't you tired of writing
>
> /// <exception cref="ArgumentNullException">
> ///   <paramref name="bar"/> is a null reference.
> /// </exception>
> void Foo(object bar)
> {
>   if (bar == null)
>     throw new ArgumentNullException("bar")
> }
>
> I know I most certainly do! At least, if Intellisense would filter out types
> after we write "throw new " to show only exception types (ending with
> "Exception") like it does for attributes. A solution would be to integrate
> now the "easy" parts of Spec# into C#, such as the "!" type operator:
>
> void Foo(object! bar)
> {
> }
>
> I have many many peeves like this that are not complicated to do (I think)
> and would diminish a lot the bookkeeping programming.
>
> Sébastien
>
> > -----Original Message-----
> > From: Discussion relating to the specifics of the C# and Managed C++
> > languages [mailto:[email protected]] On Behalf Of Keith
> > Hill
> > Sent: Thursday, November 23, 2006 3:01 AM
> > To: [email protected]
> > Subject: Re: [DOTNET-CX] C# 3.0 partial methods and automatic
> > properties
> >
> > > -----Original Message-----
> > > From: Jon Skeet [mailto:[email protected]]
> > > Sent: Saturday, November 11, 2006 12:23 AM
> > > Subject: Re: C# 3.0 partial methods and automatic properties
> > >
> > > Creating a code snippet or a macro or whatever has a problem in terms
> > of
> > > readability though. Let's take another example of syntactic sugar:
> > > "using". I'm sure that Eclipse can add a try/finally block round my
> > Java
> > > code easily, but I'm *much* happier reading C# code with the "using"
> > > statement.
> > >
> > > Similarly, it's easier to read:
> > >
> > > public property string x; // Or whatever the syntax is
> > >
> > > than the "longhand" version, even if that longhand version *has* been
> > > generated for you.
> > >
> > > Typing speed is rarely an issue for me, but quickly reading and
> > > understanding code often is.
> >
> > I agree.  The VS IDE doesn't help when I'm reading code nor does it
> > help when I write code outside of the IDE (yes I sometimes use notepad).
> > I think the automatic property feature complements the "event" keyword
> > which essentially does the same thing - create a private field
> > (delegate) and generates the Add/Remove methods for you.  In both cases,
> > if you need more functionality, then you don't use the feature i.e.
> > write your own get/set or add/remove methods.
> >
> > The other issue I think that C# needs to stay on top of is remaining
> > competitive with various dynamic languages.  There is a *lot* less line
> > noise in languages like Ruby and Python.  Check out this MSDN article
> > on IronPython:
> >
> > http://msdn.microsoft.com//msdnmag/issues/06/10/clrinsideout/default.as
> > px
> >
> > Dynamic languages like Python are popular for a reason - their syntax
> > doesn't get in the way as much, requiring a lot less typing (keyboard
> > typing).  By the way I don't agree with the statement in the article
> > that the line noise in C# is necessary.  There are places where it
> > isn't.  Take for instance the new type inferencing/var feature in C#
> > 3.0.  I think this can help reduce line noise a fair amount e.g.:
> >
> > Dictionary<string,Dictionary<string, Foo>> bar = new
> > Dictionary<string,Dictionary<string, Foo>>;
> >
> > versus
> >
> > var bar = new Dictionary<string,Dictionary<string, Foo>>;
> >
> > The automatic property syntax is just another step in the direction of
> > eliminating unnecessary line noise.  What I like about these features
> > is that you get some of simplified syntax found in dynamic languages
> > without giving up static type checking and the features that go along
> > with it like Intellisense.
> >
> > BTW, it's interesting that the C++ team thought the simplified property
> > syntax idea worthy enough to add to the managed extensions for C++.
> >
> > --
> > Keith
> >
> > ===================================
> > This list is hosted by DevelopMentor.  http://www.develop.com
> >
> > View archives and manage your subscription(s) at
> > http://discuss.develop.com
>
> ===================================
> This list is hosted by DevelopMentor(r)  http://www.develop.com
>
> View archives and manage your subscription(s) at http://discuss.develop.com
>


-- 
Dave Jones
[email protected]
[email protected]

b1xml2 : "The one thing that is differentiates VB.NET from C# is the
horrible ability to do this turn Option explicit and strict off, after
which VB.NET can resemble mangled spaghetti. "

===================================
This list is hosted by DevelopMentor®  http://www.develop.com

View archives and manage your subscription(s) at http://discuss.develop.com