| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 730 人关注过本帖
标题:良好代码风格(三)---- 易读
只看楼主 加入收藏
BlueGuy
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:29
帖 子:4476
专家分:4055
注 册:2009-4-18
结帖率:94.72%
收藏
已结贴  问题点数:20 回复次数:10 
良好代码风格(三)---- 易读
一:将常用的操作封装成函数


求一个数的绝对值
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 编辑 ]
搜索更多相关主题的帖子: 风格 代码 
2010-10-31 17:53
weiqiang
Rank: 2
等 级:论坛游民
帖 子:48
专家分:52
注 册:2010-10-18
收藏
得分:4 
值得学习一下
2010-10-31 21:41
御坂美琴
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:魔術の禁書目錄
等 级:小飞侠
威 望:9
帖 子:952
专家分:2929
注 册:2010-8-18
收藏
得分:4 
isPointInRect 函数名错了,这分明是判断两个矩形是否有重叠,而不是点和矩形的关系

永远为正义而奋斗,锄强扶弱的Level 5 超能力者
とある魔術の禁書目錄インデックス__御み坂さか美み琴こと
http://bbs.bccn.net/space.php?action=threads&uid=483997
2010-10-31 21:45
MrBluer
Rank: 4
等 级:业余侠客
威 望:1
帖 子:120
专家分:263
注 册:2010-10-23
收藏
得分:4 
版主好犀利
2010-10-31 21:48
vandychan
Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15
等 级:贵宾
威 望:18
帖 子:2296
专家分:6418
注 册:2010-8-20
收藏
得分:4 
MrBluer说 BlueGuy很厉害

到底是“出来混迟早要还”还是“杀人放火金腰带”?
2010-10-31 21:51
御坂美琴
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:魔術の禁書目錄
等 级:小飞侠
威 望:9
帖 子:952
专家分:2929
注 册:2010-8-18
收藏
得分:0 
以下是引用vandychan在2010-10-31 21:51:52的发言:

MrBluer说 BlueGuy很厉害

BlueGuy现在是版主吗?论坛信息好像没写?

永远为正义而奋斗,锄强扶弱的Level 5 超能力者
とある魔術の禁書目錄インデックス__御み坂さか美み琴こと
http://bbs.bccn.net/space.php?action=threads&uid=483997
2010-10-31 21:54
vandychan
Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15
等 级:贵宾
威 望:18
帖 子:2296
专家分:6418
注 册:2010-8-20
收藏
得分:0 
看错了 是说你很犀利

到底是“出来混迟早要还”还是“杀人放火金腰带”?
2010-10-31 21:55
御坂美琴
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:魔術の禁書目錄
等 级:小飞侠
威 望:9
帖 子:952
专家分:2929
注 册:2010-8-18
收藏
得分:0 
是我说错了,请无视我

永远为正义而奋斗,锄强扶弱的Level 5 超能力者
とある魔術の禁書目錄インデックス__御み坂さか美み琴こと
http://bbs.bccn.net/space.php?action=threads&uid=483997
2010-10-31 22:01
BlueGuy
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:29
帖 子:4476
专家分:4055
注 册:2009-4-18
收藏
得分:0 
回复 8楼 御坂美琴
没用的,你已经伤害到了我,/

我就是真命天子,顺我者生,逆我者死!
2010-10-31 22:09
vandychan
Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15
等 级:贵宾
威 望:18
帖 子:2296
专家分:6418
注 册:2010-8-20
收藏
得分:0 
你伤害了我 却一笑而过

到底是“出来混迟早要还”还是“杀人放火金腰带”?
2010-10-31 22:23
快速回复:良好代码风格(三)---- 易读
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.078065 second(s), 7 queries.
Copyright©2004-2025, BCCN.NET, All Rights Reserved