您好,欢迎访问一九零五行业门户网

讨论一下mvc的C跟V的维护性和健壮复用性

讨论一下mvc的c和v的维护性和健壮复用性
本帖最后由 a9925 于 2015-01-17 17:49:33 编辑 mvc大家都很熟, 基本的结构也很明白。
今天我想和大家讨论一下,
其中控制层中,一个控制器里有多少个方法为合适,
以及,一个显示层是否可以多次重复调用(像增加用户页面和修改用户页面基本上是一样的)。
如果增加和修改用一个页面的话,势必会在view中写过多的逻辑判断,判断是增加控制层进来的,还是修改层进来的,以及,做完增加或修改后跳到哪个相应的控制层。 (这些都要在显示层给个action的值,或name属性,又或都get或post提交 这些判断来传到不同的控制层。)
因为在维护一个旧系统,感到很困惑。
给大家贴段代码看看以前旧项目的代码,哪需要提高,因为每次进到一个function中,都要不断的分析这个function是做什么的,维护起来,读代码的时间太浪费。请大家不吝赐教。
举例:控制层  //写的是修改成员 但里面有些功能不是修改成员数据,这只是一个文件,项目中其它地方的代码也都类似,甚至更多,每次进到方法里要走一遍流程才知道到底执行哪个,以及在哪跳出。 甚至跳出的地方用一个控制器的名称代替view(xxx.php) ,从而重复上边我说的,进入到又一次循环分析代码中。  维护起来很不方便。 需要怎么理这思路,以及以后注意哪方面进行提高 ,希望提些建设性的意见,谢谢。
//----------------修改成员数据-------------------------------
public function alterinfo()
{
$straction = ;
$teamname=$_session['teamname'];
if ($_get){
$inuserid = $_get['id'];
$data['userid'] = $inuserid;
}
if($_post){
// var_dump($_post);
// die();
$userid = $_post['userid'];
$mobile = $_post['mobile'];
$realname = $_post['realname'];
$zhengjian = trim($this->input->post('zhengjian'));
//$idnumber = $_post['idnumber'];
$idnumber = trim($this->input->post('idnu'));
$address = $_post['address'];
$zipcode = $_post['zipcode'];
$clothsize = $_post['clothsize'];
$data['strclothopt'] = $this->common_model->getclothopy($clothsize);
$birthday = trim($this->input->post('birthday'));
$passportnu = trim($this->input->post('passportnu'));
$gender = trim($this->input->post('gender'));
if ($_files[idnumscan][error] > 0)
{
$data['error'] = $_files[idnumscan][error] .
;
$userpic = $_post['idnumscans'];
}
else
{
$data['filename'] = $_files[idnumscan][name];
$data['filetype'] = $_files[idnumscan][type];
$data['filesize'] = ($_files[idnumscan][size] / 1024) . kb;
$data['filepath'] = $_files[idnumscan][tmp_name];
$excelname=iconv(utf-8,gb2312, $_files[idnumscan][name]);
$userpic = $_files[idnumscan][name];
move_uploaded_file($_files[idnumscan][tmp_name],upload/image/.$excelname);
}
if($_post['action']==add){
$straction = $teamname;
$data['userid'] = ;
//倒数第二位是奇数为男性,偶数为女性
$gender = substr($idnumber,16,1)%2;
//var_dump($gender);
$teamid = $_session['clubid'];
$usertype=0;
$this->load->model('member_model');
$rowisreg = $this->member_model->isregistered($idnumber,$clubid);
if($rowisreg){
echo ;
//redirect(base_url().member);
}else{
$res = $this->member_model->insmember($mobile, $realname, $idnumber, $gender, $address, $zipcode, $clubid, $usertype,$userpic,$clothsize);
if($res){
echo ;
redirect(base_url().team);
}
}
}
if($_post['action']==alert){
// var_dump($zhengjian);
// die();
$straction = $teamname;
$data['userid'] = $userid;
if($idnumber!='' and $zhengjian =='1'){ //用身份证增加或修改的
//倒数第二位是奇数为男性,偶数为女性
$gender = substr($idnumber,16,1)%2;
//var_dump($gender);
$clubid = $_session['clubid'];
$usertype=0;
$this->load->model('member_model');
$rowisreg = $this->member_model->isregisteredtoo($idnumber,$clubid,$userid);
if($rowisreg){
echo ;
//redirect(base_url().member);
}else{
$res = $this->member_model->alertmember($mobile, $realname, $idnumber, $gender, $address, $zipcode, $clubid, $usertype,$userpic,$clothsize,$userid,$birthday,$passportnu);
if($res){
echo ;
redirect(base_url().team);
}
}
}else{ //用护照增加或修改的
// echo 111111111111;
// die();
$clubid = $_session['clubid'];
$usertype=0;
$res = $this->member_model->alertmemberpassportnu($mobile, $realname, $idnumber, $gender, $address, $zipcode, $clubid, $usertype,$userpic,$clothsize,$userid,$birthday,$passportnu,$gender);
if($res){
echo ;
redirect(base_url().team);
}
}
}
$arrmember['userid'] = $userid;
$arrmember['mobile'] = $mobile;
$arrmember['realname'] = $realname;
$arrmember['idnumber'] = $idnumber;
$arrmember['address'] = $address;
$arrmember['zipcode'] = $zipcode;
$arrmember['userpic'] = $userpic;
$arrmember['clothsize'] = $clothsize;
//var_dump($arrmember);
}else{
//-----显示队员信息
$straction = $_session['teamname'];
$arrmember = $this->team_model->getmemberinfo($inuserid);
$data['strclothopt'] = $this->common_model->getclothopy($arrmember['clothsize']);
}
$data['straction'] = alert;
$data['arrmember'] = $arrmember;
$data['straction'] = $straction;
$this->load->view('head');
$this->load->view('player',$data);
$this->load->view('foot');
}

------解决思路----------------------
按模块化设计原则:有一个入口,一个出口。一个模块完成一件事情
显然你的设计是不符合的
------解决思路----------------------
$inuserid = $_get['id'];
不用判斷參數合法性嗎?很危險啊。
if($_post['action']==add){ 。。。。
if($_post['action']==alert){
你只是做了分支,並沒有按模塊分function處理。
其它类似信息

推荐信息