1
0
Fork 0
mirror of synced 2024-12-22 06:01:06 -05:00
7 Code Style Guide
Eric Nielsen edited this page 2022-01-11 19:52:26 -05:00

These are the code style guidelines that should be followed when contributing to Zim.

Indentation

2 spaces.

When using line continuations, indent with 2 extra spaces:

for x in a very very very very very very very very very very very very very \
    very long line; do
  print ${x}
done

Line length

Be reasonable. Keeping within 80 characters is recommended, 120 is the maximum.

Variables

Wrap your variables in ${curly} ${braces}.

Use ${snake_case} for your variable names.

Use existing variables whenever possible:

-print "$(whoami) in $(pwd)"
+print "${USER} in ${PWD}"

Limit the scope of variables to local when within a function.

When declaring a global variable, be explicit and do it using typeset -g. This avoids warnings when WARN_CREATE_GLOBAL is set:

-: ${VAR=1}
+if (( ! ${+VAR} )) typeset -g VAR=1

Flow logic

For short single commands, prefer one-liners:

  • Short for form: for x (foo bar) print ${x}
  • Short if form: if [[ -d ${dir} ]] cd ${dir} (Only applicable when the test part is delimited, such as by [[ ]] or (( )). See the Zsh manual.)

Otherwise just place ; do or ; then on the same line as while, for ... in or if.

Use (( )) for arithmetic conditions, and [[ ]] for other condition evaluations. Don't use [ ].

With arithmetic conditions:

  • Don't use $ in front of variables: (( var > 1 ))
  • Unless some substitution is needed: (( ${#var} > 1 ))

Functions

Use POSIX syntax:

-function foo {
+foo() {
   print bar
 }

NOTE: There is a difference between this and ksh style, but unless you know what it is and you're sure you need it, use POSIX.

Misc

Don't use backticks ` to execute something in a subshell. $(print "use parentheses")