++. Nice intro.
The first step in thinking clearly-like-a-programmer is to know what kind of space you're working with at any given time. The second step is to use tools that are appropriate to the space in question. Programmers who haven't figured out what kind of space they're working with can waste endless time one of two ways:
It can help when writing interfaces to think about the information spaces involved and make sure that you support the operations necessary for that space, and only those operations.
If your object has some internal state that forms a nominal information space (e.g. readable and/or writable), you know you need to provide an interface that allows existence/equivalence tests for that state (e.g. $foo->is_readable, $foo->is_writable).
If you don't supply these tests explicitly (e.g. you return a bitmask) then you're offloading responsibities, and exposing implementation, to the user of your class. Often this will be a bad decision since the user can make mistakes, and you can change your implementation.
Posts are HTML formatted. Put <p> </p> tags around your paragraphs. Put <code> </code> tags around your code and data!
Read Where should I post X? if you're not absolutely sure you're posting in the right place.
Please read these before you post! —
Posts may use any of the Perl Monks Approved HTML tags:
You may need to use entities for some characters, as follows. (Exception: Within code tags, you can put the characters literally.)
- a, abbr, b, big, blockquote, br, caption, center, col, colgroup, dd, del, div, dl, dt, em, font, h1, h2, h3, h4, h5, h6, hr, i, ins, li, ol, p, pre, readmore, small, span, spoiler, strike, strong, sub, sup, table, tbody, td, tfoot, th, thead, tr, tt, u, ul, wbr
Link using PerlMonks shortcuts! What shortcuts can I use for linking?
See Writeup Formatting Tips and other pages linked from there for more info.
| & || & |
| < || < |
| > || > |
| [ || [ |
| ] || ] ||