[閒聊] 怎麼樣判定寫的醜不醜?

看板C_and_CPP作者 (我愛阿蓉)時間16年前 (2010/01/25 23:17), 編輯推噓11(11029)
留言40則, 12人參與, 最新討論串1/1
最近接到一份code 剛接觸到這種別人寫的大程式 我整個不知道該怎麼辦 要我找出bug 感覺極為困難 雖說用VC 因為之前的code都是release mode去寫 也沒辦法下斷點 去看他行為 只能印出一些數值去看它是不是有跑進去之類的... 我感受到 他們的code都好複雜 好多層 而且其實這份code是處理 http的一些行為 但是我本身完全沒有網路這方面知識 真的看過去有看也沒有懂.... 以前寫code 聽同學常常會嘴砲說 他拿別人的lib或是一些寫好的code來用 有時都會批評說 我覺得它設計的很爛耶 很難用 寫很爛之類的 其實我都馬很佩服 那些能夠寫成lib給別人用的code 一定都很完整 而且至少架構都有條理.... 以上就是一些感想 想聽聽大家意見 1. 怎麼樣可以大致判定別人寫的code好不好 值不值得學習 還是說看到什麼就可以知道這份code很爛... 2. 在完全沒有某方面知識背景下 該怎麼去針對程式bug 去找出問題的癥結... 因為碰到的code其實把東西包的很上層 底層可能也碰不太到也看不到原碼.... 3. 常常會想要完全的去run過對方的程式邏輯 但會卡在一些無關緊要的地方 浪費很多時間 我是不是該先選擇了解對方大觀念 在去針對某個function下手trace 而不是從main一行一行去F11跑進去看看它到底做了啥..... 請大家給點經驗@@ 謝謝 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 123.192.73.81

01/25 23:19, , 1F
(2)和(1)衝突。有(2)就保證(1)無法達成。
01/25 23:19, 1F

01/25 23:27, , 2F
對 lib 在做什麼完全沒概念, 怎麼可能抓 bug
01/25 23:27, 2F

01/25 23:28, , 3F
比如有人告訴你 int main(void) { foo(); return 0;} 錯了
01/25 23:28, 3F

01/25 23:28, , 4F
哪知道是錯個什麼鬼 XD
01/25 23:28, 4F

01/25 23:29, , 5F
lib 總有文件有介紹, 先知道 1. 整個程式在做什麼, 背景知識
01/25 23:29, 5F

01/25 23:29, , 6F
2. 各個 lib 的 function 是怎麼達成這些功能
01/25 23:29, 6F

01/25 23:30, , 7F
3. 才能夠對照出跟真實跑出來不一樣的區塊
01/25 23:30, 7F

01/25 23:30, , 8F
最後才是看細節是不是哪裡和預期的不一樣
01/25 23:30, 8F

01/25 23:32, , 9F
另外, 善用 debuger ... 除非你真的只有 printf 可以用
01/25 23:32, 9F

01/26 00:16, , 10F
因為之前的code都是用release mode在寫 也沒辦法下斷點
01/26 00:16, 10F

01/26 00:17, , 11F
你知道你在講啥嗎?@@ 如果不是表達不好就是觀念有問題
01/26 00:17, 11F

01/26 00:17, , 12F
你有code怎麼可能不能下斷點....mode又不是選了就固定了
01/26 00:17, 12F

01/26 00:31, , 13F
我想他說的應該是因為沒有 debug info, 所以到了斷點也只有
01/26 00:31, 13F

01/26 00:32, , 14F
assembly 可以看... XD
01/26 00:32, 14F

01/26 00:43, , 15F
只能印出一些數值看他是否有跑進去?? @@ 那這句是?
01/26 00:43, 15F

01/26 00:44, , 16F
別跟我說它放了一個callback印東西 orz......
01/26 00:44, 16F

01/26 00:44, , 17F
不然的話,除非對方好心提供lib說明文件~
01/26 00:44, 17F

01/26 00:45, , 18F
否則只有吃自己的份了~
01/26 00:45, 18F

01/26 00:50, , 19F
明明就說code好多層了 ... ? 是真的沒code?
01/26 00:50, 19F

01/26 01:05, , 20F
請教一下release設中斷點看到的值都是不正確的耶
01/26 01:05, 20F

01/26 01:05, , 21F
release中斷的目的只是看程式的行為嗎@@?
01/26 01:05, 21F

01/26 01:10, , 22F
有好的理由在有code情況下選release又要debug嗎?
01/26 01:10, 22F

01/26 01:17, , 23F
簡單說, 反正你有code, 幹麻不build debug版再trace~_~
01/26 01:17, 23F

01/26 08:00, , 24F
醜不醜…還是得抓出bug~~ 不過codes一旦不是原作者維護
01/26 08:00, 24F

01/26 08:01, , 25F
那就一定會有維護者因為不夠清楚裡面的設計而產生別的bug
01/26 08:01, 25F

01/26 08:04, , 26F
之前維護過別人的,有的地方我就完全不敢動…只能狂問人…
01/26 08:04, 26F

01/26 12:22, , 27F
你同學使用別人的lib覺得很爛,有2種情況
01/26 12:22, 27F

01/26 12:23, , 28F
一種是lib寫的真的很爛,一種是你同學程度不夠
01/26 12:23, 28F

01/26 12:23, , 29F
但通常是後者的可能性遠高於前者
01/26 12:23, 29F

01/26 12:56, , 30F
release 取消最佳化應該就可以看到正確的值
01/26 12:56, 30F

01/26 14:18, , 31F
好問題 有程式碼為啥不再編debug版
01/26 14:18, 31F

01/26 19:08, , 32F
應該只是他不會選吧...專案設定那邊就可以選了
01/26 19:08, 32F

01/26 19:09, , 33F
而且快速選的功能在toolbar上也有呀...
01/26 19:09, 33F

01/26 19:09, , 34F
再不行就自己產生一個debug設定嘛~ @@ ...
01/26 19:09, 34F

01/27 00:49, , 35F
喔可是是不是有些情況debug版本的code會有奇怪的問題產生?
01/27 00:49, 35F

01/27 00:50, , 36F
而且相的lib dll都也要是debug版本的不是嘛@@
01/27 00:50, 36F

01/27 00:50, , 37F
一個正確的程式不該有release正常debug有問題的情況發生
01/27 00:50, 37F

01/27 00:51, , 38F
你就有source code了, 重build binary有什麼困難嗎??
01/27 00:51, 38F

01/27 00:59, , 39F
有些lib dll我沒有原碼阿@@ 還是沒差?
01/27 00:59, 39F

01/27 14:52, , 40F
差別就只是 trace 進那些 lib 會只看得到 asm code 而已
01/27 14:52, 40F
文章代碼(AID): #1BNRO0pA (C_and_CPP)