免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
楼主: pmerofc
打印 上一主题 下一主题

[C] 有多少C程序员认为这是错误的写法 [复制链接]

论坛徽章:
0
151 [报告]
发表于 2012-05-13 17:24 |只看该作者
回复 149# walleeee

反正用起来自残程度最多也就和指针一样,而且更容易发现什么时候莫名自残了,那又垃圾在哪呢?

论坛徽章:
0
152 [报告]
发表于 2012-05-13 17:25 |只看该作者
回复 148# 幻の上帝


所以这些都很麻烦,都比较棘手,我倾向于用封装来尽可能规避这些问题。尽管c也可以很好的封装,但是c++用起来更方便,毕竟这是c++这个语言设计目的之一,也提供了更方便的技巧和工具,这是我用c++的重大原因之一。

论坛徽章:
0
153 [报告]
发表于 2012-05-13 17:28 |只看该作者
回复 152# walleeee

封装是指?指针可以作为迭代器,指针也可以封装成迭代器。

论坛徽章:
0
154 [报告]
发表于 2012-05-13 17:29 |只看该作者
回复 151# 幻の上帝


   
for (list<string>::iterator it = fileList.begin(); it != fileList.end(); it++)
          {


这段代码很爽么?你要理解多少东西?还有迭代其分好种,向前向后,是不是常量,以及各种各样隐晦不可言的潜规则。

算了,我是没法把握这些旮旮角角的复杂性了。

再说,你觉得迭代其更能发现错误?唉,这是你的臆想。

迭代器错了及其麻烦,牵扯到模版等等各种东西,而指针错误,一般熟念的程序员一看就明了,用的时候也会潜意识的规避错误。
但是迭代器不说熟念成本远大于熟悉指针,就算错了,你也没法。

论坛徽章:
0
155 [报告]
发表于 2012-05-13 17:31 |只看该作者
回复 153# 幻の上帝


封装就是封装的状态。

对,封装指针是迭代器的一大块。但是我还是讨厌迭代器这些糟粕,用指针好。

指针好。

论坛徽章:
2
程序设计版块每日发帖之星
日期:2015-06-17 22:20:00每日论坛发贴之星
日期:2015-06-17 22:20:00
156 [报告]
发表于 2012-05-13 17:42 |只看该作者
提示: 作者被禁止或删除 内容自动屏蔽

论坛徽章:
0
157 [报告]
发表于 2012-05-13 17:42 |只看该作者
回复 154# walleeee


代码一眼看起来当然是很不爽啊,但是这里的主要原因倒不如说是C++98/03的语法缺陷。
for (auto it = fileList.begin(); it != fileList.end(); it++)
这个如何?
理解——比指针困难吗?比如说常量——指向的东西是否可修改的问题——指针照样得考虑const吧?而指针能当成一类功能最全的随机迭代器来用,不如说可以算一类最复杂的迭代器,其它的都比这个简单。
潜规则是指?如果懒得记分类,那也只管用好了,反正比起全部用随机迭代器而言,增加的风险也就是编译不过而已。
“迭代其更能发现错误”——准确地说,只是把某些迟早该发现错的错误提前到编译期。这里的观点和这个类似:http://www.haskell.org/haskellwiki/Why_Haskell_just_works
另外一个好处就是比指针更通用:某些不需要随机迭代器而只需要其它迭代器的算法可以一并表达,不用写了指针版本的以后再写别的,麻烦。

论坛徽章:
2
程序设计版块每日发帖之星
日期:2015-06-17 22:20:00每日论坛发贴之星
日期:2015-06-17 22:20:00
158 [报告]
发表于 2012-05-13 17:43 |只看该作者
提示: 作者被禁止或删除 内容自动屏蔽

论坛徽章:
0
159 [报告]
发表于 2012-05-13 17:46 |只看该作者
回复 156# pmerofc


    好吧,无所谓了,反正总之下标算是数组个一个重要特性之一行吧?这样说行不行?

反正c++这些还可以重载这个,所以我前面说的不明确,这回明确了?

论坛徽章:
0
160 [报告]
发表于 2012-05-13 17:48 |只看该作者
回复 155# walleeee


你既然已经知道是你可以使用的封装,而又不愿意理解更多所以不用?那么看起来只是你的本能厌恶而已,并非技术上的理由。
还有我记得你说过你不相信这方面“通用”。不过我想可能是你没遇到过足够体现这些通用的手段能节约代码而带来显著好处的场景吧。的确光是看代码,这方面的解决方案可能很丑陋。但是对我来说,比起不得不重复维护类似的一堆代码,它能节约不必要的重复代码带来的好处更重要。

您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP