Beefy Boxes and Bandwidth Generously Provided by pair Networks
Think about Loose Coupling
 
PerlMonks  

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

by eyepopslikeamosquito (Archbishop)
on Feb 20, 2011 at 07:42 UTC ( [id://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?
Username:
Password:

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

How do I use this?Last hourOther CB clients
Other Users?
Others imbibing at the Monastery: (4)
As of 2024-04-19 06:13 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found