大公司的核心项目代码也不是那么美好(c++)

2021-02-20 10:03:29 +08:00
 whi147

不同的页面,相似的功能,没有抽象全是复制粘贴。想改成模版元编程或者二级指针抽象,发现又不是完全复制,都是把结构体换了个名字复制,二十几个文件顿时丧失优化兴趣。反正能跑就跑算了

11988 次点击
所在节点    程序员
94 条回复
stevenkang
2021-02-20 16:45:07 +08:00
优化大厂的项目,代码也不算多 14w 行左右,硬是把 sonar 扫描出来的中、高级缺陷都给消灭掉了,剩余低级缺陷不足 20 个,之前有不低于 500 多处不规范代码。

优化的过程其实对企业产生不了效益,反而增加测试同学的负担,优化的时候都是非常谨慎,生怕影响原来的代码逻辑。

现在看来,优化代码前,还是得先从单元测试入手,一步一步让屎山变为金山银山吧。
hxndg
2021-02-20 17:07:02 +08:00
@paradoxs
噗,如果这样子说的话,你像我司是三个人定好标准,只求简洁和清楚:把 OPENSSL 库封装好,然后提供各种级别调用,我们都是培训班出身呗。。。。
@northisland
从工程实践的角度有道理,
但是有的地方还真是追求强行一致性,比方说 linux 内核里面的 list_entry,page_struct 里面的 mapping 还有就是 openssl 里面的一大堆地方都是强行追求一致性

@ericgui
实际上都是先有的重复,然后才有的抽象。
jsjgjbzhang
2021-02-20 17:27:57 +08:00
打江山阶段和坐班阶段能一样么
tailf
2021-02-20 17:35:33 +08:00
代码是写给人看的,只是恰好能运行。
OliverDD
2021-02-20 18:07:52 +08:00
我觉得,这只是工作,你写得再好看优美,客户看不到 boss 看不到,代码除非别人接受不然没人看得到。有那个想法爱好,课余时间去贡献贡献开源代码,那才是该写优美的地方。工作就是工作,目标驱动,何必为难自己为了设计去设计
xumng123
2021-02-20 18:09:58 +08:00
沟通成本极高,所以能不改就不改,将就能用即可
owenliang
2021-02-20 18:19:07 +08:00
打江山的代码,收益远大于表面文字
going2think
2021-02-20 18:26:11 +08:00
.想搭车问一下大家,c++稍微大型点的项目规范文档哪里有呢,最近在写一些 c++项目,总感觉很不规范,想找一些文档参考一下
imzcc
2021-02-20 18:54:00 +08:00
我们公司一个 typeapi 有 7.8m ,惊了
imzcc
2021-02-20 18:54:33 +08:00
@imzcc Java class
timsensor
2021-02-20 18:56:04 +08:00
一切跟业务走,否则谁都不知道你干了什么
newmlp
2021-02-20 18:59:18 +08:00
@going2think 随便写,有没有规范都一个样 [手动滑稽]
shayuvpn0001
2021-02-20 20:03:24 +08:00
@going2think 可以参考 Chromium 的文档,我觉得还是不错的。如果本身底子不好,人员水平又参差不齐,建议还是尽量用 Qt 这种框架,给你一个比较好的模式和舞台。

还有一些项目虽然很有名也很厉害,比如 Linux 内核的,其实不建议参考,一是为了尽可能保证效率各种骚操作多,二是历史包袱也是有点重的。
jorneyr
2021-02-20 20:11:40 +08:00
IBM 的 Domino, 其中有一个 cpp 文件超过 10M,Notes 的一个核心函数 1 万多行。
melkor
2021-02-20 20:35:07 +08:00
@whi147 小公司业务和大公司业务的复杂度和历史包袱不可相比吧
AndyAO
2021-02-20 20:48:09 +08:00
成熟的思考,极高的可读性,走到极致就应该是文学编程。
自从这个概念被高德纳提出并且实践以来,当前属于文学编程的低潮阶段,它比任何时候都冷。[^1]
有很多好东西是被重新发现的,所以这不排除这是未来,毕竟,对项目的质量和可维护性应该有很大提升。

[1]: Whither Literate Programming (1)/(2)/(3).
AndyAO
2021-02-20 22:02:13 +08:00
还有就是,很好奇你说的具体是哪个「大公司」,「大」是个很模糊的词汇,如果看市值和知名度的话,可口可乐算是很大的公司,但保不齐他们的某个 IT 项目做得非常烂。
abcbuzhiming
2021-02-20 22:48:11 +08:00
记得在别处看到过,google 的搜索引擎有个核心程序是 C++写的,编译出来得到的可执行文件高达 1GB ;以至于编译时的 GCC 超出内存占用,以至于那个开发组不得不魔改 GCC 来完成编译。

我个人觉得,抽象也好,各种设计模式也好,过于学术,过于完美。而现实不是完美的,所以现实的东西总是看起来这里有缺点,那里有缺点。所以我觉得,程序员尤其不能处女座
chenqh
2021-02-20 22:52:30 +08:00
@paradoxs 你这在黑谁呀?怎么感觉都黑了
chenqh
2021-02-20 22:54:26 +08:00
@abcbuzhiming 谷歌不都是 128G 内存的吗,还会内存溢出?

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/754480

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX