怎么看这两个代码?

272 天前
 zhengqiaoyin

看了一篇关于 linus 的内容,不知该如何评价这两张图


补一个来源吧:一个 Liuns 的故事

3774 次点击
所在节点    程序员
24 条回复
liuyunlong
272 天前
地址
NessajCN
272 天前
变量定义得越少,if 用得越少,代码越优雅呗
cuihua
272 天前
具体情况具体分析:
1. 内核中使用第二种,因为都是大佬看,而且内核用的多,千锤百炼不会有问题。
2. 工程中我选择前者,kiss 原则,性能相同,代码蠢一点更好
misdake
272 天前
indirect 很好地覆盖了 head 的特殊性,后续代码不再需要关心这个问题,节约了注意力,不容易出 bug ,后续维护也不容易出错
weeei
271 天前
初学肯定是从第一种写起。
第二种是高级写法,就是把第一种的思考逻辑做了合并,两个逻辑是等价的。
我这种菜鸟是打死都想不到第二种的,没办法没有天赋。
weeei
271 天前
这里是内核代码,最求的节省 CPU 时钟,第二种对大牛来说才是正常代码。
Ianchen
271 天前
优雅永不过时,喜欢并且认同第二种写法
janus77
271 天前
第二种好是好,不适合我这种菜鸟
Shatyuka
271 天前
HaroldFinchNYC
271 天前
这是一次 TED 采访里的代码片段

你要是能看懂第二种,自然就用第二种
x77
271 天前
我的视角看第二种比第一种更热爱技术,觉得到了一个阶段自然而然的就会慢慢转向第二种写法,也更喜欢看到第二种的写法
bojackhorseman
271 天前
虽然我看不懂,但我知道这是 Linus 在一次 Ted 上举出的好坏对比示例代码
lixile
271 天前
@Shatyuka emmmmmm 我说个奇怪的地方 因为我常用版本是 gcc 9.3.0 我就把上面代码切换到 gcc 9.3.0 发现 居然是前面一种指令集更少 是 16 行 第二种 18 行
zagfai
271 天前
15 年前我写 c 就用第二种了,明显是水平差距
lsk569937453
271 天前
我看不懂 c++。还好有 python,js,java 这些语言,让编程的门槛减低了很多。
Shatyuka
271 天前
@lixile 所以我更喜欢 clang 一点
gcc 两个汇编差不多,一个
```
mov QWORD PTR [rdx+8], rax
```
一个
```
add rdx, 8
mov QWORD PTR [rdx], rax
```
Projection
271 天前
像 Java 、JavaScript 这类没有指针的语言,想要修改一个对象的 next 字段必须先获取到这个对象才能修改,所以必须用变量存储这个对象本身;而不能像 C/C++ 那样可以拿到 next 字段的指针来修改。第一种方法基本所有语言都可以用,第二种必须要语言支持指针,这更多是语言差异。

对于链表操作来说,用第一种方法时,有头结点和没有头结点操作链表的方式有差异,所以有时出于方便会选择使用头结点。但如果像第二种写法一样使用指向 next 字段的指针或引用,有没有头结点操作都很方便。
yolee599
271 天前
if-else 里面只有一条语句,我看着也不舒服,特别是 C style 的代码
lcingOnTheCake
271 天前
这是伪代码吧
cnbatch
271 天前
@lsk569937453 准确来说,这两段代码是纯 C 的

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

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

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

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

© 2021 V2EX