On Mar 22, 1:15 pm, Scott Sauyet <[email protected]> wrote:
> npup wrote:
> > I wrote a little utility to help out with checking status of objects.
> > More specifically, checking their conformance with a "signature" that
> > you provide along with the check.
>
> As I responded in the blog comments, I'm mixed about this.  I really
> like the idea of being able to encapsulate this sort of focused type-
> checking where I can worry about only those parts of the interface
> that interest me.  And being able to check values as well is very
> useful.
>
> But I'm not thrilled with the API.  The first thing that concerns me
> is the static call to Acts.As.info() which significantly constrains
> how I could choose to use it: if I want to store the results of a
> call, I have to make a call to .info before making another call to the
> test method.  There's something wrong with that.  My first thought is
> to reverse the sense of the call, so that false means that there is no
> mismatch and a results object details the issues found. But I can't
> think of a good name for that function, which makes me suspect that
> it's not as intuitive an abstraction as "ActsAs".  Besides, it's just
> so negative!  :-)
>
> I also feel that the string types are a little overloaded, but I don't
> have a good alternative syntax.
>
> And I'd love to see some sort of nesting as well.  I don't have a
> clear sense, but something like the following might do:
>
>     var mailableSignature = {
>         // or perhaps type: "nonEmptyString"
>         name: {type: "string", constraints: {nonEmpty: true}}
>         address: {type: "object", signature: {
>             city: {type: "string", constraints: {nonEmpty: true}},
>             postalCode: {type: "string", constraints: {
>                 nonEmpty: true, minLength: 5, maxLength: 9
>             }} //, ...
>         }
>     }
>
> One other suggestion would be that this misses an excellent
> opportunity to do a little currying:
>
>     var isAMonkeysUncle = Acts.As(monkeySignature);
>     // ...
>     if (isAMonkeysUncle(orangutan1)) {
>       // do Ape stuff here
>     }
>
> Finally, I found the unit tests less than enlightening.  Whenever I
> can, I look to unit tests to guide me in the usage of the API, but the
> test code at first reading does not make it clear how to use Acts.As.
>
> This perhaps sounded overly negative.  My main reaction is that this
> is a good idea, and a reasonable stab at a first implementation, but
> there is significant room for improvement.  Thanks for sharing it.
>
>   -- Scott

Oh thanks for your input. I responded to your blog post comment before
I saw it here (responded over there, http://goo.gl/v3UpX), oops.
/p

-- 
To view archived discussions from the original JSMentors Mailman list: 
http://www.mail-archive.com/[email protected]/

To search via a non-Google archive, visit here: 
http://www.mail-archive.com/[email protected]/

To unsubscribe from this group, send email to
[email protected]

Reply via email to