应使用什么图表示算法逻辑

时间:2016-06-27 15:58:46

标签: javascript algorithm uml diagram

我有这个递归函数:

function inline(o) {
    return objEntries(o).reduce(function (result, item) {
        var key = item[0];
        var val = item[1];

        if (val instanceof Object) {
            objEntries(inline(val)).forEach(function (subItem) {
                var subKey = subItem[0];
                var subVal = subItem[1];

                result[key + '.' + subKey] = subVal;
            });
        } else {
            result[key] = val;
        }
        return result;
    }, {});
}

function objEntries(obj) {
    return Object.keys(obj).map(function (key) {
        return [key, obj[key]];
    });
}

获取对象并内联其属性。例如,这个:

var o = {some: {prop:5}}

成为这个:

var o = {"some.prop": 5};

我想表达它是如何在视觉上工作的。我可以使用哪些图表或符号?有人可以根据我概述的功能提供小例子吗?

3 个答案:

答案 0 :(得分:2)

你不会。 UML非常适合抽象。但是一旦谈到算法,它就毫无价值。尽管您可能会提供算法,但不要尝试使用序列图和片段。 UML模型和代码之间存在某种裂缝,最好不要用UML来弥补这种裂缝。如果您使用UML抽象地描述目标并将其余部分留给编码人员,那么这是迄今为止最好的方法。

P.S。我一直梦想着90年代的图形编程。我们有3和4GL,但你今天在实践中看到了什么?更像C的东西。祝Alf好运,但它也可能以新鲜的猫汁结束。

答案 1 :(得分:2)

我不同意托马斯。 Alf是一种新的UML编程语言,默认情况下具有功能,OO和并行处理功能。它生成活动图。

即使您不使用Alf,活动也可以递归调用自己。活动图比Alf要写的更难绘制。 Alf非常紧凑而且功能强大。

答案 2 :(得分:2)

理论上活动图能够呈现算法逻辑。

然而,这应该仍然在一些抽象层次上完成。使用UML记录每行代码没有意义,或者你最终会使用UML进行编程,然后你必须寻找一种工具,将你的“UML代码”转换为“常规”代码(或者UML编译器。)