PTT推薦

[問卦] 程式能寫if 就不要用for loop?

看板Gossiping標題[問卦] 程式能寫if 就不要用for loop?作者
cosmite
(焼き団子)
時間推噓40 推:60 噓:20 →:87

以前寫程式覺得要看起來厲害

明明能用if的

我會先建一個table 然後再用for loop尋找

好處是數量增加時增加的程式碼少

壞處是寫的時候和以後回來看的時候比較麻煩
(有時候還會寫到雙層或三層for loop)


在網路上看一些code 其實也就if寫一寫而已

方便快速 維護容易 不需要想這在幹嘛


即時是自己寫的code 記憶力再好還是會有忘記的一天

程式能寫if 就不要用for loop?



-----
Sent from JPTT on my iPhone

--

※ PTT留言評論
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 42.79.139.36 (臺灣)
PTT 網址

aynmeow5566 06/16 16:13

kent 06/16 16:13else

link4517 06/16 16:14我都直接hello world 做結尾

printf

※ 編輯: cosmite (42.79.139.36 臺灣), 06/16/2022 16:14:23

wonder007 06/16 16:14工沙小你寫for裡面不用放if ????

我的意思是能寫if else的時候就別用for loop. 用for loop的話裡面看你想怎麼寫吧 if switch while

Doub1eK 06/16 16:14我都用ikea

pm2001 06/16 16:14甚麼叫先建一個table

建一個structure 用for loop掃描structure的index

skyofme 06/16 16:15迴圈跟條件判斷的作用不是不一樣嗎? 你

skyofme 06/16 16:15在講啥

konanno1 06/16 16:15程式能推給別人寫就不要自己寫

LoveMoon 06/16 16:15

lay10521 06/16 16:15用goto展現技術

本公司禁止用goto. makefile除外

LoveMoon 06/16 16:15推konanno1

olozil 06/16 16:15程式用嘴巴寫最棒惹,那些細節不重要

Fancose 06/16 16:15table裡面有一個資訊,當做標籤

沒錯

※ 編輯: cosmite (42.79.139.36 臺灣), 06/16/2022 16:16:03

konanno1 06/16 16:16程式自己寫和別人寫是不一樣的

legendd 06/16 16:16樓下jserv

vowpool 06/16 16:16看你有沒有擴充的需求阿

※ 編輯: cosmite (42.79.139.36 臺灣), 06/16/2022 16:16:51

cdmlin 06/16 16:17不知所云 先用組合語言寫if跟for-loop吧

SABA0 06/16 16:17建table又要尋找 那不是建個hashtable就好

tom77588 06/16 16:17蛤?桌子怎麼了嗎?

zero00072 06/16 16:17你是指 foreach 然後再 find 吧?

zero00072 06/16 16:17loop 和 if 並不衝突。

Nonegrame 06/16 16:17哪間公司的 我要避開

skyofme 06/16 16:17啊你掃index取出來就不用比內容了嗎?

※ 編輯: cosmite (42.79.139.36 臺灣), 06/16/2022 16:17:45

leolarrel 06/16 16:17同意樓上

sephen 06/16 16:18是不會用GOTO和指標嗎!

goto禁用. 指標曾用到三個***

※ 編輯: cosmite (42.79.139.36 臺灣), 06/16/2022 16:18:36

sephen 06/16 16:19禁止用GOTO是壓抑員工威能 你還聽?

maplefff 06/16 16:19if和for loop到底是有關係啊

maplefff 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; } }

wonder007 06/16 16:20我懂了你是說把資料直接判斷跟放容器再

zero00072 06/16 16:20break if you == 'win'

EvilJustice 06/16 16:20看時空背景好嗎

Fancose 06/16 16:20說真的一定要註解就是了

zero00072 06/16 16:20break if winners.include?(you)

skyofme 06/16 16:20推文裡看起來跟他同一個頻道的能不能幫

wonder007 06/16 16:20loop判斷是嘛 = =

是的

skyofme 06/16 16:20忙解釋一下是什麼情境,我不太理解

herculus6502 06/16 16:20你這寫法很有彈性可以寫成FSM

maplefff 06/16 16:21一個是邏輯判斷,一個重複操作欸

zaqimon 06/16 16:21if跟loop都一樣是compare jump

haw561676 06/16 16:21這樣code 難看死了,嘔嘔嘔嘔

FFMay 06/16 16:22我都dear開頭

haw561676 06/16 16:22怎麼想都if 判斷就可以處理就好,巢狀

skyofme 06/16 16:22所以這是老語言的問題?

Fancose 06/16 16:22好不好看不重要,重要的是要讓人看得懂

haw561676 06/16 16:22太多層很難看

qk3380888 06/16 16:22啊你進去找還不是o(n) = =

skyofme 06/16 16:23你說compare jump我大概有點懂了,但沒

skyofme 06/16 16:23實際寫過這種老語言

jimmykuo123 06/16 16:25反正有問題就用GOTO解決就好

s0805744 06/16 16:25看不懂想表示什麼

Justin890820 06/16 16:25你在公三小

knives 06/16 16:26寫成波動拳好了

tyantmf 06/16 16:27要看狀況阿 不然陣列if到死

jack7614614 06/16 16:28文組表示 嗯嗯嗯 對啊!

blurman 06/16 16:29沒天分看不懂,還是辭職去跑外送吧

phenom1 06/16 16:29你可以示範一下嗎

我上面回文了 你看看

vios10009 06/16 16:29我都用switch case

skyofme 06/16 16:31你這意思跟你原文講的有點落差 = =

henry4343 06/16 16:31Life is short use python

skyofme 06/16 16:32你這個就寫法彈性的問題不是嗎?

是的 但時常碰到不太需要擴充的情境 所以覺得多此一舉了 ?

tw11509 06/16 16:33看情況啊,如果不會變當然直接if or swi

tw11509 06/16 16:33tch,會新增就放array比對啊,但還要考

tw11509 06/16 16:33慮其他啦

lisyu 06/16 16:33用case不好嗎?

wei115 06/16 16:33我會避免 雙層、三層for 因為真的看不懂

xfaw4d35t 06/16 16:33通通外包 出事卸責 沒事攬功 誰還自己

兩層 三層for真的耗腦力的

xfaw4d35t 06/16 16:33

z897899878 06/16 16:34存取array都不用時間和空間?

zero00072 06/16 16:34樓下一百階聖誕樹 printf(); 一百次。

hirobumi 06/16 16:34switch case

switch case讓整個function落落長 沒有很愛用

wonder007 06/16 16:36如果你的array[]是要接收別人傳入的

wonder007 06/16 16:36那一定不能用1寫啊 但是2可以通用

pierreqq 06/16 16:36當你都講不出共鳴...程式一定寫不好

pierreqq 06/16 16:37自以為利害而以

wonder007 06/16 16:37到最後就是hard code與否的問題

anakin2 06/16 16:37我文組想學程式但聽不懂啦

kuoyu 06/16 16:39多層迴圈要善用空格。

都會用空格 但還是比較花時間看

fastener 06/16 16:40我朋友都外包,大家都說他是天才 給你參

fastener 06/16 16:40

matico 06/16 16:41不得不說建table有時候是蠻好用的

有時候真的好用沒錯

walter0914 06/16 16:42但這有什麼卦好問?

就懶的耗腦力了 覺得程式能動就好了 ?

noahblack 06/16 16:43我都用PERFORM 供參

dennisN 06/16 16:44兩層指標都很少見了三層是什麼鬼 直接算

kingfsg7326 06/16 16:44我寫verilog根本不用For loop的

dennisN 06/16 16:44位址還比較快…

z897899878 06/16 16:45verilog不用for也太痛苦

Qpera 06/16 16:46goto無敵

d0808 06/16 16:47可讀性差,多寫的那些代碼看不出有維護或

d0808 06/16 16:47擴充上的好處

你是指for loop嗎

aasssdddd 06/16 16:48if ll ll ll ll \ ll ll 精美謝謝

※ 編輯: cosmite (60.250.30.118 臺灣), 06/16/2022 16:49:39

TobyH4cker 06/16 16:49高階語言用iterator,但台灣普遍低端

TobyH4cker 06/16 16:49人多

xdghost 06/16 16:52switch case嫌太長 然後用if???

skyofme 06/16 16:53會套到三層迴圈我感覺應該是什麼遠古程

skyofme 06/16 16:53式的調整了

skyofme 06/16 16:53硬是要把幾個互相不能配合的資料尬在一

skyofme 06/16 16:53

LYSLYS 06/16 16:54我都用do{ if(conditions) break; }while

LYSLYS 06/16 16:54(0)

fullfool 06/16 17:01看情境啦 case 只有兩個當然if 就解決了

matico 06/16 17:05只有兩個條件當然是寫if就好,20個條件建t

matico 06/16 17:05able就樂勝了

saiya 06/16 17:05除非太慢 不然可讀性要擺第一

jahfone 06/16 17:07樓下jserv告訴你linux裡也有goto

basslife 06/16 17:08我都用pandas

duya 06/16 17:08C++的話能不用for loop!?

diolin 06/16 17:15用printf就夠了。

cowardlyman 06/16 17:16如果用if能解決,你用for loop的效

cowardlyman 06/16 17:16能有比較好嗎? 還是你單純擴充性問

cowardlyman 06/16 17:17題? 好奇問問

CIDgreen 06/16 17:18loop 裡面還不是 if

bmiss 06/16 17:23禁goto,那表示你公司不是寫底層的

maplefff 06/16 17:23你用vector包,然後用find找, 找完if確

maplefff 06/16 17:24認結果,就不用變成一大團,又能有擴充

hw1 06/16 17:29厲害的是有效率的code 能O(n)就別用O(n^2)

hw1 06/16 17:29能O(log n)就別用O(n)

ILYY 06/16 17:36反串嗎?

beeG 06/16 17:38你是對的,建議開始看 FP

bobju 06/16 17:44能寫成還是呼叫,就不要超過兩層。

bobju 06/16 17:45 函式

bobju 06/16 17:46Teamwork盡量不要炫個人技巧

rofellosx 06/16 17:50???

marc47 06/16 17:50http://i.imgur.com/SfxWqWM.jpg

圖https://i.imgur.com/SfxWqWM.jpg?e=1666729431&s=rfScvVT2bGiwirIo-3wW_Q, 程式能寫if 就不要用for loop?

vvrr 06/16 18:17你的例子比較適合用case switch吧..

dboy1980 06/16 18:17雖然腦包,但有創意

LaplaceDemon 06/16 18:21你的程式都不寫註解嗎

darkMood 06/16 18:22不要用 go to ,笑死。

s4300026 06/16 18:29我都用策略模式

Tassatul 06/16 18:37那個for loop 多建了一個陣列占用記憶體

stupidwayne 06/16 18:40直接if 直到超過8個再來包

polay 06/16 18:57寫case好看懂 又整齊,table一大坨

k82817 06/16 19:00我都用hash table

bluu 06/16 19:18loop的時間複雜度比if多hen多

jackshadow 06/16 19:20我也覺得用iterator就好= =

luoqr 06/16 19:30compiler優化比你寫那些沒人看懂的鬼code快

erichen 06/16 19:34如果是一些懶惰的語言有contain語法可以

erichen 06/16 19:34省forloop

PetrVanis 06/16 19:48效率問題 for loop去查一下怎麼運作的

PetrVanis 06/16 19:48你就知道了

k798976869 06/16 20:10幹嘛不用hash 沒救惹

computer3314 06/16 20:19不用迴圈就可以解決問題是最好

computer3314 06/16 20:21有些可以用hashmap跟collect來代替

computer3314 06/16 20:21迴圈,但是就要寫註解不然很難維護

drinkmuffin 06/16 20:22一開始寫範例不就好了 還在想說你是

drinkmuffin 06/16 20:22在公三人 我是都用你說Array的方式

drinkmuffin 06/16 20:22 現在用linq 可以寫的很好懂

drinkmuffin 06/16 20:23而且用linq 也沒有你說兩層三層問題

drinkmuffin 06/16 20:24 可以很方便看的ㄧ行一行的

stja 06/16 20:32

lpoijk 06/16 20:34小學生問題 自己判斷好嗎

darkholy 06/16 20:37是在胡說些什麼

B9702115 06/16 20:38人才...

jason4571 06/16 21:16有看過6層for loop嗎 真的很棒

jason4571 06/16 21:17那個寫code 邏輯真的爛

orze04 06/16 21:196層迴圈...好想看

linzero 06/16 22:32看情況吧,不複雜的隨便沒差吧

ray0305 06/16 22:32不要寫自己事後都看不懂的code

jikker 06/16 23:13for loop裡面還不是要if 公沙小

jikker 06/16 23:15https://i.imgur.com/Mm7lqxM.png

圖https://i.imgur.com/Mm7lqxM.png?e=1666747863&s=Azvf87qk59py2P6LkxYy6Q, 程式能寫if 就不要用for loop?

TripleC 06/17 00:09寫code要讓以後的人能maintain

KH22 06/17 07:26這也要問

froce 06/17 09:14現代人連code也能雲。科科

froce 06/17 09:17你要迭代的是變數,數量由前面運算的結果

froce 06/17 09:17去定,你是要怎麼用if去替代for?

froce 06/17 09:17當你老闆丟了個1000條資料叫你分析,你要

froce 06/17 09:17用if寫1000條條件?