Thanks!
-John

> -----Original Message-----
> From: [EMAIL PROTECTED] [mailto:ironruby-core-
> [EMAIL PROTECTED] On Behalf Of Peter Bacon Darwin
> Sent: Monday, March 24, 2008 1:48 PM
> To: [email protected]
> Subject: Re: [Ironruby-core] digest.so implemented
>
> This was just dying out for a wiki page:
> http://ironruby.rubyforge.org/wiki/wiki.pl?ContributionGuidelines
>
> Pete
>
>
>
> From: [EMAIL PROTECTED]
> [mailto:[EMAIL PROTECTED] On Behalf Of Tomas
> Matousek
> Sent: Monday,24 March 24, 2008 20:14
> To: [email protected]
> Subject: Re: [Ironruby-core] digest.so implemented
>
>
>
> Wayne Kelly:
>
>
>
> > Attached is an implementation of the methods and classes from
> external
> > library digest.so that are used by some simple Rails use cases.
>
>
>
> Thanks for the contribution! Sorry for such a long delay. It required
> some additional work on our side and we also had some issues with TFS
> to SVN sync tool. John fixed that last week, so your contribution have
> finally been checked-in.
>
>
>
> I've reviewed the code. While this feedback is specific to your
> contribution, this is general advice that other contributors should
> follow as well.
>
> Check out the latest code in SVN - all my suggestions are reflected
> there.
>
>
>
> 1) Coding conventions:
>
>
>
>    a) Use .NET Framework conventions for all identifiers (see
> http://msdn2.microsoft.com/en-us/library/ms229002.aspx). There is no
> specific guideline for naming private fields in this document; we
> prefix field names with underscores (e.g. private string _fooBar). If
> you're not sure about some convention try to find out in the rest of
> the IronRuby code or ask in the list.
>
>
>
>    b) Use /*!*/ for method parameters and instance fields that should
> never be null. See http://research.microsoft.com/specsharp for details
> on Spec# annotations.
>
>
>
> 2) Do not use public fields (Base::algorithm, buffer). Use properties
> if it is necessary to expose the field or private/internal visibility
> otherwise.
>
> Also use readonly if the field is not mutated after the object is
> constructed.
>
>
>
> 3) You don't need to declare Call_Foo methods in order to invoke a
> dynamic site unless the invocation is somehow more complex (involves
> some conversions etc.)
>
>
>
> 4) Please test for corner cases, eg whether the methods accept null
> arguments etc. Mark the parameters appropriately ([NotNull] attribute,
> /*!*/ etc.), add precondition checks. Here's an example:
>
>
>
> [RubyMethod("*")]
>
> public static RubyArray/*!*/ Repetition(IList/*!*/ self, int repeat) {
>
>      if (repeat < 0) {
>
>         throw RubyExceptions.CreateArgumentError("negative argument");
>
>      }
>
>      ...
>
> }
>
>
>
> Thanks,
>
> Tomas
>
>

_______________________________________________
Ironruby-core mailing list
[email protected]
http://rubyforge.org/mailman/listinfo/ironruby-core

Reply via email to