Re: 常見的 C++ 錯誤觀點
※ 引述《yoco315 (眠月)》之銘言:
: 我也跳下來玩,不過我 C++ 很弱,請打小力一點 <(_ _)>
[43]
: 2. C++程式不易讀
: 這是十年前 Java 用來打 C++ 的論點,
: Java 當初真的喊很大聲,讓我們複習一下 Java 當初講了什麼:
: 我們不支援 operator overloading,因為你不能保證使用者不會亂用,
: 誰知道他幫 Integer 實作的 operator + 裡面是不是減法呢?
: 是不是很好笑?講得好像 Java 的 compiler 會檢查出下面這種東西然後OB擋掉一樣
: class Integer {
: int value = 0 ;
: Integer add ( rhs ) {
: Integer result = new Integer(this) ;
: result.value -= rhs.value ;
: }
: }
: 不好意思,不會擋掉,編譯器會很開心把他編出來。
: 看到沒有?只要舉的例子夠奇怪,你什麼都能證明,開玩笑的,
: 是不管你用什麼語言,你都沒辦法阻止腦殘的程式設計師幹出蠢事,
: 而且 d = ( a + b ) * ( c + d ) 就是比 d = a.add(b).mul(c.add(d)) 好讀,
: 這點不是我自己在講的,有個極端反對 operator overloading 的語言也贊成我,
: 怎麼說?因為 Java 下一版也要內建 BigNumber 的 operator overloading 了 ~_~"
: 連抱持這個觀點到極限的 Java 都棄守了,C# 也早就不鳥 Java 那套說詞了。
: 所以不要再自己用手打一堆自己平常寫程式都不可能寫出的爛 code 來當作例子,
: 舉那些例子唯一能證明的就是舉例的人自己會寫出這麼爛的 code,不是別人。
: 讓我這樣說吧:你的 C++ 可能不好讀,別人的可不是。
[43]
為這裡作一點補充.
Java 並不是不支援 operator overloading, 而是
不能自訂 operator overloading.
Java 由 JDK 1.0 開始就有 operator overloading
的使用了, 就是 String 的 + 和 +=
所以單是加上內置的 Big Number operator overloading
其實和以前的立場沒有分別.
雖然我覺得 Java 為了怕人家亂用而把自訂 operator
overloading 捨棄是矯枉過正 (如你的例子一樣, 根本
沒有幫到什麼忙), 但的確從經驗所見, 有不少人利用了
operator overload 做到了很 magical (某程度上也很
方便) 的 code, 而這類的 code 看起來的確不直覺.
(我自己是希望Java 可以有自訂 operator overloading 啦.. :P )
alien
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 202.155.236.82
→
03/09 16:45, , 1F
03/09 16:45, 1F
→
03/09 16:46, , 2F
03/09 16:46, 2F
討論串 (同標題文章)
C_and_CPP 近期熱門文章
PTT數位生活區 即時熱門文章