在自上而下的方法中,建议使函数变小以仅执行单个任务。
所以。不知道主要是做什么的?只是调用其他功能或我们想要的一切?
谢谢。
最佳答案
这个想法是将任务分成逻辑抽象。
在这里,我将使用在厨房做饭的例子来说明这个概念。假设您想用一些菜肴准备一顿美味的晚餐。您的心理 list 可能会从主要步骤开始:
- 去杂货店买食材
- 预处理原料
- 做饭
- 上菜
- 洗碗
因此,这些函数将进入您的 main()
然后对于每个步骤,您将其进一步分解:(请注意,下面列出的子步骤是每个主要函数将从它们自己的函数定义中调用的)
- 去杂货店购买食材:
- 列出购物 list
- 参观杂货店
- 收集原料
- 支付配料费用
- 回家
- 预处理成分:
- 洗蔬菜
- 把肉切碎
- 将生姜、丁香切碎...
- 做饭
- 准备锅碗瓢盆
- 加入食用油
- 打开炉子
- 将肉和蔬菜放入锅中煮熟
- 上菜:
- 摆好盘子
- 将食物分成几份
- 叫别人吃饭
- 吃晚饭
- 洗碗:
- 用洗涤剂洗碗
- 用水冲洗盘子
- 收拾碗碟
然后对于每个子步骤,您仍然可以更细粒度地表示单独的逻辑操作,为了简洁起见,我们将只检查 main()
中的前 2 个函数:
- 去杂货店购买食材:
- 列出购物 list :
- 打开冰箱
- 检查冰箱里的东西
- 记下冰箱里哪些食材快用完了。
- 关上冰箱
- 参观杂货店:
- 收集原料:
- 打开冰箱
- 将冷冻蔬菜放入购物车
- 关上冰箱
- 将鲜肉放入购物车
- 支付配料费用:
- 回家:
- 列出购物 list :
- 预处理成分:
- 洗蔬菜:
- 打开冰箱
- 从冰箱里取出蔬菜
- 关上冰箱
- 在水龙头下冲洗蔬菜
- 切肉:
- 将生姜、丁香切碎...
- 洗蔬菜:
现在注意两件事:
- 现在,通过将主要任务分解为更小的子任务,您的程序方法有了一个非常合乎逻辑的“自上而下”的树状结构。当你在看main的时候,你可以立刻看到整体的规划是怎样的,而不必去具体了解每个步骤是如何实现的。但是通过检查各个功能,您可以立即了解每个功能如何完成其任务……等等。
- 您现在可以在多个地方重用封装到函数中的任何抽象逻辑(例如,粗体 中列出的打开/关闭冰箱操作)。当您需要打开冰箱时,只需调用“openFridge”,而不必每次都重新编写确切的操作方法。 (从技术上讲,您可以复制和粘贴代码,但这会导致一种称为代码克隆的反模式:如果您需要更改打开冰箱的方式,则必须在所有地方都执行此操作,而不仅仅是在一个函数中执行)
关于c++ - 主要功能包括什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13319961/