loader
bg-category
Linus Torvalds對一些'Sh * t Code'感到瘋狂和憤怒

與朋友分享

作者的文章: Kenneth Douglas

短字節: Linus Torvalds說:“談話很便宜。給我看一下代碼。“如果你給他看一些代碼並且讓他生氣了怎麼辦?好吧,你將在一場充滿誓言的毫無歉意的咆哮中發現答案。

Linux之父是一位傳奇的軟件工程師,當他看到糟糕的代碼時會生氣。本週早些時候,他對Linux版本4.3的一些拉動請求完全崩潰了。

嗯,他不喜歡提交的內容,並用這些話開始了這個令人敬畏的咆哮: 基督徒。這只是sh * t。

即使你不懂編程,你也可以坐下來,拿一些爆米花,享受這種精緻的咒罵。

閱讀Linus Torvalds的完整回復如下:

基督徒。這只是sh * t。

我得到的衝突是由於愚蠢的新gcc頭文件廢話。但是什麼 令我不高興的是,廢話是出於完全虛假的原因。

這是net / ipv6 / ip6_output.c中的舊代碼:

mtu - = hlen + sizeof(struct frag_hdr);

這是使用想要的花哨東西的新“改進”代碼 神奇的內置編譯器支持,並具有愚蠢的包裝函數 當它不存在時:

if(overflow_usub(mtu,hlen + sizeof(struct frag_hdr),&mtu)|| mtu <= 7) 轉到fail_toobig;

以及任何認為上述情況的人

(a)清晰易讀 (b)高效(即使有神奇的編譯器支持) (c)特別安全

只是無能和外出吃午飯。

上面的代碼是sh * t,它生成了狗屎代碼。它看起來很糟糕,而且 這沒有理由。

代碼可以*輕鬆*只用一個和 可理解的條件,編譯器實際上會有 生成更好的代碼,代碼看起來更好,更多 可以理解的。為什麼不這樣做

if(mtu <hlen + sizeof(struct frag_hdr)+ 8) 轉到fail_toobig; mtu - = hlen + sizeof(struct frag_hdr);

這是相同數量的行,不使用瘋狂的幫助函數 沒有人知道他們做了什麼,而且更明顯是什麼 實際上。

我保證第二個更明顯的版本更容易閱讀和 了解。有人真的想對此提出異議嗎?

真。給我*一個*原因,它是以愚蠢的方式寫的 具有兩種不同的條件,以及閃亮的新非標準功能 希望特定的編譯器支持生成甚至中途理智 代碼,甚至然後生成更糟糕的代碼?一個閃亮的功能,我們 從來沒有在任何其他地方需要,這只是 編譯器自慰。

是的,如果整個“hlen +”,你仍然會遇到溢出問題 xyz“表達式溢出,但坦率地說,”overflow_usub()“ 代碼也有。所以,如果你擔心,那你該死的 沒有做正確的事情開始。

所以我真的沒有理由認為這種完全愚蠢的廢話。

告訴我為什麼。因為我不是在拉這種完全瘋了 在rc7時間產生衝突的東西,似乎有 絕對沒有理由被愚蠢的愚蠢無法辨認的混亂。

代碼似乎*設計*使用新的“overflow_usub()”代碼。它 似乎是使用該功能的藉口。

這對於那個braindamage來說是一個很糟糕的藉口。

對不起,我們不會添加像這樣的愚蠢的新界面 這樣的愚蠢的新代碼。

是的,是的,如果它留在網絡層內,我永遠不會 注意到了但是因為我*注意到了,我真的不想拉 這個。事實上,我想向*所有人*清楚地說明代碼 這是完全不可接受的。任何認為代碼都喜歡的人 這是“安全”和“安全”,因為它使用花式溢出檢測 功能到目前為止,午餐時間甚至都不好笑。這些所有 垃圾的一種做法是使代碼變得難以理解 沒有理智的人會真正理解它實際上做了什麼。

擺脫它。而且我不想*再次看到那個狗屎。

萊納斯

你有沒有得到Linus說的話? Linus在代碼中談話,他不喜歡有人混淆他的代碼。

通過:Git Networking

與朋友分享

您的意見