tft每日頭條

 > 生活

 > 計算公式裡出現的下劃線什麼意思

計算公式裡出現的下劃線什麼意思

生活 更新时间:2025-08-17 08:56:51

說明:減号,中劃線,dash,在本文中等同;下劃線,underscore,等同。“連接符”,泛指連接單詞的符号(故意沒使用“連字符”/hyphen,因為連字符通常就是中劃線/減号)。

計算公式裡出現的下劃線什麼意思(淺說下劃線與減号)1

下劃線在上

直觀的差别
  • 視覺上,減号更平衡。而下劃線的存在感更低,在http鍊接中甚至可能被淹沒,和空格很難區分。
  • 在輸入上,下劃線需要多按一下 Shift 鍵,所以減号在便利性上加0.1分。

計算公式裡出現的下劃線什麼意思(淺說下劃線與減号)2

下劃線在超鍊接中可讀性差

深入的差别

以下劃線連接的字符串雙擊就會全部選中(注),而減号連接的字符串要全選需要用鼠标。所以下劃線連接更便利,這是一些同學選擇使用下劃線的一個理由。

這個差别已經接近下劃線和減号的本質差别了,那就是它們在“分詞”上的差别。在計算機世界裡,下劃線的連接通常作為一個“單詞”,而減号的連接不是。

注:其實并不是所有軟件中都這樣。随便試了一個版本的Word, 就不是這樣(後面圖中有)。

分詞的差别

這裡的“單詞”不是英語的單詞(word),計算機世界裡我們通常說标識符(identifier)。在标識符裡,下劃線的地位和26個字母基本無差别,比數字的地位還高一點,因為數字通常不能做首字母。

在主流的正則表達式裡,用來表示“單詞”的字符,即\w是這樣的:[A-Za-z0-9_],也就是大小寫字母,數字和下劃線。注意,它不包含減号(這裡的減号是用來表示範圍的)。

所以,在計算機世界裡,大家對于"word"所包含的字符的約定基本是一緻的:包含下劃線,但不包含減号。

基于這個分詞原則,除了剛才的雙擊行為的差别,還會産生很多的差别。

排版的差别

排版的差别主要體現在自動換行時。減号會作為換行時截斷的邊界,而下劃線通常不會。

計算公式裡出現的下劃線什麼意思(淺說下劃線與減号)3

Word中分詞/換行的差别

有些考慮不周的軟件,在面對超長的“下劃線單詞”時,由于不分隔還會造成“溢出”(超出了預期的界面區域)。

計算公式裡出現的下劃線什麼意思(淺說下劃線與減号)4

Jenkins中下劃線超長溢出(上下對比)

搜索的差别

如果你的公司做了一款産品,型号叫作 mycompany_myproduct,假如文檔全程都用這個代号,極端點,沒有提到mycompany或myproduct這兩個單詞,那麼,對于某些搜索引擎,通過myproduct或mycompany将搜索不到這個頁面。

如果型号為mycompany-myproduct,通過mycompany和myproduct,則都是可以搜到的。在做SEO時,更需要考慮這種差異。

據說對于百度,兩者的差異比較小;而對于Google,用減号連接則更有優勢。畢竟多數人會傾向用 myproduct 的關鍵字進行搜索。

深入的邏輯

從形式和邏輯組合上,共有4種符号用來區分隔斷。

  1. 形式上斷開,邏輯上斷開:這是全隔斷,沒有争議地用空格;
  2. 形式上連接,邏輯上斷開:姑且稱“弱連接”,通常用減号;
  3. 形式上連接,邏輯上連接:姑且稱“強連接”,通常用下劃線;
  4. 形式上斷開,邏輯上連接:這是反人類,容易造成錯誤。如果要算,中文全角空格勉強可以算一個。但這不是它的本意,它隻是一些坑的來源。

所以,真正有意義的組合是前3個。我們可以選擇其它符号來表達這3種意思,但從外觀及傳統上,空格,減号,下劃線,這3個符号是比較好的選擇。

為什麼要用下劃線?

最初,我們要用下劃線,是因為減号用來表示減法了。my-var 表示變量 my 減去 var;如果一個變量含有多個英語單詞,為了區分它們,而你又不想用駱駝命名法MyVar,就要用下劃線的my_var。大多數編程語言裡都這是這樣。

這種對标識符的要求會泛化,比如 Python 裡 package 的名字裡隻能用下劃線而不能用減号,從而導緻作為模塊的文件名不能用減号(但作為一般的不被引用的程序文件還是可以用減号的)。

這種泛化進一步蔓延到了C/C 世界裡,比如Google prefer的C 文件名是下劃線(盡管可以用減号)。

這種泛化最後可能會蔓延到所有需要連接單詞的場景上。畢竟人們更容易接受單一的規則。

可以不用下劃線的編程世界

但這不是絕對的。

LISP類語言

在能明确區分操作符和連接符的語法裡,标識符就可以包含減号了,比如LISP,操作符是前置的,元素以空格或括号分隔,這樣标識符就可以随意包含減号了。

(let ((my-var 300) (your-var 100)) (print (- my-var your-var)))

上面的和下面的代碼,結果都是200。"var-300", "var-100", 甚至"300-300", "1-100"都隻是标識符而已,不會被當作減法表達式。隻有列表裡的第一個元素是減号才表示減法操作。

(let ((var-300 300) (var-100 100)) (print (- var-300 var-100))) (let ((300-300 300) (1-100 100)) (print (- 300-300 1-100)))

HTML世界

在XSL中,大量使用帶減号的關鍵字,比如for-each, value-of, copy-of。同樣,你自己的标識符當然也可以包含減号,比如下面代碼中的my-header。

<xsl:variable name="my-header"> <tr> <th>Title</th> <th>Artist</th> </tr> </xsl:variable> <xsl:template match="/"> <table border="1"> <xsl:copy-of select="$my-header" /> <xsl:for-each select="catalog/cd"> <tr> <td><xsl:value-of select="title"/></td> <td><xsl:value-of select="artist"/></td> </tr> </xsl:for-each> </table> </xsl:template>

CSS中也是這樣。

.banner { border: solid black 1px; box-shadow: 1px 2px; background-color: yellow; text-align: center; box-sizing: border-box; width: calc(100% - 80px); }

它有專用的關鍵字用來引用變量的值(var),和做表達式計算(calc),所以它可以肆無忌憚地用減号開頭的标識符。

.foo { --widthA: 100px; --widthB: calc(var(--widthA) / 2); --widthC: calc(var(--widthB) / 2); width: var(--widthC); }

一種感覺,在HTML的世界裡,似乎很抵觸用下劃線。HTML/CSS/XML/XSL的關鍵字裡,似乎都是用減号而不是用下劃線。

思考:語言隻是一種約定嗎?

小時候,一些讀錯的多音字,現在已經變成了正确的。因為大多數人都按照“錯誤”的在讀,比如呆闆,曝光,等等。

畢竟,語言的功用是交流,大多數人都能理解才是重要的,既然絕大多數人都認為它應該那麼念,“将錯就錯”也沒什麼不好。而且,原來的那種“正确”的讀音也沒有反映出更多或更正确的本質。

我就職的上一家公司,到處都是下劃線,比如在Linux内核代碼裡,如果看到下劃線命名的文件,那基本上就是我們公司增加的。換了一家公司後,這種現象有過之而無不及,幾乎凡是需要連接單詞的地方,都是用下劃線。

作為一個中老年碼農,我應該高興,這說明碼農已經開始占領世界了。

那麼,糾結用下劃線還是減号,是不是像糾結生僻的多音字,或茴字有幾種寫法,變得不合時宜?我是否應該随大流?

但據我有限的觀察,在英語的技術世界裡,仍然是有區分地使用兩者,并沒有無腦用下劃線。

另外一點堅持就是邏輯上我們需要這兩種符号:一種表示強連接,一種表示弱連接(如前所述)。兩者并不完全是替代關系。

結語及倡議

下劃線和減号都可用于連接字符串,這時它們的本質差别在于:分詞邏輯的不同。

  • 下劃線通常用于表示“強連接”:形式上是連接的,邏輯上也是一個整體,在機器世界裡通常會作為一個"word";
  • 減号通常用于表示“弱連接”:形式上是連接的,邏輯上是分隔的,通常會被機器作為多個"word";
  • 兩種連接符并存的字符串裡,我們通常認為下劃線具有更高的的“優先級”。

在國内軟件領域,個人觀察,下劃線有被濫用的迹象。但在英文世界裡,在代碼以外,基本仍然遵循英文書寫的習慣,使用減号作為連接符。

所以我倡議:如非不得已,盡量使用減号作為連接符。

概括地說,目标是給機器(比如編譯器)看的領域,比如源代碼和某些語言的文件名,使用下劃線;目标是給人看的領域,比如UI,技術文章,遵循英文書寫習慣,使用減号。這樣具有最好的兼容性。

計算公式裡出現的下劃線什麼意思(淺說下劃線與減号)5

使用減号的連接

作為個人,入鄉随俗,在某個特定的技術領域、特定的團體,以局部的規則和約定為優先。但另一方面,作為規範的制定者,要考慮“真正的主流”及其内在邏輯,不要輕易将規則擴大化。

,

更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!

查看全部

相关生活资讯推荐

热门生活资讯推荐

网友关注

Copyright 2023-2025 - www.tftnews.com All Rights Reserved