Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/url/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 谁撰写Microsoft支持文章?他们总能被信任吗?_C# - Fatal编程技术网

C# 谁撰写Microsoft支持文章?他们总能被信任吗?

C# 谁撰写Microsoft支持文章?他们总能被信任吗?,c#,C#,下面是我正在谈论的文章类型的一个示例: 我假设这些文章是由为微软工作的人写的,文章中的代码将始终坚如磐石,并且从不包含任何恶意代码。我只是想确保我能向老板解释,这是一个可以复制代码的好地方(有人告诉我永远不要从互联网上复制代码,但这似乎是一个安全的来源) 有没有因为版权问题而被告知不要从互联网上复制代码?如果是这样,那么您就不必担心这个Microsoft代码 我建议你不要使用任何你不懂的代码。如果您不能确定代码是否恶意,请不要使用它。Microsoft Knowledgebase文章显示了安全

下面是我正在谈论的文章类型的一个示例:


我假设这些文章是由为微软工作的人写的,文章中的代码将始终坚如磐石,并且从不包含任何恶意代码。我只是想确保我能向老板解释,这是一个可以复制代码的好地方(有人告诉我永远不要从互联网上复制代码,但这似乎是一个安全的来源)

有没有因为版权问题而被告知不要从互联网上复制代码?如果是这样,那么您就不必担心这个Microsoft代码


我建议你不要使用任何你不懂的代码。如果您不能确定代码是否恶意,请不要使用它。

Microsoft Knowledgebase文章显示了安全(如非恶意但不一定安全)代码,但通常示例提供了最基本的可能用例。有一个很好的机会,你将不得不调整代码一点,它的工作方式,你想要的


你还应该注意文章的日期。例如,您链接到的文章几乎有三年的历史了。现在肯定有更好的方法来处理这种情况。

我总是发现微软的文章质量最高(遗憾的是,不是他们的产品)


然而,欺骗网站总是有危险的

如果您只是将代码复制到用于测试和理解代码的测试项目中,您的老板可能不会介意。然后,您可以使用所学知识编写生产代码


虽然我认为微软以外的任何人都不知道撰写这些支持文章的人的姓名,但他们与您的工具链来自同一家供应商,因此如果您不信任这些支持文章,那么你也不能相信你买的工具。

解释说,你仔细阅读了这篇文章以理解其中的信息,只复制你理解的代码

如果您不理解代码,那么即使代码是正确的,它也可能没有执行您实际需要执行的操作,因此您的程序将是错误的


如果有些部分您不理解,那么调试和维护代码也会很困难。

请注意,文章中的大多数代码都是用来帮助您理解这些概念的。它们还没有“生产就绪”。学习这些概念,然后自己实现。

我相信它们不会恶意,但它们并不总是好代码。(MSDN样本有时非常糟糕。)

例如,您给出的示例中有一些代码:

compareResult = ObjectCompare.Compare
    (listviewX.SubItems[ColumnToSort].Text,
     listviewY.SubItems[ColumnToSort].Text);

// Calculate correct return value based on object comparison
if (OrderOfSort == SortOrder.Ascending)
{
    // Ascending sort is selected, return normal result of compare operation
    return compareResult;
}
else if (OrderOfSort == SortOrder.Descending)
{
    // Descending sort is selected, return negative result of compare operation
    return (-compareResult);
}
else
{
    // Return '0' to indicate they are equal
    return 0;
}
现在,这里有两个问题:

  • 为什么认为比较器没有排序顺序是有效的?这应该是一个构造函数参数,在构造点进行验证
  • 您不应该仅仅否定一次比较的结果来执行“反向比较”。如果第一次比较的结果是
    int.MinValue
    ,则会中断,因为
    -int.MinValue==int.MinValue
    。最好反转用于执行原始比较的参数
在这段代码中还有其他一些我不同意的地方,但这两个应该足以说明我的观点

我也衷心同意其他答案,包括: -检查您想要使用的任何代码的版权/许可证等
-确保您了解任何您想使用的内容

MSDN和kb支持文章都是由作为给定产品UX团队(用户体验)一部分的MS员工撰写的。这些人通常具有技术写作背景,但不一定是开发人员(尽管有些人是)。UX团队在产品上与开发人员协作以确保他们的代码样本是正确的是很常见的。然而,根据我的经验,这种协作是典型MS开发人员的最低优先级之一,可能会被忽略,因此有时会导致糟糕的代码泄漏


尽管如此,我完全同意卡尔·诺伦的评论。复制您不理解的代码的风险由您自己承担。确保您理解您在产品中放置的任何代码

如果您能够理解示例代码,那么您应该能够识别其中是否有“恶意”内容,对吗?你当然不应该在你的项目中添加任何你不懂的东西。当然,但我是一个懒惰的程序员。如果这些文章100%都是可信的,我将测试功能,而不是花时间去理解每一行代码。我只是想为自己创造一条捷径(尽管不完全理解我实现的代码可能会在以后对我造成伤害)。没有什么是可以信任的,0%的时候。无论Donald Knuth是否编写了每一行生产代码,都必须对其进行验证。如果你不理解代码,你根本就不是在走捷径。此外,您所做的可能不完全符合适用法律(例如,SOX合规性可能会阻止您这样做。)@glowcoder-我当然不会相信Knuth的准则。他甚至没有测试他的代码,只是证明它是正确的DI想指出的是,从我之前的评论中可以得出以下结论是有意的:1)其他开发人员在您自己的商店中编写的代码不可信,2)您编写的代码不可信。感谢您注意到它是否侵犯了使用Microsoft代码的任何权利,我也很想知道这一点+1他们没有恶意,但同意代码有时可能完全错误。C代码似乎可以,但是Visual C++和MFC代码在某些地方可能会非常糟糕。不要小题大做,始终验证他们显示的代码是否符合您的要求。+1。微软也有一个项目,它试图提供更多的“生产准备”样本。你必须习惯于可怕的代码。MS代码并不是我见过的最差的,但它离“高”还差得远