Re: [討論] 寫三元判斷式code review被打槍

作者: brucetu (sec)   2022-12-14 13:54:02
三元不能用 算還好了
我還遇過
a=1;
...
...
if (xxx) a=2;
不能這樣寫 請改成
if (xxx) { //還可以戰一下這個{要不要去下一行
a=2;
}
以免有人沒看到那個一行if後面有assign value
這種事情就是看話語權啦
每個人看code習慣不同
作者: NCUking (中大王)   2022-12-14 14:10:00
什麼話語權 這是團隊規範該做的好嗎
作者: lazarus1121 (...)   2022-12-14 14:24:00
第一種寫法正常人看到都會罵吧
作者: vi000246 (Vi)   2022-12-14 14:25:00
第一種寫法比三元還差..
作者: LFimi   2022-12-14 14:28:00
這只是coding style根本沒統一而已吧
作者: BlueBird5566 (生日56)   2022-12-14 14:32:00
原來不只我討厭第一種寫法if(xxx)a=2;b=3;如果是if(xxx) return、break就算了 上面這種更糟
作者: qwer338859 (溫莎公爵)   2022-12-14 14:34:00
第一種在幹嘛....為啥不直接宣告在if上面要離那麼遠
作者: BlueBird5566 (生日56)   2022-12-14 14:35:00
還跟別行程式並排在一起
作者: stupid0319 (徵女友)   2022-12-14 14:35:00
style很漂亮的糞code,至少對公司說的過去
作者: alan3100 (BOSS)   2022-12-14 14:35:00
第一個太爛了吧 為了縮排而縮排比三元更沒意義
作者: qwer338859 (溫莎公爵)   2022-12-14 14:37:00
這是在講縮排嗎 這個不是講好就好
作者: alan3100 (BOSS)   2022-12-14 14:38:00
縮減行數
作者: qwer338859 (溫莎公爵)   2022-12-14 14:38:00
我們這邊只要有if就強制加大誇號就算是空body也一樣
作者: BlueBird5566 (生日56)   2022-12-14 14:39:00
有{}還是比較好啦 雖然現在CODE只有一行 未來要加
作者: alan3100 (BOSS)   2022-12-14 14:40:00
如過以google java style來講大夸號是必加不能省
作者: BlueBird5566 (生日56)   2022-12-14 14:40:00
其他行程式也比較不會出錯 沒{}的寫法真的就裝逼~剛學程式時也喜歡那些寫短的code 好像越短越強
作者: alan3100 (BOSS)   2022-12-14 14:41:00
第一種寫法除非你以後絕對不會改到 不然維護上很常出錯
作者: BlueBird5566 (生日56)   2022-12-14 14:41:00
但工作久了反而覺得可讀性高的程式重要多了之前寫個迴圈 同事還叫我把所有邏輯寫在迴圈裡 說這
作者: shooter555 (shooter)   2022-12-14 14:42:00
我也討厭if(xxx) a=2;這種一行式的 就難看
作者: BlueBird5566 (生日56)   2022-12-14 14:42:00
樣只要一個迴圈就處理完 效能較快 但可讀性就很差
作者: baobomb (baobomb)   2022-12-14 14:44:00
面試看到 if else不加大括號的 都直接先扣分... 整個看起來有夠醜
作者: shooter555 (shooter)   2022-12-14 14:45:00
不過這些在convention裡面定好就好
作者: testPtt (測試)   2022-12-14 14:48:00
一行分號我倒是不介意 只要a不出錯後面都可以無視
作者: baobomb (baobomb)   2022-12-14 14:49:00
一開始可能還好 但函式在擴展時 邏輯可能會變多 然後一旦一開始沒有大括號 後面就也不會加 最後就是 if(xxx) a;b; c;....一直加下去 可讀性極差
作者: s06yji3 (阿南)   2022-12-14 14:54:00
if-else 有無大括號影響可以很大
作者: testPtt (測試)   2022-12-14 14:54:00
其實看不爽就看ide的格式化功能幾個按鍵搞定
作者: shooter555 (shooter)   2022-12-14 15:09:00
code就是訂定好協議 風格一致比較好看 一下{換行一下{不換行接後面 不一致就是難看而已
作者: hegemon (hegemon)   2022-12-14 15:23:00
第一個就算是Google 的coding style 都會把他處理掉好嗎?
作者: testPtt (測試)   2022-12-14 15:27:00
第一個我是遇過變數集中函式集中宣告強迫正 所以會離很遠
作者: sososlee (堯)   2022-12-14 15:29:00
真的很討厭第一種寫法
作者: TSW (翹班帝國)   2022-12-14 15:31:00
你可以換個環境,寫 ruby 吧Coding Style的討論我覺得很浪費時間,最近都是丟給特別有意見的成員,讓他們自己去formatter的設定檔上面編輯戰,再讓CI跑過後,Code review 就快多了。
作者: testPtt (測試)   2022-12-14 15:53:00
大家碰到這個要換行嗎? public int Goo { get; set; }
作者: jknm0510a (Kang)   2022-12-14 15:58:00
加括號是習慣吧!以後裡面加code才不會生出bug難解加一下不會花你多少時間空間,減少以後出錯debug時間
作者: acgotaku (otaku)   2022-12-14 16:16:00
第一個確實應該改。而且 styling check 就跑不過了
作者: Hsins (翔)   2022-12-14 16:19:00
寫書寫筆記為了避免排版跟篇幅問題可以那樣寫, 實際上開發會儘量避免
作者: bab7171   2022-12-14 16:31:00
笑死 這不是會寫c,就要知道的事嗎為什麼一定要用大括號
作者: a12838910 (Ziv.C)   2022-12-14 16:33:00
真假啦 第一種這麼討人厭哦...
作者: k798976869 (kk)   2022-12-14 16:37:00
不爽括號不會用蟒蛇嗎
作者: somefatguy   2022-12-14 16:44:00
我都用ide把大括號設成背景色
作者: bheegrl   2022-12-14 16:46:00
寫一行的那種coding style應該是前端框架才有機會看到吧
作者: Jasforwe (沒有目標不會不好)   2022-12-14 16:47:00
我都看心情有時候第一種有時候第二種給你參考
作者: sniper2824 (月夜)   2022-12-14 16:47:00
第一種我只有return才會這樣寫
作者: choosin (秋心)   2022-12-14 17:05:00
只是括號縮排講好就好 根本沒那麼重要好嗎…
作者: peter98 (新兵)   2022-12-14 17:55:00
大括號一定要加的 不管幾行 你不加括號 送review被嘴只是剛好單行不加括號是很糟糕的壞習慣
作者: bill0205 (善良的小孩沒人愛)   2022-12-14 18:30:00
討厭不換行+1 而且還不+大括號很煩人
作者: thuko8652 (Romanee)   2022-12-14 19:02:00
掛號是一定要寫的不寫括號習慣太差
作者: s0914714 (YA)   2022-12-14 20:29:00
第一種真的很雷
作者: testPtt (測試)   2022-12-14 20:37:00
1.a=>b+c; 2.a=>{b+c;}哪個好
作者: kokona554 (Ocelot)   2022-12-14 20:49:00
寫個括號很難嗎
作者: gs8613789 (Shang6029)   2022-12-14 21:03:00
討厭不換行
作者: kurtsgm   2022-12-14 21:25:00
拜託你至少斷行
作者: TAKADO (朕沒給的你不能搶)   2022-12-14 22:29:00
第一種寫法等同於埋地雷給新人踩
作者: peter98 (新兵)   2022-12-14 22:36:00
一個55分 一個50分 不要在不及格的東西上爭論 乖乖加括號就是 不然gerrit上肯定有人送你個紅色大叉叉更正 gerrit->code review system至於左括號要刮在if()後面還是跳一行 拜託你看一下原本的repo裡面怎麼寫的 照著寫 不要標新立異(而且這是很沒創意的標新立異 沒人會appreciate你的點)
作者: Dracarys (MayShowGunMore)   2022-12-14 22:58:00
作者: anandydy529 (AndyAWD)   2022-12-14 23:33:00
自己的專案寫一行沒差,多人的專案就是埋坑給別人跳而且 google code style 就跟你說要加大括號了
作者: stero (認真 發呆)   2022-12-14 23:50:00
老實說 單純你自己覺得好
作者: chuegou (chuegou)   2022-12-14 23:50:00
大括號必加
作者: viper9709 (阿達)   2022-12-15 00:03:00
if要加大括號+1
作者: kyo22222 (阿kyo)   2022-12-15 00:54:00
加大括號比較好 之前Apple就有個有名bug: goto fail如果有加大括號也能避免
作者: germun (ger)   2022-12-15 00:55:00
這種會被罵只能說活該 自以為很簡潔= =
作者: w28103566 (迷途的旅行者)   2022-12-15 01:21:00
第一種寫法其實有人推崇,但還是第二種可讀性高
作者: adsl12367 (adsl12367)   2022-12-15 01:31:00
第一種寫法團隊開發不建議這樣
作者: milkdragon (謝謝大家!!)   2022-12-15 02:13:00
Google Coding Style 在某些狀況下還是允許不加大括號https://tinyurl.com/4hz6e9vd
作者: alan3100 (BOSS)   2022-12-15 02:41:00
只有說歷史原因在特定情況下可省 但沒建議你省略
作者: del680202 (HANA)   2022-12-15 05:28:00
記得之前一個很有名的安全性漏洞 就是沒加大括號造成的然後讓一堆公司忙著修補
作者: mmonkeyboyy (great)   2022-12-15 05:30:00
Coding style 不過 正常啊現代自動檢查 你這一定被抓啊
作者: nurockplayer (塔奇巧克力)   2022-12-15 05:52:00
我就是不想寫大括號才寫 Python
作者: Hsins (翔)   2022-12-15 05:54:00
我喜歡大括號,但不排斥 Python:)
作者: Csongs (西歌)   2022-12-15 08:45:00
coding style 遵守很難嗎...爭這個幹嘛
作者: timTan (用口頭禪區分年記)   2022-12-15 10:15:00
很多bug 都是沒有大括號來的
作者: ohmylove347 (米特巴爾)   2022-12-15 10:20:00
第一種不就Kotlin 常見寫法嗎?不奇怪吧
作者: baobomb (baobomb)   2022-12-15 13:14:00
Kotlin那有第一種寫法.... 你說的kt寫法應該是 val a = if(true) xx else xx原po第一種是 if(true) a = xx就算是kt 比較穩妥的team 也都是寫 val a = if(true) { xx } else { xx }你不加大括號 就算是kt 裡面邏輯一旦變多 一樣是爆炸好嗎
作者: ohmylove347 (米特巴爾)   2022-12-15 14:25:00
不加大括號本來就是給單行用的,就是讓最精簡的寫法能夠更精簡,多行當然用括號,第一個寫法kt是能用的,而且也常常當三用運算子用var v = if (a) b else c不寫括號就是為了讓單行的精簡度更高,習慣了也不會影響閱讀甚至更流暢,多行不加括號已經不是設計本意了,我自己理解是只有單行可以不加
作者: hegemon (hegemon)   2022-12-15 15:09:00
連單行都會被check style 要求要加好嗎?
作者: brucetu (sec)   2022-12-15 15:55:00
因為沒有大括號引發bug應該還是寫的人的問題 自己眼殘加上測試不足不過規定一律要加以防有人犯錯我是可以認同啦
作者: robber1234 (超痛恨嘴炮)   2022-12-15 16:02:00
kt style有指明可以單行不括號,不知道大家在激動啥..
作者: baobomb (baobomb)   2022-12-15 17:21:00
還是要看Team size啦 如果只是10-20個人維護的中小型專案 可能自己定好style 測試嚴謹就行 但如果是幾百人維護的超大型專案 不加真的很常被後面的人越寫越醜... 畢竟你不能保證所有人都跟你一樣 看到邏輯擴展時會reformat code 加上括號抽出邏輯 等到你回頭看的時候 常常已經面目全非Kt style單行不加沒錯 但單行指的是你邏輯簡單到不行 而且確認不可能會擴展 不然基本上還是加了比較安全
作者: superpandal   2022-12-15 18:13:00
我也經常第1種寫法 第2種寫法是很浪費程式碼空間的而且也並不難懂 只是習不習慣有沒有偏見
作者: stupid0319 (徵女友)   2022-12-15 18:16:00
程度碼空間有限?
作者: superpandal   2022-12-15 18:17:00
比起這個我還覺得分號比較重要當然理論上沒上限 但你要好維護 當然要選擇當下條件下最簡潔的寫法boabomb說的還要糟過三元...
作者: SHANGOYANYI (彥一)   2022-12-15 20:11:00
…這比三元還爛 把作用域包好很難嗎
作者: CaptainTeemo (提摩隊長)   2022-12-15 22:06:00
在某些條件下可以接受三元,但沒有大掛號不行
作者: baobomb (baobomb)   2022-12-15 22:09:00
樓上... Kotlin的if是表達式 所以沒有ternary operator Java的三元 如果純賦值且邏輯簡潔的話沒什麼問題 但Kt你要賦值一行式就是得 if else你if else沒有大括號 後面絕對超容易被改爛 尤其是Kotlin這種語法 單幹就算了 幾百人寫的repo你不加 真的很容易被新人搞爛
作者: kurtsgm   2022-12-15 23:32:00
都要2023年了 什麼叫做浪費程式碼空間 XDDD
作者: peter98 (新兵)   2022-12-16 00:52:00
會在意程式碼空間多於維護性的 要嘛是在極為limited的資源(ram, disk)下寫程式 要馬是每寫過百人以上專案 不然就是程式寫得不好 通常是後兩者居多就是沒寫過*寫節省程式碼 該用的是OO技巧 而不是在這方面計較隨便做個refactor 把duplicate code拉到一個函式 節省的空間至少是三元運算子能節省的好幾倍跟薪水也依樣 很多人在討論好好幹IT 年薪150沒問題殊不知豬屎屋的起薪一堆就幹掉150了 IT怎麼努力也沒用就跟把if else改成三元運算節省空間依樣 沒用 太侷限
作者: baobomb (baobomb)   2022-12-16 06:56:00
同意樓上.. 程式碼空間應該靠的是oo 良好的DI 以及適當的refactoring.. 而不是什麼非得要一行.
作者: icydream (巧虎)   2022-12-16 09:03:00
google apple goto fail
作者: gpctv (gpctv)   2022-12-16 10:05:00
我被第一種寫法弄過
作者: stellvia2359 (Astral)   2022-12-16 10:46:00
本來就該加括號,沒括號是在哭?看到不加括號火都上來
作者: s860134 (s860134)   2022-12-16 12:40:00
擴充 會放陷阱害人
作者: angusyu (〒△〒)   2022-12-16 12:52:00
Google的Java style確實有說都要加括號,但Kt style沒有.反正大家都按自己喜好跟公司傳統在吵,guidance沒人在乎
作者: mmonkeyboyy (great)   2022-12-16 15:25:00
OO現在很多也推行少用...維護起來太煩了
作者: pig0038 (顆顆)   2022-12-16 15:47:00
leetcode 很常看到第一種寫法, 但是我不會在PROD幹這種事在 OA 寫的時候我會先跟面試官聲明因為 java 寫 leetcode 實在太囉嗦了
作者: superpandal   2022-12-16 19:11:00
java本身就是OO 你不寫OO也得OO 把相同的功能封裝是正常人都會做的事情 但用三元的例子本身就是單純案例重點這種簡易判斷出現不會只有一次 出現的很頻繁 省下的程式碼空間和看長程式碼需要的暫時記憶以及如果找程式碼都是有幫助的s/如果//java也並非只有OO 也可以搭配FP 不明白這年頭為何開口閉口OO以及DI 樓主的例子要擴充加括號就好 本身第1種寫法也不是什麼不常見的做法至於kt如果只能如此那就沒辦法 有沒有過譽嫌疑我不知道 但以這例子來說確實糟糕
作者: peter98 (新兵)   2022-12-16 21:35:00
正常人會括號你應該是沒做過甚麼大project你連括號都不知道要加 才跟你提OO 怕你不知道呀
作者: superpandal   2022-12-16 22:10:00
有阿 大型專案都很亂 你看一下樓主的例子 括號是否必要 要加括號的時候自然會加沒有人會覺得用第一種寫法 如果一樣條件要增加程式直接放下面會能跑的...查了一下 kt可以不用分號也可以用 但分號很好只有shell我才不加分號 因為它同行分割需要'\'
作者: asadman1523 (黑炭)   2022-12-17 11:10:00
要括號不喜歡每次還要去幫你加括號我才能塞其他東西
作者: Dnight (暗夜)   2022-12-17 11:52:00
不加括號以後需求改了要多加一行你不是還是要括號那你為什麼要省那個括號
作者: michael0728n (蒜˙遠古)   2022-12-17 16:16:00
Linux kernel style是換行不加括號,看話語權沒錯XD
作者: viper9709 (阿達)   2022-12-17 17:42:00
推樓樓上
作者: ohmylove347 (米特巴爾)   2022-12-18 00:01:00
如果要改再一起加好了不是?精簡時最精簡不是很好嗎?
作者: s8952889 (s8952889)   2022-12-18 00:20:00
不懂少一個括號是有什麼好處?少打一些字??看了就賭爛
作者: ohmylove347 (米特巴爾)   2022-12-18 11:34:00
好吧,那就只是很多人看單行很不爽XD
作者: Dnight (暗夜)   2022-12-18 13:04:00
既然你Que我了我只好多回一點了,我剛開始工作的時候也覺得怎麼可能有人看不懂,但是工作就是沒有最誇張只有更誇張你覺得if(XXX)a=2; 後面改個需求後面人會自己加括號,但是就是會有天兵直接在下面加一行b=XXX;你如果有加個括號我相信大部分人都知道要加在括號裡面,這樣就減少這種天兵犯錯的機會,你可能會覺得那是天兵的問題,可是前輩跟給講了會有天兵這樣搞,你有機會減少天兵犯錯的時候,除非你很有自信你的團隊只收菁英覺得不接受垃圾,不然你為什麼要挖洞給人跳萬一很不幸的哪天你接手的專案發現之前有個天兵幹了這件事然後你還不知道這個天兵有沒有可能在所有沒括號的地方幹同樣的事情,你可能就知道什麼是顯學,跟你講有人會看不懂不是因為我眼睛有問題看不懂,是我真的看過有人看不懂
作者: viper9709 (阿達)   2022-12-19 17:36:00
推樓上~Apple的goto fail也是例子
作者: sdwqdwd5 (sunshine)   2022-12-19 19:53:00
純噓用Leetcode的coding style來比較*用Leetcode上看到的
作者: redseye (揪及)   2022-12-19 22:46:00
有大括號才是好習慣喔...
作者: bightt97018 (火腿子)   2022-12-20 02:14:00
LK 你會被挑
作者: h821231 (bombshow)   2022-12-21 01:53:00
單行不括號很醜 大型專案也不好維護 其他有括號突然來一行沒有的還不是閱讀困難這不是為了自己方便 而是為了大家方便 與其等別人眼殘改錯再來罵不如先加也沒什麼看不看舒服的問題 單純減少可能出錯的機會看到你有回論對錯什麼的 大家是在共同合作才盡量減少別人出包 而不是出包後花時間檢討誰錯 不會幫你加快進度除非你預設新人不會眼殘 或你們團隊不收非菁英 那我沒話說
作者: AminLA (101)   2022-12-22 17:55:00
Apple那個是被merge程式搞的吧
作者: ma721 (UndeadJ)   2022-12-28 13:05:00
加不是常識嗎....
作者: siriusu (かがみは俺の嫁。)   2022-12-31 11:11:00
我真的沒看過有知名專案不用加的 有例子嗎
作者: friends29 (涼哥哥)   2021-01-06 06:16:00
這我一定blame除非原本repo全部都是這種 我就閉嘴

Links booklink

Contact Us: admin [ a t ] ucptt.com