Beefy Boxes and Bandwidth Generously Provided by pair Networks
Problems? Is your data what you think it is?

Comment on

( #3333=superdoc: print w/replies, xml ) Need Help??
These are mine:
  1. Keep things simple.
  2. Layering/encapsulation and good API design are the keys to good programming.
  3. Too much abstraction is as bad as too little.
  4. Minimize code dependencies and specially temporal dependencies: I specially hate the case when you have an object that requires its methods to be called in a particular order and that is manipulated from different layers. Impossible to follow code!
  5. If you have to write some complicated piece of code, try to hide it behind and easy to use API.
  6. Code flow must be easy to follow.
  7. Perl is a powerful and expressive language, don't be afraid to use it to its maximum.
  8. Avoid code duplication. Don't copy&paste. Boilerplate is OK to a certain degree.
  9. Make your subs/methods meaningful.
  10. Try to avoid helper subs/methods with long lists of arguments.
  11. Don't use an object when a simple hash or array will do.
  12. Speed matters, scalability matters, memory usage matters, IO matters. Keep that in your mind while programming.
  13. When breaking some of the previous rules, document it.
  14. Check the validity of your input (specially when dealing with external input), refuse anything you don't know how to handle: Note that this does not go against the robutness principle, they are orthogonal concepts.
  15. Write regular expressions as strict as possible.
  16. Check for errors extensively. Don't ignore them.
  17. Include internal consistence checks.
  18. Add lots of debugging code so that you may be able to debug problems reported by others even when you are not able to reproduce them.
  19. Depending on an external module needs a good justification.
  20. use strict, use warnings, selectively disable them when required.
  21. No TDD, it gets on the way of my iterative design/programming thinking process (but if it works for you I am OK with it).
  22. Otherwise, testing is a very good thing.
  23. Be consistent in your coding style.
  24. And use a good editor that takes care of it for you: actually I don't care too much about cosmetics, as far as blocks are indented it is OK for me.
  25. Finally, paraphrasing the great Salvor Hardin, "Never let your sense of best practices prevent you from doing what is right!"

In reply to Yet another set of Perl best practices by salva

Use:  <p> text here (a paragraph) </p>
and:  <code> code here </code>
to format your post; it's "PerlMonks-approved HTML":

  • Posts are HTML formatted. Put <p> </p> tags around your paragraphs. Put <code> </code> tags around your code and data!
  • Titles consisting of a single word are discouraged, and in most cases are disallowed outright.
  • 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:
    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
  • You may need to use entities for some characters, as follows. (Exception: Within code tags, you can put the characters literally.)
            For:     Use:
    & &amp;
    < &lt;
    > &gt;
    [ &#91;
    ] &#93;
  • Link using PerlMonks shortcuts! What shortcuts can I use for linking?
  • See Writeup Formatting Tips and other pages linked from there for more info.
  • Log In?

    What's my password?
    Create A New User
    and all is quiet...

    How do I use this? | Other CB clients
    Other Users?
    Others meditating upon the Monastery: (5)
    As of 2018-04-20 03:24 GMT
    Find Nodes?
      Voting Booth?