PTT評價

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

看板Soft_Job標題Re: [討論] 寫三元判斷式code review被打槍作者
brucetu
(sec)
時間推噓18 推:35 噓:17 →:146

三元不能用 算還好了

我還遇過

a=1;

...
...

if (xxx) a=2;

不能這樣寫 請改成

if (xxx) { //還可以戰一下這個{要不要去下一行
a=2;
}

以免有人沒看到那個一行if後面有assign value

這種事情就是看話語權啦

每個人看code習慣不同


--

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

NCUking12/14 14:10什麼話語權 這是團隊規範該做的好嗎

lazarus112112/14 14:24第一種寫法正常人看到都會罵吧

vi00024612/14 14:25第一種寫法比三元還差..

LFimi12/14 14:28這只是coding style根本沒統一而已吧

BlueBird556612/14 14:32原來不只我討厭第一種寫法

BlueBird556612/14 14:33if(xxx)

BlueBird556612/14 14:33 a=2;

BlueBird556612/14 14:33 b=3;

BlueBird556612/14 14:34如果是if(xxx) return、break就算了 上面這種更糟

qwer33885912/14 14:34第一種在幹嘛....為啥不直接宣告在if上面要離那麼遠

我的舉例意思是a=1跟a=2中間有別的code啦 不是所有狀況都可以先做完別的事情最後再來a=(cond)?1:2 這時候到底要寫成if (cond) a=2;一行還是拆開有大括號 啊就看有權決定的人爽就好

BlueBird556612/14 14:35還跟別行程式並排在一起

stupid031912/14 14:35style很漂亮的糞code,至少對公司說的過去

alan310012/14 14:35第一個太爛了吧 為了縮排而縮排比三元更沒意義

qwer33885912/14 14:37這是在講縮排嗎 這個不是講好就好

alan310012/14 14:38縮減行數

qwer33885912/14 14:38我們這邊只要有if就強制加大誇號就算是空body也一樣

BlueBird556612/14 14:39有{}還是比較好啦 雖然現在CODE只有一行 未來要加

alan310012/14 14:40如過以google java style來講大夸號是必加不能省

BlueBird556612/14 14:40其他行程式也比較不會出錯 沒{}的寫法真的就裝逼~

BlueBird556612/14 14:41剛學程式時也喜歡那些寫短的code 好像越短越強

alan310012/14 14:41第一種寫法除非你以後絕對不會改到 不然維護上很常出錯

BlueBird556612/14 14:41但工作久了反而覺得可讀性高的程式重要多了

BlueBird556612/14 14:42之前寫個迴圈 同事還叫我把所有邏輯寫在迴圈裡 說這

shooter55512/14 14:42我也討厭if(xxx) a=2;這種一行式的 就難看

BlueBird556612/14 14:42樣只要一個迴圈就處理完 效能較快 但可讀性就很差

baobomb12/14 14:44面試看到 if else不加大括號的 都直接先扣分... 整個看起

baobomb12/14 14:44來有夠醜

shooter55512/14 14:45不過這些在convention裡面定好就好

看起來有大括號是顯學?

testPtt12/14 14:48一行分號我倒是不介意 只要a不出錯後面都可以無視

baobomb12/14 14:49一開始可能還好 但函式在擴展時 邏輯可能會變多 然後一

baobomb12/14 14:49旦一開始沒有大括號 後面就也不會加 最後就是 if(xxx) a;

baobomb12/14 14:49 b; c;....一直加下去 可讀性極差

s06yji312/14 14:54if-else 有無大括號影響可以很大

testPtt12/14 14:54其實看不爽就看ide的格式化功能幾個按鍵搞定

其實我是兩種都接受 總不能寫錯程式的時候跟老闆說那個XXX if else格式寫不對害我看錯

shooter55512/14 15:09code就是訂定好協議 風格一致比較好看 一下{換行一下

shooter55512/14 15:10{不換行接後面 不一致就是難看而已

hegemon12/14 15:23第一個就算是Google 的coding style 都會把他處理掉好嗎

hegemon12/14 15:23

testPtt12/14 15:27第一個我是遇過變數集中函式集中宣告強迫正 所以會離很遠

sososlee12/14 15:29真的很討厭第一種寫法

TSW12/14 15:31你可以換個環境,寫 ruby 吧

TSW12/14 15:36Coding Style的討論我覺得很浪費時間,最近都是丟給特別有意

TSW12/14 15:39見的成員,讓他們自己去formatter的設定檔上面編輯戰,再讓CI

TSW12/14 15:39跑過後,Code review 就快多了。

testPtt12/14 15:53大家碰到這個要換行嗎? public int Goo { get; set; }

我看過getter setter保底六七行的 全換行 好醜

jknm0510a12/14 15:58加括號是習慣吧!以後裡面加code才不會生出bug難解

jknm0510a12/14 15:59加一下不會花你多少時間空間,減少以後出錯debug時間

acgotaku12/14 16:16第一個確實應該改。而且 styling check 就跑不過了

Hsins12/14 16:19寫書寫筆記為了避免排版跟篇幅問題可以那樣寫, 實際上開發

Hsins12/14 16:19會儘量避免

bab717112/14 16:31笑死 這不是會寫c,就要知道的事嗎

bab717112/14 16:32為什麼一定要用大括號

a1283891012/14 16:33真假啦 第一種這麼討人厭哦...

k79897686912/14 16:37不爽括號不會用蟒蛇嗎

※ 編輯: brucetu (220.135.153.214 臺灣), 12/14/2022 16:41:42

somefatguy12/14 16:44我都用ide把大括號設成背景色

bheegrl12/14 16:46寫一行的那種coding style應該是前端框架才有機會看到吧

Jasforwe12/14 16:47我都看心情有時候第一種有時候第二種給你參考

sniper282412/14 16:47第一種我只有return才會這樣寫

choosin12/14 17:05只是括號縮排講好就好 根本沒那麼重要好嗎…

peter9812/14 17:55大括號一定要加的 不管幾行 你不加括號 送review被嘴只

peter9812/14 17:55是剛好

peter9812/14 17:57單行不加括號是很糟糕的壞習慣

bill020512/14 18:30討厭不換行+1 而且還不+大括號很煩人

thuko865212/14 19:02掛號是一定要寫的

thuko865212/14 19:02不寫括號習慣太差

s091471412/14 20:29第一種真的很雷

testPtt12/14 20:371.a=>b+c; 2.a=>{b+c;}哪個好

kokona55412/14 20:49寫個括號很難嗎

gs861378912/14 21:03討厭不換行

kurtsgm12/14 21:25拜託你至少斷行

if (c) a=2; 有比 if (c) a=2; 好?

※ 編輯: brucetu (220.135.153.214 臺灣), 12/14/2022 21:33:25

TAKADO12/14 22:29第一種寫法等同於埋地雷給新人踩

peter9812/14 22:36一個55分 一個50分 不要在不及格的東西上爭論 乖乖加

peter9812/14 22:37括號就是 不然gerrit上肯定有人送你個紅色大叉叉

peter9812/14 22:38更正 gerrit->code review system

peter9812/14 22:39至於左括號要刮在if()後面還是跳一行 拜託你看一下原本

peter9812/14 22:39的repo裡面怎麼寫的 照著寫 不要標新立異(而且這是很沒

peter9812/14 22:40創意的標新立異 沒人會appreciate你的點)

Dracarys12/14 22:58

anandydy52912/14 23:33自己的專案寫一行沒差,多人的專案就是埋坑給別人跳

anandydy52912/14 23:34而且 google code style 就跟你說要加大括號了

stero12/14 23:50 老實說 單純你自己覺得好

chuegou12/14 23:50大括號必加

viper970912/15 00:03if要加大括號+1

kyo2222212/15 00:54加大括號比較好 之前Apple就有個有名bug: goto fail

kyo2222212/15 00:54如果有加大括號也能避免

germun12/15 00:55這種會被罵只能說活該 自以為很簡潔= =

w2810356612/15 01:21第一種寫法其實有人推崇,但還是第二種可讀性高

adsl1236712/15 01:31第一種寫法團隊開發不建議這樣

milkdragon12/15 02:13Google Coding Style 在某些狀況下還是允許不加大括號

milkdragon12/15 02:13 https://tinyurl.com/4hz6e9vd

milkdragon12/15 02:14上面貼錯@@ https://tinyurl.com/bda4b8wa

alan310012/15 02:41只有說歷史原因在特定情況下可省 但沒建議你省略

del68020212/15 05:28記得之前一個很有名的安全性漏洞 就是沒加大括號造成的

del68020212/15 05:28 然後讓一堆公司忙著修補

mmonkeyboyy12/15 05:30Coding style 不過 正常啊

mmonkeyboyy12/15 05:31現代自動檢查 你這一定被抓啊

nurockplayer12/15 05:52我就是不想寫大括號才寫 Python

Hsins12/15 05:54我喜歡大括號,但不排斥 Python:)

Csongs12/15 08:45coding style 遵守很難嗎...爭這個幹嘛

timTan12/15 10:15很多bug 都是沒有大括號來的

ohmylove34712/15 10:20第一種不就Kotlin 常見寫法嗎?不奇怪吧

baobomb12/15 13:14Kotlin那有第一種寫法.... 你說的kt寫法應該是 val a = i

baobomb12/15 13:14f(true) xx else xx

baobomb12/15 13:14原po第一種是 if(true) a = xx

baobomb12/15 13:14就算是kt 比較穩妥的team 也都是寫 val a = if(true) { x

baobomb12/15 13:14x } else { xx }

baobomb12/15 13:14你不加大括號 就算是kt 裡面邏輯一旦變多 一樣是爆炸好

baobomb12/15 13:14

ohmylove34712/15 14:25不加大括號本來就是給單行用的,就是讓最精簡的寫法

ohmylove34712/15 14:25能夠更精簡,多行當然用括號,第一個寫法kt是能用的

ohmylove34712/15 14:25,而且也常常當三用運算子用

ohmylove34712/15 14:26var v = if (a) b else c

ohmylove34712/15 14:27不寫括號就是為了讓單行的精簡度更高,習慣了也不會

ohmylove34712/15 14:28影響閱讀甚至更流暢,多行不加括號已經不是設計本意

ohmylove34712/15 14:28了,我自己理解是只有單行可以不加

hegemon12/15 15:09連單行都會被check style 要求要加好嗎?

brucetu12/15 15:55因為沒有大括號引發bug應該還是寫的人的問題 自己眼殘加

brucetu12/15 15:55上測試不足

brucetu12/15 15:56不過規定一律要加以防有人犯錯我是可以認同啦

robber123412/15 16:02kt style有指明可以單行不括號,不知道大家在激動啥..

baobomb12/15 17:21還是要看Team size啦 如果只是10-20個人維護的中小型專

baobomb12/15 17:21案 可能自己定好style 測試嚴謹就行 但如果是幾百人維護

baobomb12/15 17:21的超大型專案 不加真的很常被後面的人越寫越醜... 畢竟你

baobomb12/15 17:21不能保證所有人都跟你一樣 看到邏輯擴展時會reformat cod

baobomb12/15 17:21e 加上括號抽出邏輯 等到你回頭看的時候 常常已經面目全

baobomb12/15 17:21

baobomb12/15 17:21Kt style單行不加沒錯 但單行指的是你邏輯簡單到不行 而

baobomb12/15 17:21且確認不可能會擴展 不然基本上還是加了比較安全

superpandal12/15 18:13我也經常第1種寫法 第2種寫法是很浪費程式碼空間的

superpandal12/15 18:14而且也並不難懂 只是習不習慣有沒有偏見

superpandal12/15 18:15至於bug倒是不會 因為本例就是純粹指派值 如果有多餘

superpandal12/15 18:15的設置 當然用括號 也不會有人一連串if

stupid031912/15 18:16程度碼空間有限?

superpandal12/15 18:17比起這個我還覺得分號比較重要

superpandal12/15 18:18當然理論上沒上限 但你要好維護 當然要選擇當下條件

superpandal12/15 18:18下最簡潔的寫法

superpandal12/15 18:21boabomb說的還要糟過三元...

SHANGOYANYI12/15 20:11…這比三元還爛 把作用域包好很難嗎

CaptainTeemo12/15 22:06在某些條件下可以接受三元,但沒有大掛號不行

baobomb12/15 22:09樓上... Kotlin的if是表達式 所以沒有ternary operator J

baobomb12/15 22:09ava的三元 如果純賦值且邏輯簡潔的話沒什麼問題 但Kt你要

baobomb12/15 22:09賦值一行式就是得 if else

baobomb12/15 22:11你if else沒有大括號 後面絕對超容易被改爛 尤其是Kotlin

baobomb12/15 22:11這種語法 單幹就算了 幾百人寫的repo你不加 真的很容易被

baobomb12/15 22:11新人搞爛

kurtsgm12/15 23:32都要2023年了 什麼叫做浪費程式碼空間 XDDD

peter9812/16 00:52會在意程式碼空間多於維護性的 要嘛是在極為limited的資

peter9812/16 00:53源(ram, disk)下寫程式 要馬是每寫過百人以上專案 不然

peter9812/16 00:53就是程式寫得不好 通常是後兩者居多就是

peter9812/16 00:53 沒寫過*

peter9812/16 00:56寫節省程式碼 該用的是OO技巧 而不是在這方面計較

peter9812/16 00:57隨便做個refactor 把duplicate code拉到一個函式 節省

peter9812/16 00:57的空間至少是三元運算子能節省的好幾倍

peter9812/16 01:00跟薪水也依樣 很多人在討論好好幹IT 年薪150沒問題

peter9812/16 01:01殊不知豬屎屋的起薪一堆就幹掉150了 IT怎麼努力也沒用

peter9812/16 01:01就跟把if else改成三元運算節省空間依樣 沒用 太侷限

baobomb12/16 06:56同意樓上.. 程式碼空間應該靠的是oo 良好的DI 以及適當

baobomb12/16 06:56的refactoring.. 而不是什麼非得要一行.

icydream12/16 09:03google apple goto fail

gpctv12/16 10:05我被第一種寫法弄過

stellvia235912/16 10:46本來就該加括號,沒括號是在哭?

stellvia235912/16 10:47看到不加括號火都上來

s86013412/16 12:40擴充 會放陷阱害人

angusyu12/16 12:52Google的Java style確實有說都要加括號,但Kt style沒有.

angusyu12/16 12:54反正大家都按自己喜好跟公司傳統在吵,guidance沒人在乎

mmonkeyboyy12/16 15:25OO現在很多也推行少用...維護起來太煩了

pig003812/16 15:47leetcode 很常看到第一種寫法, 但是我不會在PROD幹這種事

pig003812/16 15:48在 OA 寫的時候我會先跟面試官聲明

pig003812/16 15:49因為 java 寫 leetcode 實在太囉嗦了

superpandal12/16 19:11java本身就是OO 你不寫OO也得OO 把相同的功能封裝是

superpandal12/16 19:12正常人都會做的事情 但用三元的例子本身就是單純案例

superpandal12/16 19:13重點這種簡易判斷出現不會只有一次 出現的很頻繁 省

superpandal12/16 19:15下的程式碼空間和看長程式碼需要的暫時記憶以及如果

superpandal12/16 19:16找程式碼都是有幫助的

superpandal12/16 19:17s/如果//

superpandal12/16 19:19java也並非只有OO 也可以搭配FP 不明白這年頭為何開

superpandal12/16 19:20口閉口OO以及DI 樓主的例子要擴充加括號就好 本身第1

superpandal12/16 19:20種寫法也不是什麼不常見的做法

superpandal12/16 19:30至於kt如果只能如此那就沒辦法 有沒有過譽嫌疑我不知

superpandal12/16 19:30道 但以這例子來說確實糟糕

peter9812/16 21:35正常人會括號

peter9812/16 21:35你應該是沒做過甚麼大project

peter9812/16 21:39你連括號都不知道要加 才跟你提OO 怕你不知道呀

superpandal12/16 22:10有阿 大型專案都很亂 你看一下樓主的例子 括號是否必

superpandal12/16 22:11要 要加括號的時候自然會加

superpandal12/16 22:12沒有人會覺得用第一種寫法 如果一樣條件要增加程式直

superpandal12/16 22:13接放下面會能跑的...

superpandal12/16 22:15查了一下 kt可以不用分號也可以用 但分號很好

superpandal12/16 22:18只有shell我才不加分號 因為它同行分割需要'\'

asadman152312/17 11:10要括號

asadman152312/17 11:11不喜歡每次還要去幫你加括號我才能塞其他東西

Dnight12/17 11:52不加括號以後需求改了要多加一行你不是還是要括號

Dnight12/17 11:53那你為什麼要省那個括號

michael0728n12/17 16:16Linux kernel style是換行不加括號,看話語權沒錯XD

viper970912/17 17:42推樓樓上

ohmylove34712/18 00:01如果要改再一起加好了不是?精簡時最精簡不是很好嗎

ohmylove34712/18 00:01

s895288912/18 00:20不懂少一個括號是有什麼好處?少打一些字??看了就賭爛