#define N 3
嗚啊啊啊啊~~我快瘋了!怎麼會有人聰明到,在 .h 檔裡面,寫出這樣子的程式呢:
#define N 3 // number of states of a xxx model
為什麼我會突然有股衝動,很想要像網路上流傳的某段影片,拿起鍵盤狠狠地把電腦砸個西巴爛呢?讚,據說我還要一年半才畢業。讚,據說畢業之後,也還是得考慮五斗米的問題。
嗚啊啊啊啊~~我快瘋了!怎麼會有人聰明到,在 .h 檔裡面,寫出這樣子的程式呢:
#define N 3 // number of states of a xxx model
為什麼我會突然有股衝動,很想要像網路上流傳的某段影片,拿起鍵盤狠狠地把電腦砸個西巴爛呢?讚,據說我還要一年半才畢業。讚,據說畢業之後,也還是得考慮五斗米的問題。
17 Comments
或許你該寫些 #define NN 9 // square of number of the state of a xxx model.
:p
這問題就跟 MySQL 的
<mysql.h>一樣,裡面會有個:害得我必須要特別為 MySQL 做一個轉接的 class,以便把
#include <mysql.h>鎖在一個獨立的 compilation unit 裡。看來他們都沒有看 Effective C++...
其實,真正掌握 domain knowledge 的話,就算只有看過《The C Programming Language》也是足夠的。
喔,我是在說真的,不是在開玩笑。就算我兩年寫出來的 code,行數差不多,sloccount 算出來的分數,比公司前輩花五年寫出來的,差不多行數的程式還要高十倍,但我的程式的價值,還是比不上前輩的程式。
所以,我的價值在哪裡呢?
唔,我剛好也碰上類似的問題。
昨天和同事在聊天討論,基於敝單位的需求,趕快寫出會動的東西比較重要,於是有時候他們會覺得我想太多了……
Domain knowledge 決定了那東西會不會動;
C/C++ 的 knowledge 則暗示了交接傳承或分工合作的某種難易度?
在這個情況下,「只有我會寫」的程式好像最有價值。
orz
小弟愚昧,請教一下這樣寫的缺點是什麼?
別人無法使用 N 當變數名稱?
Dear ebs,
是啊,不能用
N,可是會很痛苦的。因為這樣一來,你就不能#include <windows.h>,在<windows.h>裡面有個 structure 有個欄位,就叫做N。:-p看到這個馬上把它用 editor replace
#define MODEL_NUM 3
所有 N 全部換成 MODEL_NUM
想了一下用這樣比較好
enum
{
N = 3
};
之後可以用 local 定義來宣告新的變數
int N=8; // 以下的scope 就會是 整數變數了.
總而言之 #define 的破壞力太大了...
Jefferl,
用 editor 做 replace,就跟
#define的代換一樣,是字串的代換,如果 replace 的方式不好的話,還會更糟。試問,把N換成MODEL_NUM,會不會不小心把GetFooNum()變成GetFooMODEL_NUMum()了呢?更甚者,
#define N 3是某個 library 的 header,今天我們改了現在看到的有限幾個 libraries/executables 的 source,誰知道還有沒有其他 libraries/executables 也 depend 到N所在的這個 library?jeff,
原來你還是學生啊... 看你寫的東西一直以為你是已經工作數年的老弟, 原來只是個小弟啊, 呵呵~~
b6s,
不知道你有沒有看過 Exceptional C++, 個人喜愛勝過 Effective 系列. 推薦!
突然發現有你照片的連結. 看來你應該跟我差不多年紀.
剛吃了你豆腐, sorry...
fr3@k:
有 :)
Exceptional C++ 確實很實用。前陣子剛好用裡面提到 end() 實作差異的例子,試圖在 bbs 上唬爛說為什麼 VC6 有時候如果不用 string::npos 而用 string::end 會出現靈異現象。
fr3@K,
我現在「三年級」,就快可以「畢業」了。:-p
又,為什麼一開始會說我還是學生呢?
b6s,
我的經驗是,用
std::string最好還是用 (position, length) 的方法撰寫演算法,而不要用 (begin,end),各種詭異的東西太多啦。另外,VC6 裡的
std::string也沒有clear()跟at()可用,很討厭。前者可以用s = ""來取代但是如果不曉得s是用char還是wchar_t的話,就比較麻煩了。,後者則可以在前面放個 assertion 事先檢查 boundary,但這樣程式會非常醜。jeffhung:
I cannot agree with you more. XD
因為我看到你說還有一年半畢業, 看來你說的畢業不會是學業上的畢業. 那到底是?
fr3@K,
這算是目前蠻常見的笑點,國防役一般要服役四年才能畢業。我還要再一年半,所以是國防役服了兩年半。不過,我大五延畢了一年出去工作,part-time 算 1/2 好了,所以算來目前的工作經歷是三年。
Post a Comment