php みんなのコードの振り返り

こんにちは。hirafujiです。

明日は新卒によるプレゼンテーション大会が行われます。お題は「株式会社ディノの企業説明会」です。
ブログを書く私を尻目に、みんなせっせこ準備を進めております・・・まずい><

さて今日のPHPでは、前回各々が書いたコードをもとに、みんなで振り返りを行いました。

振り返りは、以下の3つの要素に注目して行います。

【振り返り】

【keep】
自分のコードの、次回にも活かす点。
【problem】
自分のコードの、次回は改善した方がいい点。
【try】
自分はやらなかったが、以後取り入れてみた方がいい点。

これらの点に注目して、前回書いた私のコードを振り返ってみると、以下の様になります。

【改善前の私のコード】


<?php

$result = file("result.php") ;
$result2 = array() ;
$target = "東京都" ;

for ( $i=1 ; $i<count($result) ; $i++ ) {
  $result2[] = explode( "," , $result[$i]) ;
}

$count = 0 ;
$total = 0 ;

for ( $i=0 ; $i<count($result2) ; $i++ ) {
  if ( $result2[$i][1] == $target ) {
    $total += ($result2[$i][3]) ;
    $count++ ;
  }
}

echo $target."の数学平均".($total/$count)."点だよ!" ;

?>

【私のコードの振り返り内容】

【KEEP】
  • 都道府県の仕様変更に対応できる。(今回はあまり利点ありませんでしたが…)
【PROBLEM】
  • ファイルを読み込む前に、そのファイルが存在するかどうか調べる。
  • 東京都民がいるかどうか調べる。
  • もっとコメントを入れる。
【TRY】
  • 平均点が割り切れなかった時の対策。
  • 教科の仕様変更への対応。
  • count関数をfor文の外に出す。

ということで、これらの振り返りに基づいて改善したコードが、以下の様になります。
※まだ「教科の仕様変更」には弱いです><

【改善後のコード】


<?php

  //ファイルが存在する時の処理
  if ( file_exists("result.php") ) {

    $result = file("result.php") ; //ファイルの内容を格納する配列
    $target = "東京都" ;            //対象とする都道府県
    $count = count($result) ;
    $sum = 0 ;                     //$targetの人数
    $total = 0 ;                   //$targetの$kyokaの総合計
    $average = 0 ;                 //平均点

    /*
     * $result2のキー対応早見表
     *
     *  [0] 受験番号
     *  [1] 都道府県
     *  [2] 国語
     *  [3] 算数
     *  [4] 英語
     *
     */

    //配列をコンマで区切り、都道府県が合致した時、指定した教科の点数を足す。
    for ( $i = 0 ; $i < $count ; $i++ ) {
      $result2[] = explode( "," , $result[$i]) ;
      if ( $result2[$i][1] == $target ) {
        $total += ($result2[$i][3]) ;       //教科を変えたい時、ここの数字を変更
        $sum++ ;
      }
    }

    $average = ( $total/$sum ) ;

    //結果出力
    if ( $sum != 0) {
      printf( "%sの平均点は %.1f 点です!" , $target , $average) ;
    } else {
      echo $target."の人はいません!" ;
    }

 //ファイルが存在しない時の処理
  } else {
    echo "ERROR : FILE NOT FOUND!!" ;
  }

?>

どうでしょうか。
がんばった割には、見づらくなった様な気もしなくはないですが・・・。

やはり、他人のコードから得るものは多いです。
他の新卒と切磋琢磨しあって、どんどん見やすいコードを書ける様になりたいです!

—-
(2008/06/18 16:54 hirafuji追記)
動画をご覧下さい〜!

2 件のコメント so far »

  1. by takahashi, on 06.13.08 @ 11:19 AM

     

    ふりかえり後の方が確実によくなってると思いますよ。

    2点ほど指摘
    > //配列をコンマで区切り、都道府県が合致した時、指定した教科の点数を足す。
    >
    正しくは「配列をコンマで区切り・・」ではなくて「文字列をコンマで区切り・・・」ですね。

    > $average = ( $total/$sum ) ;
    >
    > //結果出力
    > if ( $sum != 0) {
    > printf( “%sの平均点は %.1f 点です!” , $target , $average) ;
    > } else {
    > echo $target.”の人はいません!” ;
    > }
    >
    この状態だと$sumが0だったときに「0で割り算をした!」というエラーがでますね。
    この部分、せっかく$sumが0かどうかをチェックしてるので、「$averate = ($total/$sum);」を
    if文の中に入れましょう。

  2. by hirafuji, on 06.17.08 @ 6:17 PM

     

    >takahashiさん
    コメントありがとうございます!
    確かにそうですね…。とても参考になりました。ご指摘ありがとうございます!次回もよろしくお願いします!

Comment RSS · TrackBack URI

コメントをどうぞ

名前: (Required)

eMail: (Required)

Website:

Comment:

Spam Protection by WP-SpamFree