t[cleanup] Improve style guide - tomb - the crypto undertaker HTML git clone git://parazyd.org/tomb.git DIR Log DIR Files DIR Refs DIR README DIR LICENSE --- DIR commit 64c20d95f28cc7ce0bfdc0a21a34988fe18b24b7 DIR parent 9539d0cc4bac3d4c6a7352202b2df788c6b905c8 HTML Author: hellekin <hellekin@cepheide.org> Date: Wed, 22 Oct 2014 18:13:14 -0300 t[cleanup] Improve style guide Diffstat: M doc/HACKING.txt | 80 ++++++++++++++++++++++++++----- 1 file changed, 68 insertions(+), 12 deletions(-) --- DIR diff --git a/doc/HACKING.txt b/doc/HACKING.txt t@@ -3,6 +3,7 @@ Style guidelines Indentation ----------- + Code must be indented using four spaces. In vim, this can be accomplished using t@@ -12,13 +13,64 @@ In vim, this can be accomplished using Naming ------ -global variables should be `$UPPERCASE`. +Short version: $GLOBAL, $local, func_name() + +Variables must be declared and scoped. + +GLOBAL_VARIABLES # are uppercase unless there's a good reason not to. + # (e.g., path as a special meaning in Zsh) + +local samplevar # are lowercase and scoped to the function # name + # should be readable. Do not make unnecessary + # shortcuts that would impede others to read fluidly + +# Please comment your functions before coding them: it helps +# clear the mind on the objective. If it does too much, you +# probably want to split it. Any reusable code should be +# isolated. +any_function() {} + +_internals() {} # Prepend an _ if the function is clearly internal, + # that is, if it's only called within the scope of + # another function. + + +Sample code: + +# Sample public command. +# +# It shows developers how to write readable code. +# Returns 0 on success, or fails +public_command() { + local tombpath="$1" # First argument is the path to the tomb + local orientation="${2:-South}" # Second optional argument + local something is happening + + [[ -z $tombpath ]] && { + _failure "Usage public_command tombpath [orientation=South]" } + + case $orientation in + (South|North|East|West) break;; + (*) + _failure "orientation must be one of South, North, East, or West." + ;; + esac -local variables should be `$lowercase`, best if it can be written without underscores. -If you feel the need to name a variable `$longdescriptionofwhatthisisusefulfor`, -then you're allowed to use underscores. But do you really need? + _check_swap # Ensure the available memory is safe + _plot $tombpath # Set TOMB{PATH,DIR,FILE,NAME} -functions should be lowercase+underscores: `do_this()` + for is in $TOMBLOOPDEVS; do + [[ -k $is ]] && { + happening+="$is " + } || { + something+="$is " + } + done + + _message "You gotta sort your bones." + + return 0 +} Reporting to the user t@@ -37,20 +89,22 @@ Here is the deal: Name (Shortcut) Return When to use ================================================================================= -_failure (die) exit 1 You want to exit the program with a fatal error. - You may pass a different exit code as second argument. - -_warning (no) You want to inform the user about an error condition. +_verbose (xxx) You need to check the current state of the program. _message (say) You want to tell the user about what's going on. You can pass -n (shortcut: act) for inline messages. -_verbose (xxx) You need to check the current state of the program. +_warning (no) You want to inform the user about an error condition. _success (yes) You want to tell the user about a successful result. +_failure (die) exit 1 You want to exit the program with a fatal error. + You may pass a different exit code as exitval. + All messaging function take a single "message" argument. -_failure takes an exit code as an optional second argument. +_failure takes an exit code as an optional exitval environment variable. + +Additionally you can use _print to pass translatable string without decoration. Examples: t@@ -61,9 +115,10 @@ Examples: echo "are useful" _success "All is fine" _warning "Something's wrong" + _print "Did I really say that?" _failure "Fatal error: exiting with default exit code 1" _message "This is not reached, nor the next 'die' command" - die "I am Jack's dead corpse." 127 + exitval=127 die "I am Jack's dead corpse." Will display something like: t@@ -73,4 +128,5 @@ Will display something like: tomb > Inline messages are useful tomb (*) All is fine tomb [W] Something's wrong + Did I really say that? tomb [E] Fatal error: exiting with default exit code 1