Re: [問題] 一段程式的解釋

看板C_and_CPP作者 (最愛朴素妍)時間15年前 (2010/11/04 13:22), 編輯推噓2(205)
留言7則, 6人參與, 最新討論串2/2 (看更多)
通常我的視線不會停留在這樣的程式碼超過10秒, 不過最近 領薪水心情好就回一下好了. 這個程式非常的老舊, 而且邪 惡至極 ※ 引述《bcawosxy (??????)》之銘言: : 手邊有一小段程式如下! : 我想請問行式1,2,3及8的中文意思 : 不知道要如何解釋比較通順!! 沒有一個適當名稱說明這個函式能為我們達成 怎樣的工作 ˇ : 1/ short aaa(short*y,int ncount); ^ 因為陣列名稱用 by value傳遞給 函式時, 一定都是decay成指標, 所以這樣寫很好, 用 short y[] 反而會讓人想用 sizeof 運算子 : 2/ #define count 3 ^ 巨集沒有用大寫 + 底線, 容易偽裝成變數 : 3/ short x[count] = {10,26,40}; : 4/ short a = 5; ^ 名稱只有 a 一個英文字母, 根本不知道要用 它來幹嘛 : 5/ main() ^ 回傳 int : 6/ { : 7/ short result=0; ^ 唯一命名比較好的變數 : 8/ result=aaa(x,count); : 9/ result=result*a; return 0; : 10/ } : short aaa(short *y ,int ncount) : { : short acc=1;int i; ^ ice cream ? : for (i=0;i<ncount;i++) : acc=y[i]*acc; : return(acc); : } 從算出來的值來看 result = 10 * 26 * 40 * 5 = 52000 在一個 sizeof( short ) == 2 的平台下, 正數最大只能存 到 32767, 也沒有作好防止溢位的措施, 我把他修改了一下 變成下面這樣 : http://codepad.org/FrITeJWo 用巨集常數來切換不同 typedefs 來讓 result 有不同的空 間大小, 把函式名稱改成 continuedProduct(連乘積),這 樣直接拿去 google 不用看程式碼都知道他在做啥. 寫程式的人如果沒有花點時間去查一下字典, 思考適當的變 數命名, 雖然方便了自己, 在把程式碼移交給下一個人後, 維護上花費的時間將會多得可怕! 不要說你看不懂這支程式, 因為我也看不懂 XD 這種程式碼 看過就可以刪了, 不要把它背下來浪費你的腦容量 -- ◢████ ◢█ ◢██◣ ◢█ ◢███ ◢█ T-ara版怎麼去 ████◢█████s ~> T-ara ███ █ ◢█歡迎您的光臨 ███████████恩靜智妍孝敏 ███ ██ 素妍居麗寶藍 ████◥██◤ █████ψmakigoto123 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.121.197.115 ※ 編輯: loveme00835 來自: 140.121.197.115 (11/04 13:34)

11/04 13:41, , 1F
像.Net或Java這類變相開源碼,不混亂變數不行啊
11/04 13:41, 1F

11/04 14:02, , 2F
找自己麻煩嗎 ? XD
11/04 14:02, 2F

11/04 14:41, , 3F
這問題..似乎開始網路上瘋狂在po了..
11/04 14:41, 3F

11/04 17:53, , 4F
謝謝囉 已經找到答案了^^
11/04 17:53, 4F

11/04 18:52, , 5F
http://tinyurl.com/2dfdw28 模糊化(混亂)的工作用工具做
11/04 18:52, 5F

11/04 18:53, , 6F
就能勝任,通常不用自己改原始碼吧
11/04 18:53, 6F

11/05 01:34, , 7F
ice cream XDDDDDD
11/05 01:34, 7F
文章代碼(AID): #1CqaC80n (C_and_CPP)
討論串 (同標題文章)
文章代碼(AID): #1CqaC80n (C_and_CPP)