the*_*man 1 c++ language-agnostic
这可能是一个相当主观的问题,但在这里与我无关.
假设我有一个三角形类,定义类似的东西
class Triangle{
vertex3D vertexs[3];
public:
vertex* GetVertex(int vertexNumber);
}
Run Code Online (Sandbox Code Playgroud)
现在对于大多数正常的应用程序来说,在尝试返回顶点指针之前GetVertex
应该确保它vertexNumber
是一个有效的索引.我会说通常它可以返回NULL,如果vertexNumber
无效,但这不是我真正要问的.
在游戏情况下,检查是否vertexNumber
一直有效可能会花费相当多的时间,GetVertex
假设只传递有效值会更快.
因此,以轻微的性能提升为基础,三角形基本上可以接受谨慎的风吗?
编辑
好的...所以,如果我在调试中进行边界检查而不是发布...我如何自动执行此操作以便我不必编辑代码...某种编译时间开关或某些东西?会使用#ifdef debug
某种东西吗?哪里可以找到更多相关信息?
你一定要检查调试版本中的边界.
如果您确定您的代码是正确的(因此,您已经进行了代码审查并且您已经对其进行了广泛的测试),那么为了提高性能,可以在发布版本中省略边界检查.
如果要在调试版本中测试边界而不在发布版本中测试边界,那么您应该在调试版本中使用断言.断言应该用于验证始终为真的事物.如果您没有检查函数内部的边界并且您的代码是正确的,那么该值应该永远不会超出范围.