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")