如果陈述被认为是良好形式,是否会深深嵌套

时间:2012-03-08 19:31:37

标签: objective-c cocoa coding-style

在我用Objective-C和Cocoa编写Mac软件的冒险中,我学到了很多东西。我还有很多需要学习的东西,但是在过去的几个月里我已经有了很大的进步,并且已经发展到了具有中高复杂度的编程软件。

我注意到的一点是,在整个这段时间里,我的代码中出现的if语句(以及在较小程度上,对于每个语句)的数量都急剧增加。有时候,我发现自己的陈述如果声明远远超过五个陈述。

我自己没有发现任何缺点(除了在某些情况下可读性降低),但在编写Objective-C时这被认为是可接受的和良好的形式吗?有没有比嵌套if语句更好/更有效的方法来完成事情?

3 个答案:

答案 0 :(得分:9)

深度嵌套的条件肯定不被视为良好的形式。它们是否非常糟糕取决于您的观点,也许取决于具体的代码。正如你所说,嵌套条件往往难以阅读,而且它们也往往难以理解和维护。

想象一下,如果我给你以下指示:

如果是星期一,如果我的帐户中有超过30美元,如果我没有系领带,如果没有下雨,我希望你能在午餐时给我一块芝士汉堡。但如果下雨了,如果有酸菜,我会吃热狗,但如果没有酸菜,我就会吃金枪鱼三明治。如果我戴着领带,我会吃沙拉,除非有特别的reuben特色,在这种情况下我会有。如果不是星期一,或者价格低于30美元但超过12.50美元,请给我炸玉米饼,但只有好的墨西哥卷饼才在附近......

即使你把它写下来,这也是一种过于复杂的指令,要求给予某人并期望他们在100%的时间内正确行事。如果你打破它会更好。例如,您可以在一周中的每一天在单独的页面上编写单独的说明。与单独页面等效的代码将是单独的函数或方法。简化一组复杂条件的另一种方法是使用查找表列出所有组合和每个组合的期望结果。还有其他可能性......

主要是:不要编写难以理解的代码。无论您使用何种语言,都可以使用大量工具来简化问题,因此您可以充分利用它们来获得所知。

答案 1 :(得分:1)

通常,将if语句嵌套超过3-4个深度begs以进行不同的处理。有时只需要在一个if中组合条件(虽然你也可以过分使用),有时这是创建一些程序等问题。

通常,当您发现有大量if语句时,它表示您已让主流控制变量过于相互关联。如果您做出决策的主要变量尽可能“正交”,那将是最好的。也就是说,变量X处于状态A这一事实并不能“预测”状态变量Y将在何种程度上进行。 (但是,当然,像编程中的大多数人一样,这个“规则”被打破了,并且应该只被用作概念设计辅助。)

答案 2 :(得分:1)

有时,我喜欢用与想法句子相同的方式来思考代码。当你对句子进行操作时,有时最好的解决方案就是将大句子分成更小的连贯思想。

类似于if语句太多,我会评估函数,看看你是否可以将它分解为更简洁,更小的步骤。

我逐渐意识到的另一件事是字典在设计中的用处。不完全确定为什么你需要这么多if语句,但是当有疑问时,Dictionaries在过去总是帮助我。

如果您想发布一个案例示例,其中有许多“if”块,也许这有助于我们提供解决方案。