Skip to content

Code style guide

Matias Barcenas edited this page Jan 9, 2018 · 6 revisions

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

Indentation

Indent = two spaces

Not hard tabs. Not four spaces. Not however many spaces you feel like. 2 spaces.

Line Length

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

Functions

  • Use existing functions whenever possible to avoid pollution.
  • Identify functions using snake-case.
  • Prefix identifiers with the lowercased script name defining them.

For example, "fluxion_set_language"

This function is prefixed with "fluxion" to signify it belongs to the fluxion script. We use camel-case because identifiers look more like regular commands.

Variables

  • Limit the scope of variables to local if within a function.
  • Wrap your variables in ${curly} ${braces} for clarity.
  • Use existing variables whenever possible to avoid pollution.
  • Identify variables using camel-case.
  • Prefix identifiers with the capitalized script name defining them.

For example, the global "FluxionLanguage"

This global is prefixed with "Fluxion" to signify it belongs to the fluxion script. Using camel-case makes it clear it's not a subroutine.

Constants

  • Limit the scope of constants to local if within a function.
  • Wrap your constants in ${curly} ${braces} for clarity.
  • Use existing constants whenever possible to avoid pollution.
  • Identify constants using camel-case.
  • Prefix identifiers with the uppercased script name defining them.

For example, "FLUXIONVersion"

This global is prefixed with "FLUXION" to signify it belongs to the fluxion script. This makes it clear a constant was defined because it's uppercase-prefixed similar to old C constants.

Built-in Globals

Use built-in globals when possible to avoid having to create sub-shells and save resources.

Bad

$(pwd)	
$(whoami)

Good

${USER}
${PWD}

Flow Logic

Place ; do ; then on the same line as while, for, and if.

Bad

while true
do ...
...
done

Good

while true; do
...
done

Functions

Use POSIX syntax:

foo() {
  print 'bar'
}

NOTE: There are some exceptions but in general use POSIX.

Misc

Do NOT use backticks (`command`) to execute something in a subshell.

Bad:

now=`date`

Good:

now=$(date)
Clone this wiki locally