こんにちは、いちかわです。・ V ・
ECサイトを制作する過程で、関数の取り扱いが増えてきたので、
忘れないように記録させていただきます。
関数は便利で分かりやすくが基本!
関数をつくるとき、修正のしやすさや、流用が効く書き方が重要になってきます。
まずはこちらをご覧ください。関数を覚えたての私が、最初に書いた関数です。
おそろしい見た目をしていますが、このときの私は「ちゃんと動いた!」と、とても満足していました。
こちらのプログラムは、$nameと$commentの文字数をカウントし、指定文字数をオーバーした場合には、$err_msgという配列にエラーメッセージをためるという仕様になっています。
$err_msg = check_text_length($err_msg, $name, $comment);
function check_text_length($err_msg, $name, $comment) {
$name_length = mb_strlen($name);
$comment_length = mb_strlen($comment);
if ($name_length > 20 || $comment_length > 100) {
$err_msg[] = '注)名前は20字以内、コメントは100字以内におさめてください。';
}
return $err_msg;
}
こちらの関数のいけないところは、
- 「check_text_length」という命名が分かりにくく、何が返ってくるかが分からない。
- それぞれの引数に何を入れたらよいかが分からない。
- 限定的で、他のプログラムへの流用が効かない。
そこで、この怖い関数を自分なりに見れる関数へ改良してみました。 それがこちらになります。
if (is_over_length($name, 20) === true) {
$err_msg[] = '注)名前は20字以内におさめてください。';
}
if (is_over_length($comment, 100) === true) {
$err_msg[] = '注)コメントは100字以内におさめてください。';
}
function is_over_length($str, $int) {
$str_length = mb_strlen($str);
if ($str_length > $int) {
return true;
}
}
まずは、曖昧だった「check_text_length」という関数名を、「is_over_length」に変更して、真偽値が返ってきそうな雰囲気を出しました。
また、第1引数は文字数をチェックしたい変数、第2引数は文字数の上限値とすることで、関数の分かりやすさと、汎用性を改善しました。
こうすることで、先ほどの関数に比べて見栄えも使いやすさも改善されました。
もしも、「こうすればもっとよくなるよ」というご指摘がございましたら、教えていただけますと幸いです。
勉強を進めれば進めるほど、分からないことはどんどん増えていく一方ですが、
過去の自分のプログラムの書き方を指摘できるようになったのは、ちゃんと前に進んでいけてるからだと思います。昔の自分の姿を見るというのは少し恥ずかしいのですが、今後も成長を実感しながら勉強していきたいと思います。
ここまでご覧頂き、ありがとうございました!