Beefy Boxes and Bandwidth Generously Provided by pair Networks
There's more than one way to do things
 
PerlMonks  

Re^3: [perl6] Complex Attribute Validation and/or Triggers (anti-modular)

by tye (Sage)
on Mar 08, 2015 at 07:43 UTC ( [id://1119213]=note: print w/replies, xml ) Need Help??


in reply to Re^2: [perl6] Complex Attribute Validation and/or Triggers (good OO)
in thread [perl6] Complex Attribute Validation and/or Triggers

if there truly is no way of doing it with attributes, it makes me a bit sad

My comment had nothing to do with whether or not anything is possible in Perl 6.

it makes using perl6 public attributes "dangerous"

Duh. Yeah, public attributes are a bad idea.

Even if you manage to make $i.lb = 6; fatal when 4 == $i.ub, then users of your object are likely to do:

$i.lb = 6; $i.ub = 7;

and have it die half-way through.

OO in the style of "a bag of attributes with wrappers around setters (types, 'before's, etc.)" is just a terrible (anti-modular) approach to OO (despite it being extremely common).

- tye        

Replies are listed 'Best First'.
Re^4: [perl6] Complex Attribute Validation and/or Triggers (anti-modular)
by raiph (Deacon) on Mar 09, 2015 at 04:13 UTC
    I almost didn't post in this thread precisely because the initial #perl6 reaction was "what tye said" (referencing your initial just-write-a-method response). I'm pretty sure they'd say the same of this follow up, but I'll add :

    public attributes are a bad idea

    Indeed. There are no public (or even protected) attributes in Perl 6 OO, only private. Code that uses objects, and even sub, super, and trusted classes, has to go thru method accessors.

    Update Fwiw, on reviewing this thread I'm pretty sure I missed tye's point. I'm right that Perl 6 doesn't have "public attributes" using Perl 6 vocabulary. But (I think) tye meant that even public accessor methods are generally a bad idea (no matter what language one is using).

Log In?
Username:
Password:

What's my password?
Create A New User
Domain Nodelet?
Node Status?
node history
Node Type: note [id://1119213]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this?Last hourOther CB clients
Other Users?
Others admiring the Monastery: (5)
As of 2024-04-24 06:33 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found