Beefy Boxes and Bandwidth Generously Provided by pair Networks
Don't ask to ask, just ask

Re^4: What's it with Perl Syntax ?!

by eyepopslikeamosquito (Bishop)
on Feb 20, 2011 at 07:42 UTC ( #889161=note: print w/replies, xml ) Need Help??

in reply to Re^3: What's it with Perl Syntax ?!
in thread What's it with Perl Syntax ?!

You are using the term "readable code" without clearly defining it. I think "maintainable code" is far more important. Some of the things that help make code "maintainable" are:

  • Sound domain abstractions.
  • Wise program decomposition.
  • Highly cohesive, loosely coupled modules.
  • Descriptive, explanatory, consistent and regular names.
  • Minimizing the exposure of implementation details. Minimizing the use of global data.
  • Minimizing the scope of variables, pragmas, etc. Avoiding action at a distance.
  • Avoiding duplication (DRY).
  • Encapsulation.
  • Interfaces that are: consistent; easy to use correctly; hard to use incorrectly; easy to read, maintain and extend; clearly documented; appropriate to your audience.
  • Useful commenting and documentation.
  • Components that are testable in isolation. Comprehensive test suites.
  • Avoiding unnecessary cleverness (encapsulating and commenting it when cleverness is required).
  • Establishing a rational error handling policy and following it strictly.
  • Logging effectively. Logging enough information to trouble-shoot customer problems without the need to attach a debugger.
  • Checking the result of all file operations, API calls and external commands, and handling unexpected results.
  • Consistent code layout.
  • Avoiding "big arse" functions.
  • Avoiding magic numbers.
Perl doesn't stop me doing any of this. Indeed, it nicely supports all of the above points IMHO. Note that a more subjectively "readable" programming language does not somehow magically prevent you from violating any of the above points. Personally, I have little interest in cosmetic issues, such as whether one prefers forced indentation (a la Python) or considers Perl's regex syntax or use of $ in variable names "ugly" or "line noise", for that is just personal (subjective) preference and has little to do with writing maintainable code.

See also:

Log In?

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

How do I use this? | Other CB clients
Other Users?
Others cooling their heels in the Monastery: (5)
As of 2021-06-15 04:51 GMT
Find Nodes?
    Voting Booth?
    What does the "s" stand for in "perls"? (Whence perls)

    Results (66 votes). Check out past polls.