【发布时间】:2015-05-14 16:03:52
【问题描述】:
我想自动化一些测试来检查程序员编写高效算法的能力。在此示例中,算法是在 int 数组中执行简单的二进制搜索。
public class ComplexityPractice
{
public bool BinarySearch(int [] sortedArray, int value)
{
// to be implement
}
}
注意:此代码是在受限域中通过反射加载的。
实现此方法的最简单方法当然是来自 .NET 库的Array.BinarySearch(sortedArray, value)。但我的目标是检查程序员自己生成代码的能力,所以问题是:
如何防止程序员使用 Array 类的函数?
【问题讨论】:
-
你不是读代码吗?
-
OP 询问的是如何创建认证式测试来检查学生的代码,而不是如何编写单元测试或执行代码分析。我认为这个问题需要澄清
-
您需要某种静态分析工具来定义自定义规则,然后弄清楚如何强制它们使用规则。
-
如果我搜索“C# Binary Search”,结果的第一页有 4 个实现。限制 Array.BinarySearch 不会阻止学生偷懒。
-
如果这是为了在求职面试中测试程序员而不是为了学生学习算法,我实际上宁愿让所有没有使用 Array.BinarySearch 的人都失败 :) 这更容易检查!
标签: c# restriction