编程的时候总是犯一个错误,要实现一个功能,总是先想着这个功能需要调用到什么函数,然后先实现一个个子函数,再写功能体,这样好像很好,编译不会出错,功能也实现了。但是,这样真的很好吗?有没有一种更好的方式呢?
  以注册用户为例。
  环境:VS2005,ASP.NET,C#。
  我们在界面上放置一个叫RegButton的按钮,点击后会实现注册功能。我们一般是想法如下:
  1.我们需要验证数据是否正确,好,需要一个CheckData函数,在代码上写上
1面向功能开发一点经验private bool CheckData( tb_user User)
2}
  2.然后,我们需要一个注册功能。好,在代码上写上
面向功能开发一点经验private void RegUser(tb_user User)
}
  3.注册成功,需要跳转到成功页面,在代码上写
面向功能开发一点经验private void RedirectToSuccessPage(string Info)
}
  好,现在开始写RegButton_Onclick事件
面向功能开发一点经验protected void RegButton_Onclick( sender, e )
}

这时,发现少了一个得到用户信息的函数。我们在代码上写上
面向功能开发一点经验private tb_user GetUserInfo()
}
然后,把RegButton_OnClick事件改成
面向功能开发一点经验protected void RegButton_Onclick( sender, e )
}
  这样就可以注册了。但这样我们会发现,我们一开始的逻辑是没有理清的,中间断了层也不知道。这样写,经常会写少了函数,或者是写多了函数,甚至最后都不知道自己写那些函数想干嘛。在没有一个功能框架的情况下,先实现子功能。所以,我们需要更好的策略。
  我们可以借鉴测试驱动开发,而且面向功能来实现代码,而不是先考虑实现的细节。
  首先,我们写OnClick函数。
  
面向功能开发一点经验protected void RegButton_Onclick( sender, e )
}
  这样,我们就定义了流程的逻辑过程。不会写多了函数,也不会写少了函数,也不会逻辑混乱。
  然后,VS2005会提示我们,有几个函数没有定义。我们使用VS2005帮我们自动生成一个定义。
面向功能开发一点经验
  生成的结果如下:
面向功能开发一点经验void CheckData( tb_User user )
    }

  我们直接改函数体就行了。可以在很多比较复杂的逻辑过程函数中使用此方法。

相关文章:

  • 2021-10-07
  • 2022-12-23
  • 2021-11-01
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2021-10-17
  • 2021-08-22
猜你喜欢
  • 2021-06-14
  • 2022-12-23
  • 2022-01-11
  • 2021-06-21
  • 2021-09-09
  • 2022-12-23
  • 2021-12-23
相关资源
相似解决方案