对某个女孩“恋爱”代码的改进

5 篇文章 0 订阅
5 篇文章 0 订阅
曾经一个女孩写的代码:

result love(boy, girl)
{-
  if ( boy.有房() and boy.有车() )
   {-
    boy.set(nothing);
    return girl.嫁给(boy);
  }
  if ( girl.愿意等() )
  {-
   while( ! (boy.赚钱 > 100,000 and girl.感情 > 8 )

   {-
    for ( day=1; day <=365; day++)
    {-
     if ( day == 情人节 )
     if ( boy.givegirl(玫瑰) )
      girl.感情++;
      else
       girl.感情--;

        if( day == girl.生日)
     if ( boy.givegirl(玫瑰) )
        girl.感情++;
        else
        girl.感情--;

      boy.拼命赚钱();
      }
     }
    if ( boy.有房() and boy.有车() )
     {-
        boy.set(nothing);
         return girl.嫁给(boy);
       }

   年龄++;
   girl.感情--;
   }

  return girl.goto( another_boy);
  }
}

一个牛人给她的回复:
private object love(object boy,object girl)
{
//假定已对变量boy和gril赋予了人类的各种属性
switch(gril.Condition)
{
case gril.HaveMuchMoney://如果女孩很有钱
{
boy.love++;
boy.GiveRoseToGirl++;
girl.Money--;
if(girl.Money<1000000)
{
boy.love--;
boy.GiveRoseToGirl--;
}
break;

}
case gril.HaveBigDroit://如果女孩有至高的权利
{
boy.love++;
boy.GiveRoseToGirl++;
boy.Money++;
if(girl.Droit<=0)//一旦女孩失去权利甚至限于挫折之中
{
boy.love<=0;
boy.GiveRoseToGirl=0;
}

break;
}
case gril.VeryBeautiful://如果女孩很漂亮
{
boy.love++;
boy.GiveRoseToGirl>=999;
boy.Money--;
if(girl.OLd>=30)//女孩的年龄大了
{
boy.love--;
boy.loveOtherBeautifulGirl
boy.GiveRoseToGirl=0;
}

break;
}
case gril.VertCommonly://如果女孩很普通
{
gril.love++;
gril.GiveRoseToBoy++;
boy.love++;
boy.GiveRoseToGirl<=1;
if(girl.old>=30)
{
boy.love--;
boy.GiveRoseToOtherGirl=0;
gril.love++;
gril.GiveMoneyToBoy++;
boy.love++;
}

break;
}

}

}

 

这段代码可以写得更紧凑些:

1. girl()和boy()结婚的条件重复了两次,应该用单独的函数包装。
2. 在365天的循环中,对待两个特殊日子的处理逻辑完全相同,应该合并,将对日子的处理的语句写在一起。
3. boy.拼命赚钱()是boy在单独线程里面处理的,girl只是在检查boy线程工作的状态,所以boy.拼命赚钱()语句不应该出现,而应该换线程等待语句,比如sleep(1天);
4. 最后一个return 语句有很大的语病,正确的逻辑是选择一个新的boy,然后重新递归执行:return love(selectAnotherBoy());

修改后如下:

function marry(boy, girl)
{
boy.set(nothing);
return girl.嫁给(boy);
}

function canMarry(boy, girl)
{
  return boy.有房() and boy.有车();
}

function love(boy, girl)
{
if (canMarry(boy, girl) {
  marry(boy, girl);
  return;
}

if (girl.愿意等()) {
  for (; !(boy.年收入 > 100,000 && girl.感情 > 8); girl.感情 --) {
   for (day=1; day <=365; day++) {
    if (day == 情人节 || day == girl.生日) {
     if (boy.givegirl(玫瑰))
      girl.感情++;
     else
      girl.感情--; 
    }
    sleep(1天);
   }

   if (canMarry(boy, girl) {
    marry(boy, girl);
    return;
   }
  }
}
love(getAnotherBoy(), girl);
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值