关于if···else中共有代码
if···else中常常有这样的代码结构
if condition1:
A
B
C
else if condition2:
A
B2
C
else:
B3
C
C就是他们的共有代码,有时候C的意义比较明确,代码量比较多,本着代码量最小的考虑,我们会把它拿出来:
if condition1:
A
B
else if condition2:
A
B2
else:
B3
C
但是实际编程的时候,我有时候会有强迫症,即便C的代码行数不多,没什么意义,我也会把它拿到分支体外面,这样固然减少了代码量,但是破坏了代码之前的逻辑性。我写的代码不多,当分支复杂度较大的时候常常出错, 不知道各位是怎么处理的?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(7)
既然用到C的地方这么多,为什么不把C独立成一个函数呢?
我感觉这种情况下 C 出现在外面比较正常,把 C 放到分支里面才是不能容忍的事,可能我也有强迫症吧,呵呵。
另外,既然 C 在所有分支下都会被执行,那么即使它出现在外面,在逻辑上应该也说得通啊
碰到逻辑复杂的代码,我自己一般是这样做:
可以使用命令模式。
很显然被采纳的这个答案并不理想
如果if-else 结构在一个函数体内,就是完整的逻辑,c确实在三种情况都要用到,但是因此拿出新建立一个函数就很好?
如果c的逻辑本身很简单呢?
果断匿名函数吧。
我们需要更有启发性的答案
在Objective-C中我一般的做法是写个Block,如果代码量大的话就封装成一个函数。
没必要,顺气自然是最好的。
有可能随着业务的变迁,你不能保证共同语句C是在所有分支的最后一句或者第一句。
如果在其中某个分支是在中间。而且后面的代码会影响C语句的相关内容。
例如C语句里面有修改局部变量等操作。某个分支后面的语句也进行了修改,那么这种情况可能会导致某些难以发现的BUG.
如果把 C 做成一个宏,然后在 if ... else 结束的时候 #undef 呢?