良好代码风格(三)---- 易读
一:将常用的操作封装成函数例
求一个数的绝对值
unsigned int abs(int a)
{
return a < 0 ? -a : a;
}
判断一个点是否在一矩形里
int isPointInRect(int ax, int ay, int aw, int ah, int bx, int by, int bw, int bh)
{
int ret = 0;
if (by + bh < ay || by > ay + ah || bx + bw < ax || bx > ax + aw)
{
ret = 0;
}
else
{
ret = 1;
}
return ret;
}
可能有人会对此不屑一顾, 这么简单的代码也要写一个函数?
是的,这样写不仅会节省编码量,因为你可能会多次用到这个函数,而且别人看到这个函数名就知道
if (by + bh < ay || by > ay + ah || bx + bw < ax || bx > ax + aw) 这样的语句是什么意思了。/
这估计也是 STL 出现的缘由。/
二:避免复杂的表达式
例
int j = i++ + i++;
这样的表达式根本就是错的,都谈不上复杂, 不承认这个事实的在我看来,c语言都没入门。
当一个表达式很长时, 最好用定义一个临时变量 中转下, 这样你更容易知道这个表达式具体的含义。
比如,将一个24位色 转化成 一个16位色
unsigned short color888To565(int color)
{
unsigned char r, g, b;
r = (color >> 16) & 0xFF;
g = (color >> 8) & 0xFF;
b = color & 0xFF;
return ( ((r>>3) << 11) + ((g>>2) << 5) + ((b>>3)) );
}
这样 我一看(color >> 16) & 0xFF 就知道 这是一个 颜色分量。
三:适当的运用语言特性
如果你需要用整型的时候就别用 浮点型, 如果你需要一个 unsigned 别用 signed , 如果你不想某个数值被意外改变, 就加个 const 限制。
char 这个关键字,标准是没有 规定其是 signed 还是 unsigned 的, 如果你搞不清, 用unsigned 安全点。
四:代码中不要出现 不明确的数。
尽量用宏定义一个符号常量, 这样,你看到这个常量名就明白这个常量名是代表什么了。
而且,你以后需要改动这个符号常量的时候也会很方便。
[ 本帖最后由 BlueGuy 于 2010-10-31 19:00 编辑 ]