![メインコード部分を関数に入れるのは悪い習慣ですか? [閉鎖]](https://linux33.com/image/67734/%E3%83%A1%E3%82%A4%E3%83%B3%E3%82%B3%E3%83%BC%E3%83%89%E9%83%A8%E5%88%86%E3%82%92%E9%96%A2%E6%95%B0%E3%81%AB%E5%85%A5%E3%82%8C%E3%82%8B%E3%81%AE%E3%81%AF%E6%82%AA%E3%81%84%E7%BF%92%E6%85%A3%E3%81%A7%E3%81%99%E3%81%8B%EF%BC%9F%20%5B%E9%96%89%E9%8E%96%5D.png)
コードの見方が気に入らなかったので、すべての主要な「チャンク」を関数に圧縮しました。 (これを行うと、エラーがあるとコードが実行されなくなります。)これが悪い習慣かどうかはわかりません。コードは次のとおりです(最初の行:bash-4.3
にインストールされています/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 "\033[38;5;${1}m"
elif [ $2 == "b" ]
then
echo -ne "\033[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
###
答え1
完全にいいえこれは悪い習慣です。関数を使用することは、コードを複数の塊に分割する良い方法の1つです。これにより、以下を簡単に実行できます。
- どのコードセクションが有効になっているかを確認してください。
- 一部のコードを無効にする
- コードのどの部分が何をしているかを確認してください。ラベルが付けられており、関数によってコードの残りの部分とはっきりと区別されているからです。