Added some conventions and clarified others.

Matias Barcenas 2018-01-09 16:34:38 -06:00
parent d7d1be4463
commit 894f6c7e1a
1 changed files with 49 additions and 9 deletions

@ -9,11 +9,41 @@ Not hard tabs. Not four spaces. Not however many spaces you feel like. **2 space
## Line Length ## Line Length
Be reasonable. Keeping within 80 characters is recommended, 120 is the **maximum**. 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 ## Variables
* Limit the scope of variables to local if within a function. * Limit the scope of variables to local if within a function.
* Wrap your variables in ${curly} ${braces}. * Wrap your variables in ${curly} ${braces} for clarity.
* Use ${snake_case} for your variables. NOT ${camelCase} or ${FuCk_you_iDoWhat_i_want}. * Use existing variables whenever possible to avoid pollution.
* Use existing variables whenever possible. * 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** **Bad**
``` ```
@ -25,6 +55,7 @@ $(whoami)
${USER} ${USER}
${PWD} ${PWD}
``` ```
## Flow Logic ## Flow Logic
Place ; do ; then on the same line as while, for, and if. Place ; do ; then on the same line as while, for, and if.
<br> <br>
@ -32,12 +63,17 @@ Place ; do ; then on the same line as while, for, and if.
**Bad** **Bad**
``` ```
while true while true
do do ...
...
done
``` ```
**Good** **Good**
``` ```
while true;do while true; do
...
done
``` ```
## Functions ## Functions
**Use POSIX syntax:** **Use POSIX syntax:**
``` ```
@ -48,9 +84,13 @@ foo() {
NOTE: There are some exceptions but in general use POSIX. NOTE: There are some exceptions but in general use POSIX.
## Misc ## Misc
Do NOT use backticks $() to execute something in a subshell. Do NOT use backticks (\`command\`) to execute something in a subshell.
Bad: Bad:
`print "use parentheses"` ```
<br> now=`date`
```
Good: Good:
`print "use parentheses"` ```
now=$(date)
```