C/C++中缓冲区最佳实践的大小

use*_*398 -2 c++

将缓冲区的大小定义为宏还是常量,这被认为是不好的做法吗?

例如:


    char buffer[1024];

代替:


    #define BUFF_SIZE 1024

    char buffer[BUFF_SIZE];

Eug*_*Sh. 6

一般来说,由于几个原因,"魔术数字"被认为是一种不好的做法.
1)如果使用有意义的名称命名常量,它将变为自我记录,从而提高代码的可读性.
2)常数通常不在一个地方使用.考虑一下你用1024个元素定义一个缓冲区的情况,然后在代码的其他地方,你想要遍历它的所有元素(假设sizeof在那里不可用,例如在某些地方它被转换为指针).你会写类似的东西for (i=0; i<1024....但是明天你会认为1024它不够大,你想让它变得不同.然后你将不得不在拥有这个数字的所有地方之后追捕,但只有在与缓冲区大小有关的地方.通过命名常量,您可以避免所有这些麻烦,只需在一个地方更改值.从而提高了代码的可维护性.