341得票24回答
使用大括号(即{})来包含单行if或循环的目的是什么?

我正在阅读一些C ++讲师的讲义,他写了以下内容: 使用缩进 // 好的 永远不要依赖于运算符优先级 - 始终使用括号 // 好的 即使只有一行也要使用 { } 块 // 不好,为什么? 比较中将 const 对象放在左侧 // 好的 对于变量大于或等于0,请使用...

258得票20回答
何时应该使用Debug.Assert()?

我已经成为一名专业的软件工程师已有一年时间了,并持有计算机科学学位。我知道在C++和C中有关于断言的知识,但直到最近才意识到它们也存在于C#和.NET中。 我们的生产代码完全没有包含任何断言,我的问题是... 我应该开始在我们的生产代码中使用断言吗?如果是这样,在什么情况下使用最合适?或者更明...

105得票14回答
在C++中混淆敏感字符串的技巧

我需要在我的C++应用程序中存储敏感信息(对称加密密钥,我希望保持私密)。简单的方法是这样做:std::string myKey = "mysupersupersecretpasswordthatyouwillneverguess"; 然而,通过strings进程(或任何其...

73得票7回答
Erlang的“让它崩溃”哲学 - 是否适用于其他领域?

Erlang的建议(或者说是Joe Armstrong的建议)是不要使用防御性编程,让进程崩溃(而不是用不必要的守卫来保持代码的完整性),现在对我来说是如此有道理,以至于我想知道为什么我在错误处理上浪费了那么多精力! 我想知道的是,这种方法是否只适用于像Erlang这样的平台?Erlang具...

48得票4回答
Java中的String.split方法是否可能返回一个空的String[]?

调用split方法是否可能返回一个空的String[]数组?我很好奇,因为我想尽可能在我的代码中进行保护而不必进行不必要的检查。以下是示例代码:String[] parts = myString.split("\\w"); 在我使用 splitting 后,我需要执行空值检查吗?

45得票12回答
64位开发中的0xDEADBEEF等效值是什么?

对于32位系统的C++开发(无论是Linux、Mac OS还是Windows,PowerPC或x86),我已经初始化了指针,否则它们将是未定义的(例如,它们不能立即获得适当的值),如下所示: int *pInt = reinterpret_cast<int *>(0xDEADBE...

45得票1回答
C++总是使用显式构造函数

阅读以下博客后: http://xania.org/200711/ambiguous-overloading 我开始思考,“我是否应该总是显式定义我的构造函数?” 于是我开始阅读更多资料,后来发现了这篇文章: http://www.sjbrown.co.uk/2004/05/01/al...

38得票14回答
我该如何进行防御性编程?

我正在使用一个小程序来创建数据库连接: 之前 public DbConnection GetConnection(String connectionName) { ConnectionStringSettings cs= ConfigurationManager.Connection...

38得票12回答
把所有东西都包在try/catch块中,是否构成防御性编程?

我已经编程三年了。当我编写程序时,我习惯处理所有已知的异常并以友好的方式向用户发出警告。最近我看到了一些代码,几乎所有的方法都被包含在try/catch块中。作者说这是防御性编程的一部分。我想知道,这真的是防御性编程吗?你推荐将所有代码放在try块中吗?

36得票9回答
如何在exe或dll中隐藏字符串?

我发现从二进制文件中提取硬编码字符串是可能的。 例如,Process Explorer 的属性视图显示了所有长度超过 3 个字符的字符串。 以下是我编写的一个简单可执行文件的代码,用于测试: #ifndef _WIN32_WINNT #define _WIN32_WINNT 0x0501 ...