É uma prática ruim colocar seções do código principal em funções? [fechadas]

0

Eu não gostei do código que eu vi, então eu compactei todos os 'blocos' principais em funções. (Isso também impediria a execução do código se um erro estivesse presente.) Não sei se isso é uma prática ruim ou não. Aqui está o código (sobre a primeira linha: bash-4.3 está instalado em /usr/local/bin/bash .):

#!/usr/local/bin/bash
cat /dev/null > out.txt
resetcolor() {
    echo -ne "\e[0m"
}
color() {
    resetcolor
    if [ $# -eq 1 ]
    then
        echo -ne "3[38;5;${1}m"
        elif  [ $2 == "b" ]
        then
            echo -ne "3[1;38;5;${1}m"
    fi
}

prob() {
    x=$(echo "scale=4;($1/$c)" | bc)
    y=$(echo "scale=2;$x*100" | bc) 
    if   [[ ${y%??} == *".00"* ]] ; then echo "${y%?????}%"
    elif [[ ${y#????} == "000" ]] ; then echo "${y%????}%"
        elif [[ ${y#???} == "3300" ]] ; then echo "${y%?????}.33%"
    elif [[ ${y#???} == "6600" ]] ; then echo "${y%?????}.67%"
    else echo "${y%??}%"
        fi

}
readmessage() {
if [ $# -eq 1 ]
then
    c=$1
    echo "Flipping coins..."
    else
    echo "Enter number of coins to flip..."
    read c
    echo "Flipping coins..."
fi
}
flip() {
     < /dev/urandom LC_CTYPE=C gtr -dc HT | head -c $c | while read -n 1 ccoin
    do
        echo -n "$ccoin"
        echo "$ccoin" >> out.txt
    done
    echo -e "\n"
}
stats() {
if (($c<10)) 
then
    exit 1
else
    co=$( < out.txt )
    color 035
    echo "Heads:"
        h='grep -o "H" <<<"$co" | wc -l'
        color 047 b
        echo $h
        resetcolor
        color 027 
    echo "Tails:"
        color 045 b
        t='grep -o "T" <<<"$co" | wc -l'
        echo $t
        color 255 b
    echo " "
    echo "Experimental probability"     
        echo "Heads:"
            prob $h 
        echo "Tails:"
            prob $t
fi
}
###
readmessage $1
flip
stats
###
    
por 智障的人 25.06.2015 / 08:57

1 resposta

1

É definitivamente não uma prática ruim. Usar funções é uma das boas maneiras de dividir o código em blocos. Desta forma, é fácil:

  • veja quais partes do código estão ativadas
  • desabilitar uma parte do código
  • veja quais partes do código estão fazendo o quê, porque elas são rotuladas e claramente separadas de outras partes do código com funções
por 25.06.2015 / 09:15