[转贴]"女程序员"代码...竟然还有增强版...
2006-10-30 14:51
477 查看
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);
}
这段代码可以写得更紧凑些:
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);
}
{
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);
}
这段代码可以写得更紧凑些:
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);
}
相关文章推荐
- EA代码工程---轻松几步教你更改"EA生成的源代码表头注释格式"
- c#程序错误"Lc.exe 已退出,代码 -1 "
- "代码写得好,要饭要到老"的对应英文版说法是什么?
- 让所有"暴力删除工具"无语的代码
- "能做一辈子程序员吗?" —— 做一个越老越辣的程序员
- VS2008无法执行添加/移除操作,因为代码元素"***"是只读的
- [积累] Java代码实现 android:layout_marginLeft="27dp"不生效的问题
- 程序员为什么单身?细数程序员"六宗罪"
- 程序员自创的一首歌 - "Java EE 5"
- UEStudio 14.30.1005 简体中文增强版(程序员必备代码编辑器)
- 有关"集成搜索"的javascript代码
- 俺Blog"选项-配置-静态新闻/声明代码"
- Android Design: 九种常见Activity及代码解析之"Navigation Drawer Activity"
- 程序员"说书"--杂侃一
- “老"程序员如何能保证自己一直立于不败之地?
- 打开,另存为,属性,打印"等14个JS代码
- media="screen" 这句代码是什么意思?
- 【编程之旅】一段大牛写的"奇幻代码"
- 已安全化的ActiveX控件卸载时出现"DllUnregisterServer函数出错,错误代码:0x80070002"问题解决
- 获取日期时间星期的"JAVASCRIPT代码"