作者jccko (jccko)
看板C_and_CPP
標題Re: [心得] 學好程式設計的訣竅
時間Tue Oct 19 07:56:35 2010
這樣子吧..
enum rs232Flag{rs232Open=0, rs232Close=1};
...
rs232Flag RS232com1 = rs232Close;
...
if(rs232Open == RS232com1){//常數放左邊是一個好習慣
//...does something
}
這個例子比較簡單,所以看不出加註解的必要。
通常寫程式我個人建議一定要放註解,尤其是每個函式的前面,要描述這個
函式的功能,使用了哪些資料結構與演算法,輸入參數的用途,越詳細越好,
如同寫報告一般。如此就算是上萬行的程式碼,也可以讓第三者輕鬆掌握程
式架構。
※ 引述《goodrain (大橘永澤邱哥)》之銘言:
: 關於大家對註解的歧見,我想跟大家分享一下書中對於註解的建議
: 他是這麼說的:
: 比如說我們常寫到以下程式
: int com = 0 ; //RS232的旗標 0 是關閉 1 是開啟
: if(com = = 1) //RS232通訊開啟
: {
: }
: 如果換寫成這樣呢?
: int RS232com1_flag = 0 ,close = 1 ,Open = 0;
: if(RS232com1_flag = = Open)
: {
: }
: 咦?發生了什麼事....
: 所有註解都不見了吧
: 變數一看就知道是什麼了
: 這種方法好處特別是在程式越來越大的情況之下,旗標設定很容易遠遠的遠離使用的地方
: 且旗標狀態往往可能用到四~五個狀態以上,如果不這樣寫....
: 就會寫出連自己都會看錯的程式,更何況是同事或客戶要來理解了...
: 我自己的親身經歷是
: 我一開始用第一種方法 程式寫了七百行左右就開始吐血了 (功力低弱...)
: 寫到後來想修改或添加新功能,不管如何修改都會有BUG
: 現在發憤整個重寫程式,且順便新增了一堆功能上去
: 目前程式來到了1500行,我還覺得這不是我的極限 XDDD
: 不過最一開始那位提說不看註解的大大
: 其實我覺得他也是對的/....\
: 這是學習的其中一個過程
: 因為總不能要求小朋友做的紙飛機時
: 要求他在上面要可以掛巡弋飛彈吧?
: 大家一起加油吧~
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 165.91.193.130
推 BlazarArc:推 10/19 09:35
推 purpose:常數放左邊,印象中是怕誤打,把==打成=吧,我有記錯嗎? 10/19 09:41
→ loveme00835:p 大沒記錯, 但是我覺得要看個人, 非關習慣好不好, 像 10/19 09:57
推 purpose:謝謝 10/19 09:58
→ loveme00835:是 1 <= x && x <= 10, 寫成類似數學的notation個人覺 10/19 09:58
→ loveme00835:得比較好懂, 硬是把常數都寫左邊, 反而還要想一下 10/19 09:58
→ BlazarArc:常數寫左邊是用在==而已啊,上面的例子也不是== 10/19 21:28
→ loveme00835:難道樓上遇到 == 就要把常數擺左邊, 其他情況就不是嗎 10/19 23:41
→ loveme00835:這樣只是把你的寫作風格弄得亂七八糟, 更容易把看的人 10/19 23:41
→ loveme00835:搞迷糊罷了 10/19 23:41
推 BlazarArc:可以請教一下樓上怎麼避免少了一個 = 的 == 錯誤嗎? 10/20 11:30
推 loveme00835:多使用functor, 或是利用具名函式 equals, 來呈現比較 10/20 12:27
→ loveme00835:的意圖 10/20 12:27
推 BlazarArc:這已經超出小弟的能力範圍,該學的果然很多orz 10/21 15:45
推 loveme00835:不過這會依賴到compiler的最佳化, 不然執行時間還是會 10/21 19:10
→ loveme00835:多一些, 但是我是那種為了可讀性可以犧牲一切的人... 10/21 19:11
推 xatier:推 樓上的觀點 10/21 19:51
推 goodrain:歐歐我學c的...還是第一次學到用enum的 謝啦 10/22 15:55
→ xatier:enum是C的東西沒錯阿 XD 10/22 17:28