从代码规范考虑,哪个方法里的if语句写的好?
理由?
会和效率有关系吗?
编译器是怎么解析if的?
谢谢public void Test1()
{
if(something)
{
do something
}
do something;
}public void Test2()
{
if(something)
{
do something;
}
else
{
do something;
}
}
理由?
会和效率有关系吗?
编译器是怎么解析if的?
谢谢public void Test1()
{
if(something)
{
do something
}
do something;
}public void Test2()
{
if(something)
{
do something;
}
else
{
do something;
}
}
{
if(something)
{
do something
return;
}
do something;
}
如果是防御式编程,肯定是用return
return;if(条件2)
return;...//处理逻辑如果都if else嵌套的太多,不够清晰
没有可比性,看业务要求,看看下面这两小段代码吧
if(iSex==0)
{
MessageBox.Show("男");
return;
}
MessageBox.Show("女");if(iSex==0)
{
MessageBox.Show("男");
}
else
{
MessageBox.Show("女");
}
{
if(id == null || id == DBNull.Value) return 0;
return dal.GetObjectById(id).Name;
}
{
if(person.Sex == '男')
{
//打领带,穿皮鞋
}
else
{
//带凶器,套丝袜
}
}
针对第一段代码
如果
MessageBox.Show("女");后面没有其他的代码了
那这两段从结果来看不是一样的意思? 我想问的是这种情况
如果MessageBox.Show("女");后有其他代码
那需求的意思其实是:iSex==0时执行男的并返回,为其他时执行女的,并执行余下代码 对吧?第二段的意思肯定就是if和else了我没理解错吧?
如果不是防御式,最好用if else
这个最好的意思:是从可读性上考虑的 还是从代码/编译器效率考虑的?或者是其他方面?
而不要提前return,因为if 和 else中的内容同等重要,同样这样的代码显出了另外一个问题,最好是这样MessageBox.Show(GetSexName(isSex));public String GetSexName(Byte isSex)
{
return isSex == 0 ? "男" : "女";
}
例如linq
如果
if(XX)
{
XXX;
return;
}
XXX;如果下面还有需要的执行语句怎么办???这情况肯定是要用第二种了。这不关效率不效率的问题了,而是跟业务有关系了。如果就单单一个if else ,没什么效率可言。
if else 有问题的,看看最基础的书就能了解。
我们平时商业开发不注重这些倒是真的
看需不需要贯穿,不管条件如何我们都需要一个结果,那就贯穿 if()
{
}
else
{
}
有候我们并不关心 else的结果,那就不贯穿,,if()
{
return;
} 额,纠结这不能涨工资啊,,
delegate委托操作
public static T If<T>(this T t, Predicate<T> predicate, params Action<T>[] actions) where T : class
{
if (t == null) throw new ArgumentNullException();
if (predicate(t))
{
foreach (var action in actions)
action(t);
}
return t;
}
所以你就运用了return
这样主要是为了以后应对else可能的变化。要知道唯一不变的是变化本身。
{
//do nothing
}
else
{
throw new Exception("程序执行错误,{0}",obj.ToString());
}这样的代码有时看起来比下边这样的舒服些
if(!obj.Done()) //扭曲了一下
{
throw new Exception("程序执行错误,{0}",obj.ToString());
}
mov ax,[xxxx]
mov bx,[yyyy]
cmp ax,bx
jnp [xxxxxxx] -------符合就跳转,不符合就往下执行,这有啥效率不效率的考虑,只要是分支判断,对计算机来说都是这几行代码,你带不带else他都是这么几行
Call [yyyyyy]
哈哈 当时上学的时候没学好
我只是想知道 if else 翻译成机器语言之后 是什么 怎么解释
第一个是无论如何都会执行do something, 第二个,只会执行其中一个。