免费注册 查看新帖 |

ChinaUnix.net

  平台 论坛 博客 文库 频道自动化运维 虚拟化 储存备份 C/C++ PHP MySQL 嵌入式 Linux系统
最近访问板块 发新帖
楼主: yecheng_110

多个strcmp比较的时候大家是怎么做的? [复制链接]

论坛徽章:
0
发表于 2007-07-17 11:16 |显示全部楼层
struct  {
  const char *name;
  int (*action)(void);
};
不错呀, 写出来的代码也很容易理解, 为什么说"这样代码也比以前不好理解了".
楼主的要求是
1)可读性 2)性能
我个人觉得都可以满足的.  另外性能的要求, 没有数据要求来说的话, 这样空讨论是没有意义的.

论坛徽章:
0
发表于 2007-07-17 13:18 |显示全部楼层
参考C++ STL map的实现,做个shullf

论坛徽章:
95
程序设计版块每日发帖之星
日期:2015-09-05 06:20:00程序设计版块每日发帖之星
日期:2015-09-17 06:20:00程序设计版块每日发帖之星
日期:2015-09-18 06:20:002015亚冠之阿尔艾因
日期:2015-09-18 10:35:08月度论坛发贴之星
日期:2015-09-30 22:25:002015亚冠之阿尔沙巴布
日期:2015-10-03 08:57:39程序设计版块每日发帖之星
日期:2015-10-05 06:20:00每日论坛发贴之星
日期:2015-10-05 06:20:002015年亚冠纪念徽章
日期:2015-10-06 10:06:482015亚冠之塔什干棉农
日期:2015-10-19 19:43:35程序设计版块每日发帖之星
日期:2015-10-21 06:20:00每日论坛发贴之星
日期:2015-09-14 06:20:00
发表于 2007-07-17 13:25 |显示全部楼层
原帖由 jackalchen 于 2007-7-17 11:16 发表
struct  {
  const char *name;
  int (*action)(void);
};
不错呀, 写出来的代码也很容易理解, 为什么说"这样代码也比以前不好理解了".
楼主的要求是
1)可读性 2)性能
我个人觉得都可以满足的.  另外性 ...

其实这种方式更容易理解。

论坛徽章:
1
双子座
日期:2015-01-04 14:25:06
发表于 2007-07-17 13:26 |显示全部楼层
原帖由 jackalchen 于 2007-7-17 11:16 发表
struct  {
  const char *name;
  int (*action)(void);
};
不错呀, 写出来的代码也很容易理解, 为什么说"这样代码也比以前不好理解了".
楼主的要求是
1)可读性 2)性能
我个人觉得都可以满足的.  另外性 ...

主要是程序本来就不大
这样写确实不错
不过对C理解不好的人可能就不怎么懂了
“这样代码也比以前不好理解了"
也就是说以前是一看就懂
现在还要有点技巧才行

论坛徽章:
1
双子座
日期:2015-01-04 14:25:06
发表于 2007-07-17 13:27 |显示全部楼层
性能到是不怎么要求了
好像这样做效率是很差的

论坛徽章:
0
发表于 2007-07-17 13:29 |显示全部楼层
原帖由 yecheng_110 于 2007-7-17 13:26 发表

主要是程序本来就不大
这样写确实不错
不过对C理解不好的人可能就不怎么懂了
“这样代码也比以前不好理解了"
也就是说以前是一看就懂
现在还要有点技巧才行


为什么说效率差?二分很快啊。

论坛徽章:
95
程序设计版块每日发帖之星
日期:2015-09-05 06:20:00程序设计版块每日发帖之星
日期:2015-09-17 06:20:00程序设计版块每日发帖之星
日期:2015-09-18 06:20:002015亚冠之阿尔艾因
日期:2015-09-18 10:35:08月度论坛发贴之星
日期:2015-09-30 22:25:002015亚冠之阿尔沙巴布
日期:2015-10-03 08:57:39程序设计版块每日发帖之星
日期:2015-10-05 06:20:00每日论坛发贴之星
日期:2015-10-05 06:20:002015年亚冠纪念徽章
日期:2015-10-06 10:06:482015亚冠之塔什干棉农
日期:2015-10-19 19:43:35程序设计版块每日发帖之星
日期:2015-10-21 06:20:00每日论坛发贴之星
日期:2015-09-14 06:20:00
发表于 2007-07-17 13:59 |显示全部楼层
原帖由 yecheng_110 于 2007-7-17 13:26 发表

主要是程序本来就不大
这样写确实不错
不过对C理解不好的人可能就不怎么懂了
“这样代码也比以前不好理解了"
也就是说以前是一看就懂
现在还要有点技巧才行

需要什么技巧?跟着代码的逻辑一路往下走就是了。

[ 本帖最后由 MMMIX 于 2007-7-17 14:02 编辑 ]

论坛徽章:
0
发表于 2007-07-19 09:38 |显示全部楼层
表驱动+Hash

论坛徽章:
0
发表于 2007-07-19 10:30 |显示全部楼层
原帖由 yecheng_110 于 2007-7-17 10:11 发表

其实我也这想这样  
不过这样代码也比以前不好理解了
只有30多个选项吧
增加复杂度不知道值得不



就30多个选项……楼主何必呢……
要相信现在机器的性能。象这种地方,数据量又不大,你用再好的方法,提高的性能也是很小的,徒增程序的复杂度而已。我觉得,只有关键部分才值得花心思去设计效率高的算法,其他部分,怎么简单怎么写。不但写的快,程序通俗易懂,后期维护也容易。机器速度变的越来越快,现在很多事情不用太过计较了。当然,如果你做嵌入式,那就另当别论了。

论坛徽章:
95
程序设计版块每日发帖之星
日期:2015-09-05 06:20:00程序设计版块每日发帖之星
日期:2015-09-17 06:20:00程序设计版块每日发帖之星
日期:2015-09-18 06:20:002015亚冠之阿尔艾因
日期:2015-09-18 10:35:08月度论坛发贴之星
日期:2015-09-30 22:25:002015亚冠之阿尔沙巴布
日期:2015-10-03 08:57:39程序设计版块每日发帖之星
日期:2015-10-05 06:20:00每日论坛发贴之星
日期:2015-10-05 06:20:002015年亚冠纪念徽章
日期:2015-10-06 10:06:482015亚冠之塔什干棉农
日期:2015-10-19 19:43:35程序设计版块每日发帖之星
日期:2015-10-21 06:20:00每日论坛发贴之星
日期:2015-09-14 06:20:00
发表于 2007-07-19 11:02 |显示全部楼层
原帖由 vafls_scott 于 2007-7-19 10:30 发表



就30多个选项……楼主何必呢……
要相信现在机器的性能。象这种地方,数据量又不大,你用再好的方法,提高的性能也是很小的,徒增程序的复杂度而已。我觉得,只有关键部分才值得花心思去设计效率高的算法 ...

一长串 if ... else if ... 并不好维护,可读性也不好,虽然其很简单。想想看,如果有百十来个 if ... else if ... 判断(甚至更多),你如何确保里面的条件没用重复的?如果确保这里使用的条件和其他地方使用的完全一致(这种情况并不罕见)?这还只是问题的一个方面。另外还有数据分得过散,不好组织、理解,等等方面的问题。所以,对这种有很多判断的情况,表驱动要比一堆的 if ... else if ... 好多了,虽然代码要稍微复杂点。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

数据风云,十年变迁
DTCC 第十届中国数据库技术大会已启航!

2019年5月8日~5月10日,由IT168旗下ITPUB企业社区平台主办的第十届中国数据库技术大会(DTCC2019),将在北京隆重召开。大会将邀请百余位行业专家,就热点技术话题进行分享,是广大数据领域从业人士的又一次年度盛会和交流平台。与SACC2018类似,本届大会将采用“3+2”模式:3天传统技术演讲+2天深度主题培训。大会不仅提供超100场的主题演讲,还会提供连续2天的深度课程培训,深化数据领域的项目落地实践方案。
DTCC2019,一场值得期待的数据技术盛会,殷切地希望您报名参与!

活动入口>>
  

北京盛拓优讯信息技术有限公司. 版权所有 16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122
中国互联网协会会员  联系我们:huangweiwei@it168.com
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP