The*_*ing 0 c# methods code-structure
实现方法调用的最佳/最佳方法是什么?
例如:从下面通常被认为是最佳实践.如果两者都不好,那么什么被认为是最佳实践.
选项1 :
private void BtnPostUpdate_Click(object sender, EventArgs e)
{
getValue();
}
private void getValue()
{
String FileName = TbxFileName.Text;
int PageNo = Convert.ToInt32(TbxPageNo.Text);
// get value from Business Layer
DataTable l_dtbl = m_BLL.getValue(FileName, PageNo);
if (l_dtbl.Rows.Count == 1)
{
TbxValue.Text = Convert.ToInt32(l_dtbl.Rows[0]["Value"]);
}
else
{
TbxValue.Text = 0;
}
}
Run Code Online (Sandbox Code Playgroud)
选项2:
private void BtnPostUpdate_Click(object sender, EventArgs e)
{
String FileName = TbxFileName.Text;
int PageNo = Convert.ToInt32(TbxPageNo.Text);
int Value = getValue(FileName, PageNo);
TbxValue.Text = Value.ToString();
}
private int getValue(string FileName, int PageNo)
{
// get value from Business Layer
DataTable l_dtbl = m_BLL.getValue(FileName, PageNo);
if (l_dtbl.Rows.Count == 1)
{
return Convert.ToInt32(l_dtbl.Rows[0]["Value"]);
}
return 0;
}
Run Code Online (Sandbox Code Playgroud)
我知道我们可以直接传递参数而无需分配局部变量......我的问题更多的是关于方法定义及其处理方式.
如果您自动订阅该事件,我认为使用事件处理程序签名的方法并不特别糟糕,该方法只委托给您需要"真正"签名的方法(在这种情况下,没有参数) .
如果您手动订阅,则可以使用lambda表达式:
postUpdateButton.Click += (sender, args) => PostUpdate();
Run Code Online (Sandbox Code Playgroud)
然后开始工作PostUpdate.然后你是否PostUpdate分成两个方法,一个处理UI交互,一个处理BLL交互取决于你.在这种情况下,我认为这不重要.
如何构建UI逻辑以使其可测试是一个完全不同的问题.我最近成为MVVM模式的粉丝,但我不知道对你的特定场景有多适用(它真的是围绕Silverlight和WPF设计的).
其他几条评论:
l_?他们在当地不是很明显吗?就个人而言,我并不热衷于这里显示的大多数变量名称 - 考虑在其含义之后命名变量而不是它们的类型.DataTable来返回信息是一种有点容易出错的做事方式.为什么BLL不返回int?指示值(或缺少值)?| 归档时间: |
|
| 查看次数: |
109 次 |
| 最近记录: |