※ 本文為 MindOcean 轉寄自 ptt.cc 更新時間: 2022-06-16 22:12:28
看板 Gossiping
作者 標題 [問卦] 程式能寫if 就不要用for loop?
時間 Thu Jun 16 16:12:30 2022
以前寫程式覺得要看起來厲害
明明能用if的
我會先建一個table 然後再用for loop尋找
好處是數量增加時增加的程式碼少
壞處是寫的時候和以後回來看的時候比較麻煩
(有時候還會寫到雙層或三層for loop)
在網路上看一些code 其實也就if寫一寫而已
方便快速 維護容易 不需要想這在幹嘛
即時是自己寫的code 記憶力再好還是會有忘記的一天
程式能寫if 就不要用for loop?
卦
-----
Sent from JPTT on my iPhone
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 42.79.139.36 (臺灣)
※ 文章代碼(AID): #1YgkNoKE (Gossiping)
※ 文章網址: https://www.ptt.cc/bbs/Gossiping/M.1655367154.A.50E.html
噓 : 啥1F 42.76.51.82 台灣 06/16 16:13
推 : else2F 111.249.127.103 台灣 06/16 16:13
→ : 我都直接hello world 做結尾3F 42.73.93.30 台灣 06/16 16:14
printf※ 編輯: cosmite (42.79.139.36 臺灣), 06/16/2022 16:14:23
噓 : 工沙小你寫for裡面不用放if ????4F 203.66.246.4 台灣 06/16 16:14
我的意思是能寫if else的時候就別用for loop. 用for loop的話裡面看你想怎麼寫吧 if switch while推 : 我都用ikea5F 1.200.162.120 台灣 06/16 16:14
推 : 甚麼叫先建一個table6F 140.137.198.18 台灣 06/16 16:14
建一個structure 用for loop掃描structure的index→ : 迴圈跟條件判斷的作用不是不一樣嗎? 你7F 27.52.77.155 台灣 06/16 16:15
→ : 在講啥
→ : 在講啥
推 : 程式能推給別人寫就不要自己寫9F 175.182.9.30 台灣 06/16 16:15
推 : 唉10F 116.241.102.58 台灣 06/16 16:15
→ : 用goto展現技術11F 42.73.9.37 台灣 06/16 16:15
本公司禁止用goto. makefile除外→ : 推konanno112F 116.241.102.58 台灣 06/16 16:15
→ : 程式用嘴巴寫最棒惹,那些細節不重要13F 42.72.75.219 台灣 06/16 16:15
推 : table裡面有一個資訊,當做標籤14F 118.161.105.136 台灣 06/16 16:15
沒錯※ 編輯: cosmite (42.79.139.36 臺灣), 06/16/2022 16:16:03
→ : 程式自己寫和別人寫是不一樣的15F 175.182.9.30 台灣 06/16 16:16
推 : 樓下jserv16F 123.241.95.19 台灣 06/16 16:16
→ : 看你有沒有擴充的需求阿17F 125.227.40.62 台灣 06/16 16:16
※ 編輯: cosmite (42.79.139.36 臺灣), 06/16/2022 16:16:51→ : 不知所云 先用組合語言寫if跟for-loop吧18F 1.34.229.213 台灣 06/16 16:17
→ : 建table又要尋找 那不是建個hashtable就好19F 150.117.152.4 台灣 06/16 16:17
推 : 蛤?桌子怎麼了嗎?20F 223.140.195.157 台灣 06/16 16:17
推 : 你是指 foreach 然後再 find 吧?21F 42.72.246.221 台灣 06/16 16:17
→ : loop 和 if 並不衝突。
→ : loop 和 if 並不衝突。
噓 : 哪間公司的 我要避開23F 118.163.84.203 台灣 06/16 16:17
→ : 啊你掃index取出來就不用比內容了嗎?24F 27.52.77.155 台灣 06/16 16:17
※ 編輯: cosmite (42.79.139.36 臺灣), 06/16/2022 16:17:45→ : 同意樓上25F 118.163.98.66 台灣 06/16 16:17
推 : 是不會用GOTO和指標嗎!26F 61.220.121.213 台灣 06/16 16:18
goto禁用. 指標曾用到三個***※ 編輯: cosmite (42.79.139.36 臺灣), 06/16/2022 16:18:36
→ : 禁止用GOTO是壓抑員工威能 你還聽?27F 61.220.121.213 台灣 06/16 16:19
推 : if和for loop到底是有關係啊28F 1.170.224.62 台灣 06/16 16:19
→ : 這兩個根本沒辦法替換吧
可以喔 像是以下這段 一樣的功能→ : 這兩個根本沒辦法替換吧
IF寫法:
if (a == 10) return;
if (a == 20) return;
---------------------------------------
FOR LOOP寫法:
u8 index;
u8 array[] = {
10,
20
};
for (index = 0; index < sizeof (array) / sizeof (array[0]); index++) {
if (a == array[index]) {
return;
}
}
→ : 我懂了你是說把資料直接判斷跟放容器再30F 203.66.246.4 台灣 06/16 16:20
推 : break if you == 'win'31F 42.72.246.221 台灣 06/16 16:20
→ : 看時空背景好嗎32F 36.225.208.160 台灣 06/16 16:20
推 : 說真的一定要註解就是了33F 118.161.105.136 台灣 06/16 16:20
→ : break if winners.include?(you)34F 42.72.246.221 台灣 06/16 16:20
→ : 推文裡看起來跟他同一個頻道的能不能幫35F 27.52.77.155 台灣 06/16 16:20
→ : loop判斷是嘛 = =36F 203.66.246.4 台灣 06/16 16:20
是的→ : 忙解釋一下是什麼情境,我不太理解37F 27.52.77.155 台灣 06/16 16:20
→ : 你這寫法很有彈性可以寫成FSM38F 223.137.216.24 台灣 06/16 16:20
→ : 一個是邏輯判斷,一個重複操作欸39F 1.170.224.62 台灣 06/16 16:21
→ : if跟loop都一樣是compare jump40F 101.3.119.30 台灣 06/16 16:21
推 : 這樣code 難看死了,嘔嘔嘔嘔41F 42.76.124.122 台灣 06/16 16:21
推 : 我都dear開頭42F 223.136.25.112 台灣 06/16 16:22
→ : 怎麼想都if 判斷就可以處理就好,巢狀43F 42.76.124.122 台灣 06/16 16:22
→ : 所以這是老語言的問題?44F 27.52.77.155 台灣 06/16 16:22
→ : 好不好看不重要,重要的是要讓人看得懂45F 118.161.105.136 台灣 06/16 16:22
→ : 太多層很難看46F 42.76.124.122 台灣 06/16 16:22
推 : 啊你進去找還不是o(n) = =47F 49.216.89.191 台灣 06/16 16:22
→ : 你說compare jump我大概有點懂了,但沒48F 27.52.77.155 台灣 06/16 16:23
→ : 實際寫過這種老語言
→ : 實際寫過這種老語言
→ : 反正有問題就用GOTO解決就好50F 125.229.105.144 台灣 06/16 16:25
推 : 看不懂想表示什麼51F 111.82.227.8 台灣 06/16 16:25
噓 : 你在公三小52F 223.136.173.242 台灣 06/16 16:25
→ : 寫成波動拳好了53F 211.21.37.96 台灣 06/16 16:26
→ : 要看狀況阿 不然陣列if到死54F 210.63.221.149 台灣 06/16 16:27
推 : 文組表示 嗯嗯嗯 對啊!55F 223.141.53.119 台灣 06/16 16:28
噓 : 沒天分看不懂,還是辭職去跑外送吧56F 218.166.122.15 台灣 06/16 16:29
推 : 你可以示範一下嗎57F 114.137.177.16 台灣 06/16 16:29
我上面回文了 你看看→ : 我都用switch case58F 49.216.161.28 台灣 06/16 16:29
→ : 你這意思跟你原文講的有點落差 = =59F 27.52.77.155 台灣 06/16 16:31
推 : Life is short use python60F 110.26.131.210 台灣 06/16 16:31
→ : 你這個就寫法彈性的問題不是嗎?61F 27.52.77.155 台灣 06/16 16:32
是的 但時常碰到不太需要擴充的情境 所以覺得多此一舉了 ?推 : 看情況啊,如果不會變當然直接if or swi62F 27.247.193.87 台灣 06/16 16:33
→ : tch,會新增就放array比對啊,但還要考
→ : 慮其他啦
→ : tch,會新增就放array比對啊,但還要考
→ : 慮其他啦
推 : 用case不好嗎?65F 106.64.120.215 台灣 06/16 16:33
推 : 我會避免 雙層、三層for 因為真的看不懂66F 220.134.21.189 台灣 06/16 16:33
推 : 通通外包 出事卸責 沒事攬功 誰還自己67F 60.244.116.139 台灣 06/16 16:33
兩層 三層for真的耗腦力的→ : 寫68F 60.244.116.139 台灣 06/16 16:33
噓 : 存取array都不用時間和空間?69F 223.136.205.18 台灣 06/16 16:34
推 : 樓下一百階聖誕樹 printf(); 一百次。70F 42.72.246.221 台灣 06/16 16:34
噓 : switch case71F 114.44.18.144 台灣 06/16 16:34
switch case讓整個function落落長 沒有很愛用→ : 如果你的array[]是要接收別人傳入的72F 203.66.246.4 台灣 06/16 16:36
→ : 那一定不能用1寫啊 但是2可以通用
→ : 那一定不能用1寫啊 但是2可以通用
噓 : 當你都講不出共鳴...程式一定寫不好74F 123.51.223.187 台灣 06/16 16:36
→ : 自以為利害而以
→ : 自以為利害而以
→ : 到最後就是hard code與否的問題76F 203.66.246.4 台灣 06/16 16:37
噓 : 我文組想學程式但聽不懂啦77F 114.136.243.15 台灣 06/16 16:37
推 : 多層迴圈要善用空格。78F 61.56.143.39 台灣 06/16 16:39
都會用空格 但還是比較花時間看→ : 我朋友都外包,大家都說他是天才 給你參79F 101.12.34.114 台灣 06/16 16:40
→ : 考
→ : 考
推 : 不得不說建table有時候是蠻好用的81F 210.202.218.253 台灣 06/16 16:41
有時候真的好用沒錯→ : 但這有什麼卦好問?82F 223.137.161.126 台灣 06/16 16:42
就懶的耗腦力了 覺得程式能動就好了 ?噓 : 我都用PERFORM 供參83F 101.136.181.9 台灣 06/16 16:43
推 : 兩層指標都很少見了三層是什麼鬼 直接算84F 42.79.158.233 台灣 06/16 16:44
噓 : 我寫verilog根本不用For loop的85F 1.200.14.102 台灣 06/16 16:44
→ : 位址還比較快…86F 42.79.158.233 台灣 06/16 16:44
→ : verilog不用for也太痛苦87F 223.136.205.18 台灣 06/16 16:45
噓 : goto無敵88F 61.218.132.193 台灣 06/16 16:46
→ : 可讀性差,多寫的那些代碼看不出有維護或89F 39.144.152.230 中國 06/16 16:47
→ : 擴充上的好處
你是指for loop嗎→ : 擴充上的好處
推 : if ll ll ll ll \ ll ll 精美謝謝91F 1.34.231.24 台灣 06/16 16:48
※ 編輯: cosmite (60.250.30.118 臺灣), 06/16/2022 16:49:39推 : 高階語言用iterator,但台灣普遍低端92F 116.86.131.33 新加坡 06/16 16:49
→ : 人多
→ : 人多
→ : switch case嫌太長 然後用if???94F 223.136.228.240 台灣 06/16 16:52
→ : 會套到三層迴圈我感覺應該是什麼遠古程95F 27.52.77.155 台灣 06/16 16:53
→ : 式的調整了
→ : 硬是要把幾個互相不能配合的資料尬在一
→ : 起
→ : 式的調整了
→ : 硬是要把幾個互相不能配合的資料尬在一
→ : 起
推 : 我都用do{ if(conditions) break; }while99F 1.171.17.150 台灣 06/16 16:54
→ : (0)
→ : (0)
推 : 看情境啦 case 只有兩個當然if 就解決了101F 123.204.141.244 台灣 06/16 17:01
推 : 只有兩個條件當然是寫if就好,20個條件建t102F 27.240.240.203 台灣 06/16 17:05
→ : able就樂勝了
→ : able就樂勝了
推 : 除非太慢 不然可讀性要擺第一104F 59.125.218.4 台灣 06/16 17:05
推 : 樓下jserv告訴你linux裡也有goto105F 220.137.0.76 台灣 06/16 17:07
噓 : 我都用pandas106F 106.64.105.132 台灣 06/16 17:08
→ : C++的話能不用for loop!?107F 123.193.95.71 台灣 06/16 17:08
推 : 用printf就夠了。108F 42.77.38.67 台灣 06/16 17:15
推 : 如果用if能解決,你用for loop的效109F 36.225.102.220 台灣 06/16 17:16
→ : 能有比較好嗎? 還是你單純擴充性問
→ : 題? 好奇問問
→ : 能有比較好嗎? 還是你單純擴充性問
→ : 題? 好奇問問
→ : loop 裡面還不是 if112F 60.251.182.68 台灣 06/16 17:18
→ : 禁goto,那表示你公司不是寫底層的113F 27.246.128.150 台灣 06/16 17:23
推 : 你用vector包,然後用find找, 找完if確114F 1.170.224.62 台灣 06/16 17:23
→ : 認結果,就不用變成一大團,又能有擴充
→ : 認結果,就不用變成一大團,又能有擴充
推 : 厲害的是有效率的code 能O(n)就別用O(n^2)116F 114.136.101.3 台灣 06/16 17:29
→ : 能O(log n)就別用O(n)
→ : 能O(log n)就別用O(n)
推 : 反串嗎?118F 39.9.71.22 台灣 06/16 17:36
推 : 你是對的,建議開始看 FP119F 202.39.60.190 台灣 06/16 17:38
→ : 能寫成還是呼叫,就不要超過兩層。120F 112.97.54.31 中國 06/16 17:44
→ : 函式
→ : Teamwork盡量不要炫個人技巧
→ : 函式
→ : Teamwork盡量不要炫個人技巧
噓 : ???123F 203.69.59.9 台灣 06/16 17:50
推 : 你的例子比較適合用case switch吧..125F 60.250.31.103 台灣 06/16 18:17
推 : 雖然腦包,但有創意126F 203.10.99.182 日本 06/16 18:17
推 : 你的程式都不寫註解嗎127F 42.77.170.231 台灣 06/16 18:21
→ : 不要用 go to ,笑死。128F 112.104.113.61 台灣 06/16 18:22
噓 : 我都用策略模式129F 42.72.212.22 台灣 06/16 18:29
推 : 那個for loop 多建了一個陣列占用記憶體130F 220.136.41.145 台灣 06/16 18:37
推 : 直接if 直到超過8個再來包131F 223.136.83.23 台灣 06/16 18:40
推 : 寫case好看懂 又整齊,table一大坨132F 223.141.212.155 台灣 06/16 18:57
→ : 我都用hash table133F 114.137.210.16 台灣 06/16 19:00
推 : loop的時間複雜度比if多hen多134F 42.72.184.255 台灣 06/16 19:18
推 : 我也覺得用iterator就好= =135F 1.200.162.81 台灣 06/16 19:20
→ : compiler優化比你寫那些沒人看懂的鬼code快136F 1.161.76.40 台灣 06/16 19:30
推 : 如果是一些懶惰的語言有contain語法可以137F 101.12.58.246 台灣 06/16 19:34
→ : 省forloop
→ : 省forloop
推 : 效率問題 for loop去查一下怎麼運作的139F 223.139.1.12 台灣 06/16 19:48
→ : 你就知道了
→ : 你就知道了
推 : 幹嘛不用hash 沒救惹141F 123.240.168.131 台灣 06/16 20:10
推 : 不用迴圈就可以解決問題是最好142F 1.200.11.14 台灣 06/16 20:19
推 : 有些可以用hashmap跟collect來代替
→ : 迴圈,但是就要寫註解不然很難維護
推 : 有些可以用hashmap跟collect來代替
→ : 迴圈,但是就要寫註解不然很難維護
推 : 一開始寫範例不就好了 還在想說你是145F 42.76.132.90 台灣 06/16 20:22
→ : 在公三人 我是都用你說Array的方式
→ : 現在用linq 可以寫的很好懂
→ : 而且用linq 也沒有你說兩層三層問題
→ : 可以很方便看的ㄧ行一行的
→ : 在公三人 我是都用你說Array的方式
→ : 現在用linq 可以寫的很好懂
→ : 而且用linq 也沒有你說兩層三層問題
→ : 可以很方便看的ㄧ行一行的
推 :150F 114.43.99.244 台灣 06/16 20:32
噓 : 小學生問題 自己判斷好嗎151F 114.253.35.172 中國 06/16 20:34
噓 : 是在胡說些什麼152F 223.139.152.175 台灣 06/16 20:37
→ : 人才...153F 39.8.201.10 台灣 06/16 20:38
推 : 有看過6層for loop嗎 真的很棒154F 42.73.13.182 台灣 06/16 21:16
→ : 那個寫code 邏輯真的爛
→ : 那個寫code 邏輯真的爛
推 : 6層迴圈...好想看156F 122.116.39.42 台灣 06/16 21:19
--
※ 看板: Gossiping 文章推薦值: 0 目前人氣: 0 累積人氣: 114
作者 cosmite 的最新發文:
- 28F 15推 4噓
- 11F 8推
- 節錄自NBC與日媒NHK 卦點: NBC: Donald Trump has won the Georgia contest, NBC News projects, and secured the …307F 198推 5噓
- 標的:VTI.US 分類:討論 分析/正文: 10/7觀察到美股ETF VTI交易大量 昨天美國似乎沒有重大經濟數據發表 倒是FOMC成員說了什麼足以影響市場的談話嗎 此交易情緒是否可以視為怕上漲買 …46F 24推 4噓
- 19F 12推 1噓
點此顯示更多發文記錄
回列表(←)
分享