Re: [請益] 痾 遇到這種事情 是不是需要趕快離職了?
等等,我原本以為只是一個簡單的問題
居然歪樓了
推動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
我是AI王紫楓
你可以叫我AI王
也可以叫我AI王子
也可以叫我AI王子瘋
--
遇到if-else完整陳述語法就沒辦法這樣偷吃步了
Conventions?
senior 最大的問題是 知識的詛咒
每個都有else就不能像你說的這樣改
真的遇到這種狀況只能把條件參數化再寫成其他形式,就像r
oute一樣,但也有可能到最後你發現還是if else最好維護,
而且在某些很在意延遲的場景,if else更好
conversation
太多層就是 邏輯不夠明確 接手的人很痛苦
沒事找事,太閒
靠邊 手指太肥了點到conversation XD
我記得一個func裡多個return,這種方式不是不建議使用?
你說的可能是很久以前的寫法不建議使用
但現在為了readability, 都是用這種寫法
early return現在還滿常見的
一個func多個return滿常在leetcode most vote 看到
early return 還是要看一下返回的理由是什麼比較好.
一般的建議還是用在檢視輸入的資料有沒有符合規則.
然後,下面的例子有點極端 kubernetes裡的pc_controller.go
1714行,充滿if-else,作者一開頭就告訴你:別亂改,每個
if-else都有意義.
以原發文的例子而言,有沒有可能,就是因為junior,為了避
免犯錯,才大量使用if-else去描述每一個路徑?
如果不能return必須繼續做下去怎麼辦
我在c++裡面要解析json我都會先給一個if看欄位在不在
然後再一個if看到底是array還是object 再一個if看到底是
字串還是數字 最後才開始做事
C++ json還要手寫parser?
沒看過程式碼真的別太篤定對錯。
early return 感覺還比較適合多數情境,防呆機制比起
風格是更順暢的理由
推這篇
推 剛入行也是針對這點有被前輩教育過
後來也有像是用枚舉或是switch 來取代 if else
只能說原 po可能有盡力 但不是當事人不好評論
其實若if-else或switch裡面思路清楚 不會是個問題 而且就
我少少的經驗來說一但思路清楚 大概也不太會形成很深的
if/switch 很難用例子去闡述那種if顯示出來的思路雜亂跟
跟理解/修改的困難(更難驗證邏輯正確性)
@atst2 有可能是避免犯錯 但我也跟其他人一起討論當時案
例 一旦分析好狀況 可以寫出用少量的if/switch的同樣功能
也有分享給對方...比較難理解的是 下次遇到同樣需要分析
時 還是用同樣方式描述路徑是有點意外
補充:當然也不排除有上面提到的那種極端狀況. 至少不是現
在遇到的
我之前被review也是被教early return
請愛用策略工廠
你邏輯沒理清楚才會覺得 if else 是 must
怎麼會有人問必須做下去該怎麼辦…OMG…
Guard Clauses 跟 EAFP 有空可以去了解一下
三小,就是會有if else must的狀況啊
early return能提高程式碼的可讀性、維護性,而且
也可以減少不必要的計算資源
如果該函式的行為有清楚定義並做好單元測試,裡面if迴圈
複雜一點好像也還好。
不可能會有,另外寫一個 function 在那邊 early return
而已
不然你提出一個例子我們討論看看
這東西你最終只要注意是 Passing By Pointer 還是 Pass
ing By Reference 你就能做出你要的東西了
會寫成巢狀if 也可能是歷史造成的 前人寫 後人不敢動太大
你當然可以把內層的if-else拉出去另一個function取個名字
對於要trace整個狀況的開發者來說, 邏輯的複雜性沒有降低
有時候反而跳來跳去更痛苦
guard clause 不是蠻基本的嗎
guard clause, early return 都看情況不用在那邊文人相輕
五十步笑百步 一堆early return有比較好嗎
不好嗎? 哪個條件不要了就選起來刪掉就好,完全不用
研究那堆if else
if else 還不是一樣選起來刪掉-.-
真值表畫出來就知道你early return不會讓複雜度降低只是
程式碼語法差異而已
波動拳你怎麼選...
我之前也看過一堆goto差點自焚
坐等例子
early return 在做防呆類型好用,可以簡化if else,讓
邏輯清楚一點。
24
首Po小魯目前在一家還算大的公司工作 現在有兩三位頂大的junior的同事 寫程式的習慣讓我覺得是不是要趕快跑了 舉兩個例子好了 他們都喜歡if-else combo, 沒巢狀到波動拳那麼深 但就是動不動就if-else 三層 然後三層裡面還會再if-else 第二個例子就是如果有function 90%(50~100行)適合他們想要的用途,X
氣 : 公司也沒人想要當壞人 code review也沒人出聲 而且大家都知道 上市公司每個都喜歡 : 有學歷的人當門面 反正真正主力有人會扛 XDDDD : 每次改到他們經手過的code都很痛苦 若是要幫忙擦屁股根本擦不完阿 因為一直拉.... : 自己寶貴的時間也都被吃掉了7
我個人感覺程式語言也是有語感的 跟學歷關係不大 我自己碰過一種寫法 if 變數 == a print 甲.jpg if 變數 == b print 乙.jpg4
實況寫程式的 Tsoding 最新原型作品 - 多人遊戲的伺服器端與客戶端(Typescript) 一堆 if else 裡面還有 if else,最多好像是三層,應該還不至於看不懂,原型的標準 比較低,快速產出才是王道
95
[討論] 寫三元判斷式code review被打槍小弟寫java的 以前常常寫三元判斷式 就比如說 String a; if(con) {36
Re: [心得] 我在科技業遇到的鬼故事之一針對上一篇還是有人在追殺B我就閒來無事重申一下問題點在哪裡 很多人一直糾結於B有沒有複測、B有沒有去追這個Issue,我跟你說跨組合作不是這樣搞 滴 首先要先搞懂這個Ownership的問題 原Po是Feature Owner20
[心得] 2022年初面試心得過年後開始投遞履歷 Background:一年年資菜雞,剩下可以a我上一篇文章 --總覽-- 無消息 Carousell、Paypay(JP)、Mercari(JP)、報導者、Crypto.com12
Re: [請益] coding style差太多怎辦?原Po 研究過 Allman Style , K&R style, GNU style 還有 ISO c99 c++2011 c++2014 c++2022 實際撰寫過 Linux kernel, Zephyr, Android framework & App, Python3 for AI Scala for Risc-V, IOS Object-C .m .mm, tracing gcc source, C#, Inline assembly buildroot, bash, Makefile8
Re: [討論] 寫三元判斷式code review被打槍這種事情 不就和阿里巴巴一樣 一開始給大家一本手冊 哪些code 或是哪些style在本公司不要出現5
Re: [討論] 寫三元判斷式code review被打槍最近公司讀書會在看 Martin Fowler 的 Refactoring, 大概第九或第十章他有用到三元 sample code 大概是這樣 const price = summer()? summerPrice() : commonPrice(); 然後我們有看這串文章討論了一下4
Re: [轉錄] 竹科工程師是不是能用印度人取代?可以 之前在歐商軟體公司 長期跟mindtree這家公司合作 很多舊案子維護甚至都交給mt 了 像我待的案子快十人X
[請益] 前端第二份offer請益各位前輩大家好,小弟是前端web仔 簡單自我介紹 32y,中字輩理科碩士(非本科),已婚無小孩 自學後有幸進入金融新創公司擔任前端約1.5y,主用框架是Vue,有空時熟悉React 目前以下offer再考慮:2
Re: [討論] 用AI寫code產生的疑問今天剛好在它版討論AI寫Code,晃過來看到這邊也在聊, 小弟是個很久沒專注在Coding的前低階工程師,所以這篇文大神前輩們看看笑笑就好 主要來丟幾的AI Coding工具,這邊的朋友有興趣可以去玩玩看, 直接叫GPT4寫Code真的不會是個好用的方法。