0
0

More than 3 years have passed since last update.

【学習記録(PHP)】関数作りの失敗

Last updated at Posted at 2020-07-24

こんにちは、いちかわです。・ V ・

ECサイトを制作する過程で、関数の取り扱いが増えてきたので、
忘れないように記録させていただきます。

関数は便利で分かりやすくが基本!

関数をつくるとき、修正のしやすさや、流用が効く書き方が重要になってきます。

まずはこちらをご覧ください。関数を覚えたての私が、最初に書いた関数です。
おそろしい見た目をしていますが、このときの私は「ちゃんと動いた!」と、とても満足していました。

こちらのプログラムは、\$nameと\$commentの文字数をカウントし、指定文字数をオーバーした場合には、\$err_msgという配列にエラーメッセージをためるという仕様になっています。

function.php
$err_msg = check_text_length($err_msg, $name, $comment); 
function.php
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」という命名が分かりにくく、何が返ってくるかが分からない。

  • それぞれの引数に何を入れたらよいかが分からない。

  • 限定的で、他のプログラムへの流用が効かない。


などなど、上げだしたらきりがありません(TT)


そこで、この怖い関数を自分なりに見れる関数へ改良してみました。
それがこちらになります。
function.php
if (is_over_length($name, 20) === true) {
    $err_msg[] = '注)名前は20字以内におさめてください。';
}

if (is_over_length($comment, 100) === true) {
    $err_msg[] = '注)コメントは100字以内におさめてください。';
}  
function.php
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引数は文字数の上限値とすることで、関数の分かりやすさと、汎用性を改善しました。
こうすることで、先ほどの関数に比べて見栄えも使いやすさも改善されました。
もしも、「こうすればもっとよくなるよ」というご指摘がございましたら、教えていただけますと幸いです。


勉強を進めれば進めるほど、分からないことはどんどん増えていく一方ですが、
過去の自分のプログラムの書き方を指摘できるようになったのは、ちゃんと前に進んでいけてるからだと思います。昔の自分の姿を見るというのは少し恥ずかしいのですが、今後も成長を実感しながら勉強していきたいと思います。


ここまでご覧頂き、ありがとうございました!

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0