ホーム » ブログ » 2007年08月 » わかりやすさ優先でもいい - idea * idea CakePHP修行への返信

わかりやすさ優先でもいい - idea * idea CakePHP修行への返信

2007-08-02 written by akiyan | このエントリーを含むはてなブックマーク このエントリーを含むはてなブックマーク

i d e a * i d e a CakePHP修行! への返信です。

わかりやすさを優先してもよいとき

バグつぶし他(emptyとisset、WWW_ROOT、low関数)・・・(CakePHP修行 #27) | i d e a * i d e aより。

いきなり$meにユーザーデータを突っ込んでしまったのですが、良いですかね?それとも$this->User->idだけ取得しておいてその都度必要なデータを取得したほうが良かったのだろうか。ちょっと富豪的ですが、個人的にわかりやすいからこれでいいかな?

気になっているコードは以下。

function edit ()
{
  $this->pageTitle = 'Edit My Profile';
  $this->checkSession();
  $me = $this->User->findById($this->Session->read('my_id'));
  $this->set('me', $me);
  if (empty($this->data))
  {
    $this->data = $me;
  }
  else
  {
    // password change
    $this->data['User']['pwd'] = empty($this->data['User']['pwd']) ? $me['User']['pwd'] : sha1(PWD_KEY.$this->data['User']['pwd']);
    // file upload
    if (!empty($this->data['User']['pic']['name']))
    {
      $ext = low(preg_replace("!.*\.!", null, $this->data['User']['pic']['name']));
      $filename = sprintf("%05d.%s",$me['User']['id'], $ext);
      move_uploaded_file($this->data['User']['pic']['tmp_name'], WWW_ROOT."pics".DS.$filename);
      $this->data['User']['pic'] = $filename;
    } else {
      $this->data['User']['pic'] = $me['User']['pic'];
    }
    // save
    if ($this->User->save($this->data['User']))
    {
      $this->Session->write('sys_msg', 'Your profile has been updated.');
      $this->redirect('/users/home/');
    }
  }
}

「いきなり$meにユーザーデータを突っ込んでしまったのですが」ということですが、このコードから見て取れる限りではどうってことありません。典型的なWebアプリケーションでこれくらいの処理が問題になるのは、アクセス増加に対処するためにハードを追加変更したりキャッシュを導入したりしたあとで、0コンマ1秒のチューニングしか残ってないときに行うのが効率的であることが多いです。

「自分のため、自社のために作りながら作る」というプロセスが可能な場合は、これくらいのことであればちょっとくらいは富豪的でも、開発効率を優先すればよいでしょう。

...ちなみにちょっと「if else」が多いのが個人的に気にかかります。if elseの多用は混乱の元ですので、使わなくても済む構造が可能であれば検討する価値があります。

2007-08-02 written by akiyan | 記事 | このエントリーを含むはてなブックマーク このエントリーを含むはてなブックマーク

コメント

投稿



本文と関連性の無いコメントは削除することがあります。予めご了承ください。

トラックバック

このエントリへのトラックバックURLは
http://www.akiyan.com/cgi/mt/mt-tb.cgi/1413
です。トラックバック元のエントリに当サイトへのリンクが無い場合はトラックバックを削除することがあります。