#if DEBUG vs.条件(“DEBUG”)

#if DEBUG vs.条件(“DEBUG”)

在大型项目中使用哪个更好,为什么更好:


#if DEBUG

    public void SetPrivateValue(int value)

    { ... }

#endif

要么


[System.Diagnostics.Conditional("DEBUG")]

public void SetPrivateValue(int value)

{ ... }


慕码人8056858
浏览 1223回答 3
3回答

繁华开满天机

嗯,值得注意的是,它们并不意味着完全相同。如果未定义DEBUG符号,则在第一种情况下SetPrivateValue将不会调用自身...而在第二种情况下它将存在,但是在没有DEBUG符号的情况下编译的任何调用者将省略这些调用。如果代码及其所有来电号码在同一装配这种差异是不太重要的-但它意味着,在第一种情况下,你还需要有#if DEBUG各地的调用代码。就个人而言,我建议采用第二种方法 - 但你确实需要保持它们之间的区别。

慕容3067478

我肯定会有很多人不同意我的看法,但是花了很多时间作为一个不断听到的“但它能在我的机器上运行!”,我认为你应该从不使用它们。如果您确实需要一些测试和调试,请找出一种方法,使该可测试性与实际生产代码分开。在单元测试中使用模拟进行抽象的场景,为要测试的一个场景制作一个关闭版本的东西,但是不要将调试测试放入为测试和编写用于生产版本的二进制文件的代码中。这些调试测试只是隐藏了开发人员可能出现的错误,因此在此过程的后期才能找到它们。
打开App,查看更多内容
随时随地看视频慕课网APP