わかりやすさ優先でもいい – idea * idea CakePHP修行への返信
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の多用は混乱の元ですので、使わなくても済む構造が可能であれば検討する価値があります。
コメント / トラックバック