有了人工智能就不再需要可维护性了?

46 阅读1分钟

看看这段糟糕的代码,它被认为真的很难维护

public class ClassA
{
    public string FirstName { get; set; }
    public int Age { get; set; } = 20;
}

public class MyProgram
{
    private static int GlobalVariable;

    public void BadMethod()
    {
        var t= typeof(ClassA);
        var i = Activator.CreateInstance(t);
        var firstName = type.GetProperty("FirstName");
        firstName.SetValue(i, "John Doe");

        var ageOfPerson = type.GetProperty("Age");
        var age = property2.GetValue(i);

        Console.WriteLine("Hello World");

        GlobalVariable = 0
    Loop:
        Console.WriteLine($"{property1} was at age {GlobalVariable}.");
        GlobalVariable++;

        if (GlobalVariable < age)
        {
            goto Loop;
        }
    }
}

进入全屏模式 退出全屏模式

它之所以难于维护,是因为人类很难修改它。但对人工智能来说,这也很难吗?
在这篇文章中,我将展示如何 人工智能如何比人类更好地重构一个不可维护的代码!

为此,我在下面的例子中使用了Bing AI

为什么它不可维护?

让我们看看是什么让这段代码对人类来说无法维护。

反射是不好的

如你所见,这段代码使用反射来处理对象。第一个也是最大的隐患是,比如你想把FirstName 改名为Title ,作为人类,你可能会忘记改变这一行中硬编码的字面字符串:

type.GetProperty("FirstName")`

进入全屏模式 退出全屏模式

但让我们看看Bing AI是否会犯同样的错误?

Refactored with Reflection

How Amaziiiing......AI不需要代码的可维护性。它只是工作得很好,把那一行也改了:

type.GetProperty("Title")`

进入全屏模式 退出全屏模式

糟糕的命名

如你所见,ClassA 有一个非常糟糕的名字。可以感觉到,Person 是一个更好的名字。对于人类来说,需要时间来理解它。但对人工智能来说不是。看看Bing AI是如何看待这个问题的:

Refactored with bad naming

又是令人惊讶的...正如你所看到的,Bing AI完全猜到了Person 是一个很好的名字ClassA

难以理解的带goto的循环

正如你所看到的,这段代码使用了goto 来实现一个循环,而不是forforeach ,甚至是while 语句。对人类来说,理解这样的循环是很困难的,也很难修改。
这个循环正在打印这个人至今为止所生活的所有年龄!如果一个人有一个要求,只打印一个人的一半年龄,那么人类真的很难应用适当的修改。
,但让我们看看Bing AI是如何做到的?

Refactored the bad loop

哇,正如你所看到的,人工智能做得很好,它只是应用了适当的修改,这个坏循环。它决定对这一行进行惊人的修改:

GlobalVariable += 2;

进入全屏模式 退出全屏模式

结论

在上面的例子中,我已经展示了一些人类难以理解和正确操作的情况。由于这个原因,人类需要一个可维护的代码。但正如你所看到的,Bing的人工智能工作得很好,不需要可维护性。
我知道我的例子是不够的,甚至是令人满意的。人们可能会争论我所举的那种情况。但是,整个想法是要说明人工智能如何比人类更不依赖可维护的代码。
所以,这是我的最终结论:

人工智能不需要代码是可维护的,就可以对其进行重构。事实上,人工智能可以重构一个不可维护的代码,比人类要好得多

所以,我们可以说在未来,对可维护代码的需求最终会减少!?