2011-10-07 28 views
1

我目前的項目代碼庫已經精煉了每個單元及其朋友。過度使用重新定義原始數據類型?

提取物: -

... 
typedef int m; // meter 
typedef int htz; 
typedef int s; // second 
... 

好還是壞?
我討厭它!它是一種痛苦,沒有任何好處,全球定義的「m」,omg!

但我想說出爲什麼我討厭它的原因,多一點技術/口齒伶俐的莊園......你好!

人們可以列出此模式的For/Against參數嗎?非常感謝。

+1

哇。編寫代碼的人真的走出了自己的路,讓所有變量名稱聽起來「自然」。 –

+1

這絕對令人震驚。應該是'Hz'。 –

回答

4

更好地使它們成爲自定義類型,因爲那樣您就可以控制轉換和重載操作符。現在,我可以做一些毫無意義的事情,比如把赫茲乘以一米。理想情況下,m/s會產生一個速度 - 但它不會。這只是typedef他們沒有意義。

+8

boost.units救援! – PlasmaHH

+1

是的,讓他們類,或@PlasmaHH狀態,使用Boost。 –

+0

「我可以做一些毫無意義的事情,比如把儀表乘以赫茲」 - 一個糟糕的例子,通過將波長(以m爲單位)和頻率(以赫茲爲單位)乘以波長(以m/s爲單位) ')。 –

2

大概他們試圖證明意圖,但沒有類型安全性,就沒有強制執行它。這只是混亂,增加了代碼推理的入口障礙。

即使他們嘗試創建類型安全性,試圖在低級別抽象數據只會增加複雜性。它不會使解決問題變得更容易。無論如何,變量名稱足以描述內容。

+0

「變量名無論如何描述內容足夠好」...... wweelll,應該做的! –

+0

@IanVaughan顯然,我對我的悲觀主義持樂觀態度。 –