看看这段糟糕的代码,它被认为真的很难维护:
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是否会犯同样的错误?
How Amaziiiing......AI不需要代码的可维护性。它只是工作得很好,把那一行也改了:
type.GetProperty("Title")`
进入全屏模式 退出全屏模式
糟糕的命名
如你所见,ClassA 有一个非常糟糕的名字。可以感觉到,Person 是一个更好的名字。对于人类来说,需要时间来理解它。但对人工智能来说不是。看看Bing AI是如何看待这个问题的:
又是令人惊讶的...正如你所看到的,Bing AI完全猜到了Person 是一个很好的名字ClassA 。
难以理解的带goto的循环
正如你所看到的,这段代码使用了goto 来实现一个循环,而不是for ,foreach ,甚至是while 语句。对人类来说,理解这样的循环是很困难的,也很难修改。
这个循环正在打印这个人至今为止所生活的所有年龄!如果一个人有一个要求,只打印一个人的一半年龄,那么人类真的很难应用适当的修改。
,但让我们看看Bing AI是如何做到的?
哇,正如你所看到的,人工智能做得很好,它只是应用了适当的修改,这个坏循环。它决定对这一行进行惊人的修改:
GlobalVariable += 2;
进入全屏模式 退出全屏模式
结论
在上面的例子中,我已经展示了一些人类难以理解和正确操作的情况。由于这个原因,人类需要一个可维护的代码。但正如你所看到的,Bing的人工智能工作得很好,不需要可维护性。
我知道我的例子是不够的,甚至是令人满意的。人们可能会争论我所举的那种情况。但是,整个想法是要说明人工智能如何比人类更不依赖可维护的代码。
所以,这是我的最终结论:
人工智能不需要代码是可维护的,就可以对其进行重构。事实上,人工智能可以重构一个不可维护的代码,比人类要好得多。
所以,我们可以说在未来,对可维护代码的需求最终会减少!?