哈, 抽空上来喷句代码设计。。。。

中山野鬼 发布于 2014/10/28 00:25
阅读 1K+
收藏 2

看了几个c语言的帖子,讨论一些特殊的逻辑描述。真心想不出这种坑怎么还在继续挖。为了指明这是坑,我喷一喷。仍然那句话,我野鬼,你权当是个喷壶,无所谓。哈。无非看到坑指出来,你爱跳不跳。往往体验在自身,不真正进坑的,你可能还真不知道我在说什么。。。。

从几个方面说,先从执行效率上说。我的老本行是做优化的。简单说,给定一套c代码,我怎么组织代码逻辑,代码摆放规则,数据组织方式,数据摆放规则,甚至使用汇编,让程序跑的快一点。这么多年的血泪经验告诉我,最简单描述的代码,是最好优化的。人工好优化的,编译器就更好优化。编译器好优化的,执行效率就是高的。

说血泪教训是,奇思怪象的逻辑描述方式不是没玩过,和用老鼠夹挑逗自己小jj一样的下场,结果就是自己骂自己sb。

从代码的复用性角度,即便是c语言,我现在也尽可能的强调一个c文件的封装,内部逻辑外部不可见,该c文件的所有入口函数统一调用。一切的核心就是模块化,降耦合。提高代码复用性。为啥要提高代码复用性。做应用系统的如同做建筑设计的,而不是做搬砖头施工的,复用是用别人的。c语言做底层设计,也很苦逼的,你经常要复用自己曾经的逻辑。你为一个系统的设计,就要基于os和标准库的函数重新堆一堆基础操作,就是你不说累,你的系统也做不大。奇思怪象特别是利用c语言标准未明确定义的规则实现的逻辑,你换个编译器,换个os,换个硬件平台(特别是厂家提供的编译器只支持有限c标准,而不是最新标准版本里的新奇玩意),你的复用库里藏的这些逻辑,很容易形成bug。bug到处有,就怕两点,1、永远都是客户能找到而你无法复制,2、bug就是在那你就是解决不了。

前者和你的处理逻辑面对的现实数据有关,后者和你的直观意识有关。你认为,这不可能有问题,实际就是问题。

别说奇思怪象的逻辑,曾经,因为arm上的默认char 型是无符号的,当然你可以用参数转成有符号的,一个大小判定的逻辑就是错了。c标准没有规定char是否带符号。你说容易抓,我只能说你写的系统不够大,bug藏的不够深(BUG深不深不是看调用多少层,而是这个bug你的理解力,你始终坚定不移的认为,实际的bug是合理的,这种bug就是很深的bug)。所以现在,_u8就是_u8,_c 就是char ,_i8 就是_i8 这是三个不同的类型,我绝对不会用char 对应的_c去做什么边界判断,而只会用于ascii字符。

从代码的可扩展性(包括可调整)而言,特别是基础库(此处只说c语言,其他更高级的语言一般没这个问题),我整天考虑的是如果数据组织和逻辑处理上简单简单再简单。为什么?逻辑越简单,越容易后期再读时一下理解,而且越少潜在出错的可能,同时,接口不变下,内部逻辑扩展调整的余地越大。所以,一个目标可以用多种逻辑实现的,我一定选择最简单的,而不是最考虑智商的。等系统大了,你抓bug的时候,再考虑智商问题吧。而且更多体现在系统的结构设计上,而不是模块内部的具体逻辑实现上。

最后,奉劝一句,出于你对团队其他好基友负责的角度,出于你对以后接你班的好基友负责的角度,甚至出于对以后你自己负责的角度,一个设计目标,尽可能用c标准明确定义的逻辑,最简单的逻辑来实现。大多数非并行逻辑,对于编译器而言,你要看成你的好基友。简单的逻辑,它会更好的理解和组织优化设计。我到现在养成的习惯,++i绝对不用,谁用谁滚蛋,i++只在 一种情况用, i++;没其他。什么 pdst[i++] = psrc[i];的,写多一行不会累,你自己理解防止意外就很累,有意思吗?我很彪悍的喷一句,我敢说,比你设计的系统大了那么点点(正确下),就是因为我不会动脑子去理解我写的这些代码,而把注意力用于系统设计本身,而你为体现智商,把精力耗费在这些没意义的地方。

至于那些学习c,大脑精力空余,闲的蛋疼的,你有空可以多看看c的国际标准,至少让自己明确,哪些是明确定义的,哪些是未明确定义,设计时要尽可能回避的。再蛋疼,你完全可以去看看flex , bison,等经典小工具的源码和设计思想,然后做原型设计概念。你还能蛋疼,不要去看linux,去看minix,自己写个最简化的操作系统。如果你还能蛋疼而不是脑袋疼,恭喜里,找份不错的工作,提职加薪迎娶白富美吧。

我的口号,和 @宏哥 的很多观点是等同的,虽然他的很多表面意思被误解。就是,不能给客户带来价值的,不能响应客户需求的,都是shit。

重复那句话,计算语言,无论是c还是javaor其他,是工具,干活用的,不是写诗泡妹子的。。。。哈。

加载中
1
方棱
方棱
有些人出发点和你不同,你是要做一个好产品,他们是要做一个“我的产品”。
0
loyal
loyal
没有设计,就是最好的设计.
loyal
loyal
回复 @eel : 所以你不能这么说.因为你是码农.
修改登录密码
修改登录密码
乔布斯可以这么说 雷布斯可以这么说,但是码农这么说就是灾难了
0
中山野鬼
中山野鬼

引用来自“loyal”的评论

没有设计,就是最好的设计.
这话确实需要一定经验的人,才能理解。哈。我支持。。。。
乌龟壳
乌龟壳
回复 @中山野鬼 : ulimit -s
中山野鬼
中山野鬼
回复 @乌龟壳 : 当然自建堆栈容易。哈。
乌龟壳
乌龟壳
野鬼,自建堆栈和利用系统功能扩大堆栈哪个容易点?
0
lxbzmy
lxbzmy
理解透彻。
0
喵星人哦
喵星人哦
我想喷你的代码风格
0
LucEsape
LucEsape
鬼子 你好胸啊
0
浏览者
浏览者

无论是c还是javaor其他,是工具,干活用的,不是写诗泡妹子的



我不明白什么大道理,我只是觉得用着顺手、能赚到钱的就是好语言。野鬼说话一直都很有水平。


返回顶部
顶部