From mark at purdue.edu Mon Mar 19 07:16:41 2018 From: mark at purdue.edu (Mark Senn) Date: Mon, 19 Mar 2018 10:16:41 -0400 Subject: [Purdue-pm] Perl Style guide Message-ID: <12031.1521469001@pier.ecn.purdue.edu> I recommend Tom Christiansen's Perl Style guide from 1997. I agree with way over half of it and found it very thought provoking. FIRST SOME GENERAL COMMENTS ABOUT PROGRAMMING IN GENERAL Use the Emacs text editor, a Dvorak layout keyboard (or anything but QWERTY), an ergonomic keyboard, and a trackball---not a mouse. Don't try to squeeze your code into 80 character wide lines. If the structure of it is better expressed in more characters then use more characters. I'm working on a program now that has lines up to 207 characters (initializing data in that part.) SOME COMMENTS ABOUT TOM'S PERL STYLE GUIDE These comments sometimes disagree with Tom's recommendations The lines that begin with "Perl Style" are the names of Tom's slides. Perl Style: Avoid Byte Processing Use Perl 6 to avoid code like in the example. Perl Style: Break Complex Tasks Up I don't know what "PCB" stands for off-hand. Perl Style: Learn to Switch with for Perl Style: Switch by Using do{} Creatively Perl Style: Switch with for via && and || Perl Style: Switch Using for and do{} Even More Creatively Perl 5 has a switch feature: #!/usr/local/bin/perl use strict; use warnings; use feature qw(say switch); my $day = 'Thursday'; given ($day) { when ('Monday') { say 'feel refreshed and energetic'; } when ('Wednesday') { say ' hump day'; } when ('Friday') { say 'feel worn out'; } default { say 'nothing special going on'; } } Perl 6 has a given/when construct which is more flexible. Perl Style: From Perlstyle (part 1) o Use 4-column indent. <4 is too small, >4 is too big. (Joke: 8 column reminds me of people watching tennis matches---moving eyes back and forth, back and forth) o Don't do if (condition) { statement; statement; } Get a display with lots of lines so the one extra line isn't too much of a penalty and use code where open and close braces are on lines by themselves. if (condition) { statement; statement; } o Don't do statement ; Do statement; o Use spaces and precedence to make code easier to read Don't do if (($name eq 'Mark') && ($cavities == 31)) Do # note two spaces around "&&", one around "eq" and "==". if ($name eq 'Mark' && $cavities == 31) o Break any rule to make patterns easy to see. Like this ($condition) and do { statement; statement }; or use the more compact ($condition) and do statement, statement; o Line up related things vertically $name = 'Mark'; $cavities = 31; $name = 'Toothless'; $cavities = 32; o Start comments at same level of indentaton as code. Don't do # comment code Do # comment code Perl Style: From Perlstyle (part 2) o Don't use parens around function names unless there is a good reason for it. $width = length $column[1]; Use Perl 6! It is a much better, more expressive language, with object oriented programming built-in instead of bolted on as an afterthought. -mark From mark at purdue.edu Mon Mar 19 07:43:04 2018 From: mark at purdue.edu (Mark Senn) Date: Mon, 19 Mar 2018 10:43:04 -0400 Subject: [Purdue-pm] forgot the URL Message-ID: <32448.1521470584@pier.ecn.purdue.edu> The URL for Tom Christiansen's Perl Style guide is https://www.perl.com/doc/FMTEYEWTK/style/slide-index.html/ -mark