免费注册 查看新帖 |

Chinaunix

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

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

论坛徽章:
2
青铜圣斗士
日期:2015-11-26 06:15:59数据库技术版块每日发帖之星
日期:2016-07-24 06:20:00
211 [报告]
发表于 2012-05-14 00:49 |只看该作者
walleeee 发表于 2012-05-14 00:30
回复 206# OwnWaterloo

学术代码怎么了?工业代码又怎么了?难道一个比一个高贵或者低级?
代码难道还要分学术和工业?分别对待么?
尽管目前学术代码的确让很多人不耻,不过这不该成为一个态度。这是不对的。

你为什么总是想说服别人?有个说法:问问题的人往往在内心深处其实已经有答案。
我反正点到为止,觉得我说的有道理就听,没道理当废话也行。你何必执着?这是执念,懂不懂?

我更多的是在表达我自己,而不是给别人解决问题,因为在我看来,他早就有答案了,何必我来解答,何况我**能力来解决别人的问题,最多能给点启发。


关于学术代码与工业代码,327说这话时心里怎么想的且不说。
我想说的是那种不弄清楚问题与具体过程,只管最终结果是否正确的做法是错误的。冠上"工业代码"的名,只是在自欺欺人
既然要来show自己的代码,标题还加上"大家评评",被指出问题了又给自己找借口,这是闹哪样?


关于后一段,这就是我和你的不同。
我来论坛是交换意见的,而非展示自我的,我早就过了那个年龄了。
如果能从中收获点不同的东西,泡着才有价值。当然,偶尔看点笑事也有价值。
而展示自我?就个论坛ID,有什么好展示的?我与道德君赌帐号时稀罕过这ID吗?

交换,而不是说服。
就这个楼的问题"是否可以用指针访问二维数组的所有元素",初看到时,心里就咯噔了一下。
并且这不是pm第1次提出这个问题,我记得他以前在某个贴里已经说过这个问题。
即使以前已经提到过,再次提出时我也依然没有把握,是pm在前面某个楼层逼问我才敢把没把握的想法说出来。

并且直到现在,我都没有绝对把握说这肯定行或不行。所以一直在和pm交换意见。也许他最终能说服我这是不行的。

前面几贴一直用的"说服"字眼是因为对"二维数组连续"(而非这楼的主题)这事我有把握,所以在想方设法用pm能接受的方式说服他。

论坛徽章:
0
212 [报告]
发表于 2012-05-14 00:51 |只看该作者
回复 208# 幻の上帝


减少冗余,突出重点,有助于理解。

不是减少冗余的问题。根本就没有减少冗余,类型信息不是冗余,即便这里用个auto替代,但是类型信息依然是明确的。
并没有因为auto减少。反倒是导出auto就会让人看不清真正的类型在哪里,要看清就要做很多额外的事情。

指针偏弱。

不管是弱是强,反正指针才是用起来最方便最舒适的。而迭代器,太抽象。

混用且不说,如何“灾难性”的后果

比如是不是常量迭代器就够人烦,还有方向问题,又麻烦。这些方面指针都要形象很多。
迭代器编译时报错更是让人根本就无法理解,这些想必你也知道。而指针呢?编译时错误很好理解。至于运行时错误,两者都有,并不见得迭代器有什么优势。

么除了习惯以外,有什么能帮助指针避免类似问题

习惯指针,比习惯迭代器容易。而且前者收效远高于后者。

一个容器之中的两个元素在遍历时相隔的距离,不用迭代器用指针怎么求

我不知道你在说什么。我stl用的少。据我说知stl算法一般提供迭代器和指针版本,对于容器,的确都有一致的迭代器。但是我不用stl,所以不发表评论。

for_each很早就有了。你说的是range based for

以前是库实现,现在是语言级别实现。

不过我不太觉得提供语法支持这个会有多大特别的好处

有一些用处,比如迭代起来方便。
相较于传统for循环而言。

另外,我觉得你过于依赖精确的类型了。可靠的静态类型抽象或许可以带来一定安全感,但很多情况下是不必要的,否则动态类型也没人鸟了。

没有。
该是静态就是静态,该动态就动态。
本质是静态就该是静态,非要装动态,有意思么?

把C++当作better C来用并没多大问题,但是只是当better C用——你不觉得你花时间精力了解C++多出来的特性很浪费吗?

我没有当better C,因为我用其他部分没见得给我带来什么实质的好处。当他们给我带来好处的时候我自然会用。
还有,难道我不浪费这些时间去了解C++就能很好的better C么?开什么玩笑。难道你见的中地雷的人还少么?它们中就没有对C++一知半解,想当better C用的人么?



论坛徽章:
0
213 [报告]
发表于 2012-05-14 00:52 |只看该作者
回复 201# walleeee

开硬件渲染,以我这里的效果来说,斜体字还可以接受。
不过在这个版我只习惯照ISO惯例用斜体表示局部用到的概念。

论坛徽章:
0
214 [报告]
发表于 2012-05-14 00:57 |只看该作者
回复 211# OwnWaterloo


我想说的是那种不弄清楚问题与具体过程,只管最终结果是否正确的做法是错误的。冠上"工业代码"的名,只是在自欺欺人。

这个有道理。学术代码只是一个标志,工业代码也一样,一概而论就不对。
还有,对代码的要求有不同的场合不同的级别,并非不分场合的要求高就好,这是不好的。

既然要来show自己的代码,标题还加上"大家评评",被指出问题了又给自己找借口,这是闹哪样?

我没看帖子,不知道。

我来论坛是交换意见的,而非展示自我的,我早就过了那个年龄了。

你别把你当我,我才是来交换意见的,只是我在交换的过程中也表达的只是我想的,我觉得该怎么样。而你不过是在不停的重复并说服别人接受。这才是区别,明白么?
我也没有展示自我,这是你的看法,或者你误解。

你后面说的这些我能理解。你继续吧,只是别再不停的翻你的硬盘,这些是机器做的事情。

论坛徽章:
0
215 [报告]
发表于 2012-05-14 00:59 |只看该作者
回复 213# 幻の上帝



和硬件渲染貌似没什么关系吧?
你说的是字体平滑?就算平滑了也发虚,点阵根本就无药可救,除了效率高一点,完全就该被废弃。

斜体显示中文就不适合,显示英文倒是很好看,比如我显示注释就斜体。

你是看iso看多了,所以已经斜视

论坛徽章:
2
青铜圣斗士
日期:2015-11-26 06:15:59数据库技术版块每日发帖之星
日期:2016-07-24 06:20:00
216 [报告]
发表于 2012-05-14 01:07 |只看该作者
>> 这个有道理。学术代码只是一个标志,工业代码也一样,一概而论就不对。
>> 还有,对代码的要求有不同的场合不同的级别,并非不分场合的要求高就好,这是不好的。

再怎么工业化,追求生产效率,追求A/W/T一致难道很难?
这种无脑口诀"A/W/T一致用,不去管细节"反而应该是工业实践很欣赏的东西。


>> 我没看帖子,不知道。

《 随手写个非递归枚举所有文件的程序, 大家评评》这帖子你没看???


>> 你别把你当我,我才是来交换意见的,只是我在交换的过程中也表达的只是我想的,我觉得该怎么样。而你不过是在不停的重复并说服别人接受。这才是区别,明白么?
>> 我也没有展示自我,这是你的看法,或者你误解。

walleeee 发表于 2012-05-14 00:30
回复 206# OwnWaterloo
我更多的是在表达我自己,而不是给别人解决问题,因为在我看来,他早就有答案了,何必我来解答,何况我**能力来解决别人的问题,最多能给点启发

引用够没?漏了重点没?


>> 你后面说的这些我能理解。你继续吧,只是别再不停的翻你的硬盘,这些是机器做的事情。

有人愿意看我才回的,而且也不是回复你的,你不愿意看大可跳过。老话:
OwnWaterloo 发表于 2012-05-14 00:14
你也要改变你的思考方式:世界不是绕着你转的。不是你觉得要改,这事就应该改,也能够改。

论坛徽章:
0
217 [报告]
发表于 2012-05-14 01:13 |只看该作者
回复 216# OwnWaterloo


再怎么工业化,追求生产效率,追求A/W/T一致难道很难

一个好的程序员,这些根本就不该成为什么问题。

《 随手写个非递归枚举所有文件的程序, 大家评评》这帖子你没看???

中间部分没看,看了前面的代码和你后面那个搔首弄姿的态度部分。

引用够没?漏了重点没?

够,我我更多的是在表达我自己,而不是给别人解决问题没表达清楚,我想说的是:
我在交流的过程中,更多的是表达自己对问题/事实的看法,而不是一味要别人认同,更不是要说服别人,别人如果觉得我表达的没问题可以接受,觉得有问题可以反驳。
而你恰恰相反。

有人愿意看我才回的,而且也不是回复你的

这些不管我事,你随意吧。我只是看到有机器在冒充人,于是点一下,看到底是机器还是人。

论坛徽章:
0
218 [报告]
发表于 2012-05-14 01:25 |只看该作者
本帖最后由 幻の上帝 于 2012-05-14 01:26 编辑

回复 212# walleeee
不是减少冗余的问题。根本就没有减少冗余,类型信息不是冗余,即便这里用个auto替代,但是类型信息依然是明确的。
并没有因为auto减少。反倒是导出auto就会让人看不清真正的类型在哪里,要看清就要做很多额外的事情。

这里就是分歧了。你看来认为在所有情况下类型信息都不是冗余
比如对于for (list<string>::iterator it = fileList.begin(); it != fileList.end(); it++)来说,你认为list<string>::iterator改成auto只是为了写起来省力,而实际上会导致读者不容易弄清it的类型更麻烦。是吗?
或许仅就这个上下文来说是的——且慢——你真的相信,已知fileList是什么的读者,在看到fileList.begin()之后还会觉得有必要看到list<string>::iterator才敢有把握说it是什么类型?
不管是弱是强,反正指针才是用起来最方便最舒适的。而迭代器,太抽象。

你确信对现在的你来说是这样。
那么我也同意。如果不够了解,那么勉强去用也不会有什么好处。
比如是不是常量迭代器就够人烦,还有方向问题,又麻烦。这些方面指针都要形象很多。
迭代器编译时报错更是让人根本就无法理解,这些想必你也知道。而指针呢?编译时错误很好理解。至于运行时错误,两者都有,并不见得迭代器有什么优势。

我不认为常量迭代器会比const指针烦多少。
迭代方向其实不是问题。我的经验是没必要死记有什么操作,只管用就行(最起码在某个范围内的++和*总可以放心),不放心的时候RTFM——该来的是迟早要来的。
关于C++的涉及模板的错误信息,遇到看不下去的时候,我只管定位行号(许多编译器可以精确到列,倒不一定有用),看大致错误是什么,然后无视后面的内容。剩下的和指针差别就不大了。
习惯指针,比习惯迭代器容易。而且前者收效远高于后者。

嗯,仍然适用于现在的你,但对我来说仍然不总是这样。
我不知道你在说什么。我stl用的少。据我说知stl算法一般提供迭代器和指针版本,对于容器,的确都有一致的迭代器。

概括来说的要点就是,你不确定具体容器的精确类型时候,如何清晰地表达访问其中元素的概念——注意,强调作为容器的共性,而不是特定于某个容器。(容器的)迭代器就是为此而生。
指针在这里不好用,因为它允许的操作太多了,不够抽象。题外话,不够抽象也是封装的一个必要理由,而仅仅因为“代码表面上看起来太乱了”所以才需要封装显然不能让人信服。如果你接受封装,应该不难理解这点。
该是静态就是静态,该动态就动态。
本质是静态就该是静态,非要装动态,有意思么?

不同意。
又发现了一个分歧。
先确认一下,你是否认为对于所有(语言、库、以及程序的最终)用户而言,有多少人需要清楚编译期和运行时的区别?
我没有当better C,因为我用其他部分没见得给我带来什么实质的好处。当他们给我带来好处的时候我自然会用。
还有,难道我不浪费这些时间去了解C++就能很好的better C么?开什么玩笑。难道你见的中地雷的人还少么?它们中就没有对C++一知半解,想当better C用的人么?

那么之前这点是我有些误解了。
不过,我认为你不浪费这些时间去了解C++仍然可能很好的better C,只要你不试图去搞明白一些自作聪明的渣代码的话——虽然许多代码的质量多烂并不是一眼就看得出来,但是看到大段你不了解的特性的使用时,你大可以跳过——至少和只是better C没冲突。我一贯认为C++不是必须掌握所有特性才能用的舒服的语言。


论坛徽章:
2
青铜圣斗士
日期:2015-11-26 06:15:59数据库技术版块每日发帖之星
日期:2016-07-24 06:20:00
219 [报告]
发表于 2012-05-14 01:29 |只看该作者
回复 217# walleeee

>>  一个好的程序员,这些根本就不该成为什么问题。
>> 中间部分没看,看了前面的代码和你后面那个搔首弄姿的态度部分。

那你觉得有智慧的327,在那段搔首弄姿的代码之前,是好程序员吗?之后又是吗?


>> 够,我我更多的是在表达我自己,而不是给别人解决问题没表达清楚,我想说的是:
>> 我在交流的过程中,更多的是表达自己对问题/事实的看法,而不是一味要别人认同,更不是要说服别人,别人如果觉得我表达的没问题可以接受,觉得有问题可以反驳。
>> 而你恰恰相反。

相反在哪?

表达自己的看法? 用己见表达是表达看法,用公认表达就不是表达自己的看法?
什么是公认也根基对方来选择的你懂么?
对327,你给他说再多理论都没用,他不会认为自己的代码有问题,除非给他一个实际出错的例子。
对pm,你给他多少个正确或错误的实际例子都没用,除非你给他理论。

要求他人认同?我在327那楼里指出问题后,要不是他那句:"这代码哪里不正确了? 你唧唧歪歪什么呀?"你以为我愿意继续搭理他?

另:仅表达自己的看法、至于他人是否认同就不管了 —— 你还没说被反驳后会怎样呢 —— 这不是在展示自我又是什么?


>> 这些不管我事,你随意吧。我只是看到有机器在冒充人,于是点一下,看到底是机器还是人。

这随你意。 至于是否点你帖子里那些硬伤,得看我心情。

论坛徽章:
0
220 [报告]
发表于 2012-05-14 01:30 |只看该作者
回复 215# walleeee

FF开硬件渲染自动平滑了。
中文的确明显发虚。以前也觉得无法接受,但最近突然觉得又可以了——看来是视力真的变差了。
ISO的斜体比中文当然是要舒服点,所以以前也可以习惯。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP