每當我想到這個問題時,我都會回頭閱讀Joel Spolsky的文章之一,“ 使錯誤的代碼看起來不正確”,其中涉及匈牙利表示法。不僅是無用的匈牙利表示法,其中以描述變量類型的方式來命名變量(對於浮點數,使用 f_pos
;對於雙精度數,使用 d_pos
等)-這在文章中是“ Systems Hungarian”,但實際上是一種實用的原始應用程序,“ Apps Hungarian”,其中變量的名稱反映了它代表的物理量。例如, x_pos
和 y_pos
用於水平和垂直位置。或者在一個可能與您的情況更相關的示例中,圓周和半徑分別使用 circ_length
和 rad_length
。
在Apps Hungarian中,如果您發現自己寫的是 circ_length + rad_length
,則可能會因為您不應該添加圓周和半徑而懷疑出了問題。即使它們在尺寸上是一致的,在某種意義上也不是兼容。您希望將其重寫為如下形式:
circ_length + circ_from_rad(rad_length)
單位系統在物理上等同於Apps Hungarian。我們使用不同的單位來表示不兼容且不應添加在一起的不同變量。
乍一看,這似乎是一個怪異的觀點。畢竟,從直觀上看,似乎長度和時間在某種程度上是不同的,例如,高度和寬度卻沒有。但是隨後出現了相對論,我們得知長度和時間實際上是 兼容的,您只需要進行正確的轉換即可。
prime_t,prime_x = prime_from_normal(normal_t,normal_x)
或換句話說,
$$ \ begin {pmatrix} ct'\\ x'\ end {pmatrix} = \ begin {pmatrix} \ gamma &-\ beta \ gamma \\-\\ beta \ gamma & \ gamma \ end {pmatrix} \ begin {pmatrix} ct \\ x \ end {pmatrix} $$
然後量子力學出現了,我們了解到能量和頻率也是一回事。
energy = energy_from_freq(frequency)
$$ E = \ hbar \ omega $$
然後出現了量子引力,有人發明了 Planck單位,這沿兔子洞一直到了一切的地步。 >只是一個數字,您可以自由添加質量,電荷和力量。
遠離量子引力。
無論如何,如果通過顯示如何將它們相互轉換來減少不同單位的數量如此容易,那麼您也可以撤消該過程。您會將我們擁有的單位系統視為複雜系統的簡化版本,以區分通常認為相同的數量。例如,高度和寬度。您可以將“高度表”和“寬度表”作為有效的獨立單位。或者,在您的情況下,請使用“周長”和“半徑表”
$$ 1 \ \ mathrm {rad} = \ frac {1 \ \ text {circumference-meter}} {1 \ \ text {radius-meter}} $$
在您的系統中,不是與$ \ frac {1 \ \ text {height-meter}} {1 \ \ text {width-meter}} $相同。您可以通過將所有這些單位轉換為米來使其相同,在這種情況下,您可以恢復公制,但是會丟失單位系統提供的額外上下文信息。
這是一個實際示例:坡度$ m $定義為(水平)長度上的高度,$ \ Delta y / \ Delta x $,這表示坡度的單位為
$$ [m] = \ frac {\ text {height-meter}} {\ text {length-meter}} $$
另一方面,角度$ \ alpha $定義為半徑上的周長,
$$ [\ alpha] = \ frac {\ text {circumference-meter}} {\ text {radius-meter}} $$
這兩者之間的關係是
$$ m = \ tan \ alpha $$
因此,在此擴展單位系統中,您知道切線以$ \ frac {\ text {circumference-meter}} {\ text {radius-meter}} $$為單位,並以$ \ frac {\ text {height-meter}} {\ text {length-meter}} $。
但是,有一個問題。如果您要進行涉及恆星的橫向和後向速度的計算,該怎麼辦? (分別垂直於視線和平行於視線。)在這種情況下,您仍將使用切線函數,但結果可能以$ \ frac {\ text {length-meter}} {\ text {height -meter}} $。嚴格來說,這可能意味著您應該有一個單獨的函數來產生這種輸出。在實踐中,您可以把它做得太深。將所有部件分開分配通常比其價值更大。
因此,您必須在兩個極端之間取得平衡。許多人認為,由單位指定角度來保存上下文信息即 angle (不是其他)是有用的。您可以通過觸發函數有意義地使用該信息:$ \ tan $之類的函數必須採用一個角度或長度的“圓形”比率(周長與半徑之比)作為輸入,並給出“矩形”比率作為輸出長度(從高到寬,反之亦然)。當然,弧度可能是一個“假”單位,但是在某種程度上,它不過是速度或角動量單位的偽造,並且是保持有用的信息。