Soft_Job 板


LINE

等等,我原本以為只是一個簡單的問題 居然歪樓了 推動coding conventions 可以從你我做起 像原原po的問題是 if if if if ; ; ; ; 把判斷式改過來變成 if return; if return; 即可 這個就簡單起草一份coding conventions 拿給長官review, 以後code review 看到這個問題 就直接貼連結請junior 改就好了 這種東西很多學生時期根本沒碰過 自然就會波動拳出現 跟頂不頂大沒關系 反而是senior 不知道怎麼幫助junior 才是問題 ※ 引述《purin88 (原來我是憤怒的鄉民)》之銘言: : 我從上面的文章只看到原po說有很多if...else跟function用原本的copy過來,改一下自 : 己想修改的code : 但卻沒看到任何提到效率問題,而且if...else是O(1),並不會拖垮速度。 : 每個人寫code的習慣不一樣, : 有的人喜歡這樣寫 : if() { : } : 有的人喜歡這樣寫 : if() : { : } : 有的人喜歡程式碼短就連在一起 : if(...) cout << "xxx"; : else cout << "bbb"; : 也有人喜歡短的程式碼連在一起 : cout << "請輸入數字月份(1~12):"; cin >> month; : 有的人喜歡命名用底線分開,如:month_arr : 有些人喜歡用小寫大寫分開,如:monthArr : 有些人不喜歡程式碼跟程式碼之間有空一行 : while { : .... : } : if() { : .... : } : for(int i = 0; i < N; i++) { : .... : } : 但有些人喜歡有空一行 : while { : .... : } : if() { : .... : } : for(int i = 0; i < N; i++) { : .... : } : 有人程式碼喜歡有空格分開 : for(int i = 0; i < N; i++) : 有人不喜歡太多空格 : for(int i=0; i<N; i++) : 以上這些都沒有錯,沒有誰的才是對的,誰才是錯的,重點流程有沒有錯,有沒有bug, : 執行會不會慢,巢狀迴圈幾層。 : 執著在那些格式很沒有意義,或誰誰誰寫code格式不符合我意的,就把別人弄走。 : 你不能說你就是標準,全部人都要跟你的寫法一模一樣,很多人寫程式想的是這個問題要 : 怎麼寫才巧妙解決,而不是十分在乎格式,太執著就有強迫症或太龜毛,合作起來也很痛 : 苦。 : 放過別人也放過自己,互相尊重。 -- https://i.imgur.com/QDN9AhN.jpeg
紫楓創作:https://portaly.cc/tbpfs 我是AI王紫楓 你可以叫我AI王 也可以叫我AI王子 也可以叫我AI王子瘋 --
QR Code



※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 123.205.130.61 (臺灣)
※ 文章網址: https://webptt.com/m.aspx?n=bbs/Soft_Job/M.1721717892.A.838.html
1F:推 labbat: 遇到if-else完整陳述語法就沒辦法這樣偷吃步了 07/23 15:21
2F:推 chihlee5566: Conventions? 07/23 15:55
3F:→ stepnight: senior 最大的問題是 知識的詛咒 07/23 15:58
4F:→ brucetu: 每個都有else就不能像你說的這樣改 07/23 16:14
5F:→ brucetu: 真的遇到這種狀況只能把條件參數化再寫成其他形式,就像r 07/23 16:17
6F:→ brucetu: oute一樣,但也有可能到最後你發現還是if else最好維護, 07/23 16:17
7F:→ brucetu: 而且在某些很在意延遲的場景,if else更好 07/23 16:17
8F:→ shooter555: conversation 07/23 16:44
9F:→ shooter555: 太多層就是 邏輯不夠明確 接手的人很痛苦 07/23 16:46
10F:→ ma721: 沒事找事,太閒 07/23 16:53
※ 編輯: tbpfs (123.205.130.61 臺灣), 07/23/2024 17:26:54 ※ 編輯: tbpfs (123.205.130.61 臺灣), 07/23/2024 17:26:59
11F:→ tbpfs: 靠邊 手指太肥了點到conversation XD 07/23 17:27
※ 編輯: tbpfs (123.205.130.61 臺灣), 07/23/2024 17:27:52 ※ 編輯: tbpfs (123.205.130.61 臺灣), 07/23/2024 17:28:15
12F:→ acer1832a: 我記得一個func裡多個return,這種方式不是不建議使用? 07/23 17:28
13F:→ tbpfs: 你說的可能是很久以前的寫法不建議使用 07/23 17:29
14F:→ tbpfs: 但現在為了readability, 都是用這種寫法 07/23 17:29
15F:→ a3817001: early return現在還滿常見的 07/23 17:45
16F:推 f821027: 一個func多個return滿常在leetcode most vote 看到 07/23 17:46
17F:→ atst2: early return 還是要看一下返回的理由是什麼比較好. 07/23 18:09
18F:→ atst2: 一般的建議還是用在檢視輸入的資料有沒有符合規則. 07/23 18:10
19F:推 atst2: 然後,下面的例子有點極端 kubernetes裡的pc_controller.go 07/23 18:18
20F:→ atst2: 1714行,充滿if-else,作者一開頭就告訴你:別亂改,每個 07/23 18:19
21F:→ atst2: if-else都有意義. 07/23 18:19
22F:→ atst2: 以原發文的例子而言,有沒有可能,就是因為junior,為了避 07/23 18:24
23F:→ atst2: 免犯錯,才大量使用if-else去描述每一個路徑? 07/23 18:25
24F:推 gino0717: 如果不能return必須繼續做下去怎麼辦 07/23 19:14
25F:→ gino0717: 我在c++裡面要解析json我都會先給一個if看欄位在不在 07/23 19:15
26F:→ gino0717: 然後再一個if看到底是array還是object 再一個if看到底是 07/23 19:15
27F:→ gino0717: 字串還是數字 最後才開始做事 07/23 19:15
28F:推 abccbaandy: C++ json還要手寫parser? 07/23 19:40
29F:→ DrTech: 沒看過程式碼真的別太篤定對錯。 07/23 19:51
30F:推 karst10607: early return 感覺還比較適合多數情境,防呆機制比起 07/23 22:12
31F:→ karst10607: 風格是更順暢的理由 07/23 22:12
32F:推 viper9709: 推這篇 07/23 23:49
33F:推 crazwade: 推 剛入行也是針對這點有被前輩教育過 07/24 00:40
34F:→ crazwade: 後來也有像是用枚舉或是switch 來取代 if else 07/24 00:40
35F:→ crazwade: 只能說原 po可能有盡力 但不是當事人不好評論 07/24 00:41
36F:推 saladim: 其實若if-else或switch裡面思路清楚 不會是個問題 而且就 07/24 00:51
37F:→ saladim: 我少少的經驗來說一但思路清楚 大概也不太會形成很深的 07/24 00:51
38F:→ saladim: if/switch 很難用例子去闡述那種if顯示出來的思路雜亂跟 07/24 00:52
39F:→ saladim: 跟理解/修改的困難(更難驗證邏輯正確性) 07/24 00:53
40F:→ saladim: @atst2 有可能是避免犯錯 但我也跟其他人一起討論當時案 07/24 00:54
41F:→ saladim: 例 一旦分析好狀況 可以寫出用少量的if/switch的同樣功能 07/24 00:56
42F:→ saladim: 也有分享給對方...比較難理解的是 下次遇到同樣需要分析 07/24 00:57
43F:→ saladim: 時 還是用同樣方式描述路徑是有點意外 07/24 00:58
44F:→ saladim: 補充:當然也不排除有上面提到的那種極端狀況. 至少不是現 07/24 00:59
45F:→ saladim: 在遇到的 07/24 00:59
46F:推 joeboy: 我之前被review也是被教early return 07/24 01:30
47F:推 neo5277: 請愛用策略工廠 07/24 01:37
48F:推 yamagishi: 你邏輯沒理清楚才會覺得 if else 是 must 07/24 06:24
49F:→ yamagishi: 怎麼會有人問必須做下去該怎麼辦…OMG… 07/24 06:27
50F:推 yamagishi: Guard Clauses 跟 EAFP 有空可以去了解一下 07/24 06:32
51F:→ brucetu: 三小,就是會有if else must的狀況啊 07/24 07:43
52F:推 ssteves: early return能提高程式碼的可讀性、維護性,而且 07/24 08:21
53F:→ ssteves: 也可以減少不必要的計算資源 07/24 08:21
54F:推 bnd0327: 如果該函式的行為有清楚定義並做好單元測試,裡面if迴圈 07/24 10:14
55F:→ bnd0327: 複雜一點好像也還好。 07/24 10:15
56F:→ yamagishi: 不可能會有,另外寫一個 function 在那邊 early return 07/24 10:16
57F:→ yamagishi: 而已 07/24 10:16
58F:→ yamagishi: 不然你提出一個例子我們討論看看 07/24 10:17
59F:→ yamagishi: 這東西你最終只要注意是 Passing By Pointer 還是 Pass 07/24 10:19
60F:→ yamagishi: ing By Reference 你就能做出你要的東西了 07/24 10:19
61F:→ chal: 會寫成巢狀if 也可能是歷史造成的 前人寫 後人不敢動太大 07/24 12:37
62F:→ brucetu: 你當然可以把內層的if-else拉出去另一個function取個名字 07/24 14:33
63F:→ brucetu: 對於要trace整個狀況的開發者來說, 邏輯的複雜性沒有降低 07/24 14:33
64F:→ brucetu: 有時候反而跳來跳去更痛苦 07/24 14:34
65F:推 sasoman: guard clause 不是蠻基本的嗎 07/24 14:38
66F:→ sharek: guard clause, early return 都看情況不用在那邊文人相輕 07/24 15:51
67F:推 Obama19: 五十步笑百步 一堆early return有比較好嗎 07/24 17:07
68F:推 abccbaandy: 不好嗎? 哪個條件不要了就選起來刪掉就好,完全不用 07/24 18:13
69F:→ abccbaandy: 研究那堆if else 07/24 18:14
70F:→ brucetu: if else 還不是一樣選起來刪掉-.- 07/24 19:37
71F:→ brucetu: 真值表畫出來就知道你early return不會讓複雜度降低只是 07/24 19:39
72F:→ brucetu: 程式碼語法差異而已 07/24 19:39
73F:推 abccbaandy: 波動拳你怎麼選... 07/24 20:50
74F:推 Csir: 我之前也看過一堆goto差點自焚 07/24 23:14
75F:推 abraxas: 坐等例子 07/25 00:07
76F:推 akito117: early return 在做防呆類型好用,可以簡化if else,讓 07/25 18:49
77F:→ akito117: 邏輯清楚一點。 07/25 18:49
78F:推 EricTao: 推樓上 不然光縮排就飽了 08/06 18:14







like.gif 您可能會有興趣的文章
icon.png[問題/行為] 貓晚上進房間會不會有憋尿問題
icon.pngRe: [閒聊] 選了錯誤的女孩成為魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一張
icon.png[心得] EMS高領長版毛衣.墨小樓MC1002
icon.png[分享] 丹龍隔熱紙GE55+33+22
icon.png[問題] 清洗洗衣機
icon.png[尋物] 窗台下的空間
icon.png[閒聊] 双極の女神1 木魔爵
icon.png[售車] 新竹 1997 march 1297cc 白色 四門
icon.png[討論] 能從照片感受到攝影者心情嗎
icon.png[狂賀] 賀賀賀賀 賀!島村卯月!總選舉NO.1
icon.png[難過] 羨慕白皮膚的女生
icon.png閱讀文章
icon.png[黑特]
icon.png[問題] SBK S1安裝於安全帽位置
icon.png[分享] 舊woo100絕版開箱!!
icon.pngRe: [無言] 關於小包衛生紙
icon.png[開箱] E5-2683V3 RX480Strix 快睿C1 簡單測試
icon.png[心得] 蒼の海賊龍 地獄 執行者16PT
icon.png[售車] 1999年Virage iO 1.8EXi
icon.png[心得] 挑戰33 LV10 獅子座pt solo
icon.png[閒聊] 手把手教你不被桶之新手主購教學
icon.png[分享] Civic Type R 量產版官方照無預警流出
icon.png[售車] Golf 4 2.0 銀色 自排
icon.png[出售] Graco提籃汽座(有底座)2000元誠可議
icon.png[問題] 請問補牙材質掉了還能再補嗎?(台中半年內
icon.png[問題] 44th 單曲 生寫竟然都給重複的啊啊!
icon.png[心得] 華南紅卡/icash 核卡
icon.png[問題] 拔牙矯正這樣正常嗎
icon.png[贈送] 老莫高業 初業 102年版
icon.png[情報] 三大行動支付 本季掀戰火
icon.png[寶寶] 博客來Amos水蠟筆5/1特價五折
icon.pngRe: [心得] 新鮮人一些面試分享
icon.png[心得] 蒼の海賊龍 地獄 麒麟25PT
icon.pngRe: [閒聊] (君の名は。雷慎入) 君名二創漫畫翻譯
icon.pngRe: [閒聊] OGN中場影片:失蹤人口局 (英文字幕)
icon.png[問題] 台灣大哥大4G訊號差
icon.png[出售] [全國]全新千尋侘草LED燈, 水草

請輸入看板名稱,例如:Soft_Job站內搜尋

TOP