架构 – 将顺序凝聚力转化为功能凝聚力?


this website所述,

A module with (only) procedural cohesion is one supporting different and possibly unrelated activities, in which control passes from one activity to the next. Page-Jones gives an example of a module (whose name might be something like, “Prepare for Holiday Meal:”

>从以前的膳食清洁器具
>准备土耳其烤
>拨打电话
>洗澡
>切蔬菜
>设置表格

现在我的问题是,如果这些活动中的每一个,即拨打电话,都被提取到他们自己的方法中,但所有这些活动仍以相同的顺序被调用

    private void PrepareForHolidayMeal()
    {
    CleanUtensilsfromPreviousMeal();
    PrepareTurkeyforRoasting();
    ...
    SetTable();
    }

这种方法仍然是程序凝聚力的一个例子吗?或者它是否具有功能上的凝聚力,因为它支持执行一个与问题相关的任务的活动,在这种情况下准备一顿饭?

最佳答案 有充分理由,您的示例中省略了电话.这是一项不相关的任务.如果你认为电话仍然处于“……”状态,那么整个事情会再次失去它的凝聚力.否则你可能会说所有其他活动都是准备饭菜所必需的.这可能会开始讨论“CleanUtensilsfromPreviousMeal”在这里是否实际有效,因为此活动可能仅在以前没有清理的情况下才有必要. StackExchange问​​题不适用于这样的讨论…所以我们需要一个更清晰的例子来决定多个软件架构师的决定.否则有些人可能会争论不同于其他人.

点赞