Added some conventions and clarified others.
parent
d7d1be4463
commit
894f6c7e1a
|
@ -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)
|
||||||
|
```
|
Loading…
Reference in New Issue