[請益] 比較值放左邊 變數放右邊

看板Soft_Job作者 (300plus)時間5年前 (2019/05/03 16:15), 5年前編輯推噓47(49267)
留言118則, 71人參與, 5年前最新討論串1/1
Hi 軟工板 All, 最近看到一種coding style如 if (True == var1) 就是比較的值放在左邊,變數放在右邊 一直覺得不太習慣 過往寫程式都是變數放左邊 想問各位大大這是有什麼好處 是跟lvalue, rvalue有關嗎 ? 還是其實根本沒差就是一種coding習慣而已 ? 想請各位解惑,謝謝 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 60.250.185.98 ※ 文章網址: https://www.ptt.cc/bbs/Soft_Job/M.1556871309.A.605.html

05/03 16:17, 5年前 , 1F
怕==寫成=而已
05/03 16:17, 1F

05/03 16:18, 5年前 , 2F
可以避免一些crash的情況
05/03 16:18, 2F

05/03 16:20, 5年前 , 3F
豁然開朗!! 如果寫錯成= compiler就會噴error 感謝回答
05/03 16:20, 3F

05/03 16:20, 5年前 , 4F
這樣寫 compiler 可以幫你抓 == 寫成 =
05/03 16:20, 4F

05/03 16:23, 5年前 , 5F
yoda notation
05/03 16:23, 5F

05/03 16:23, 5年前 , 6F
www.yinwang.org/blog-cn/2013/04/16/yoda-notation
05/03 16:23, 6F
有趣

05/03 16:28, 5年前 , 7F
其實不推薦這種 應該以可讀性為最重要 現在的compiler 設定
05/03 16:28, 7F

05/03 16:28, 5年前 , 8F
warming as error 後這種typo都可以抓出來
05/03 16:28, 8F
的確可讀有點差,但若是內部寫的compiler不一定那麼完善

05/03 16:48, 5年前 , 9F
某些語言undefined變數這樣寫不會crash 反過來就會了
05/03 16:48, 9F

05/03 16:50, 5年前 , 10F
原來有這種防呆的方式0.0 但覺得好不順眼
05/03 16:50, 10F

05/03 16:56, 5年前 , 11F
好不順眼啊..頭痛
05/03 16:56, 11F

05/03 16:56, 5年前 , 12F
yoda?
05/03 16:56, 12F

05/03 16:59, 5年前 , 13F
我是比較喜歡判斷式裡面不要塞等號啦XD
05/03 16:59, 13F
這個也會有問題吧 例如非零值在if內都會是True,這個不見得是預期的結果

05/03 17:08, 5年前 , 14F

05/03 17:22, 5年前 , 15F
我還看過等於放左右兩邊的咧
05/03 17:22, 15F

05/03 17:22, 5年前 , 16F
=OO=
05/03 17:22, 16F
天賦不夠高,這是啥意思XDDD

05/03 19:27, 5年前 , 17F
coverity這種靜態分析工具應該可以抓出來if(a=b)
05/03 19:27, 17F

05/03 19:27, 5年前 , 18F
都出來工作了 怎麼還會 == 寫成 =
05/03 19:27, 18F
越是簡單的bug越是可怕啊wwww

05/03 20:07, 5年前 , 19F
我也習慣倒過來寫,這樣有影響可讀性喔?
05/03 20:07, 19F

05/03 20:11, 5年前 , 20F
以前windows 派 code complete裡面推薦這種寫法 防衛性程式
05/03 20:11, 20F

05/03 20:11, 5年前 , 21F
? 但後面出的軟體書 大部分都不推薦此法
05/03 20:11, 21F
防呆 vs 可讀性 都幾?

05/03 20:14, 5年前 , 22F
有誰寫code不手殘
05/03 20:14, 22F

05/03 20:16, 5年前 , 23F
等號內可以賦值的語言才會這樣寫
05/03 20:16, 23F

05/03 20:17, 5年前 , 24F
有時要賦值 有時要做判斷 難免搞混
05/03 20:17, 24F

05/03 20:17, 5年前 , 25F
if 內才對 打錯抱歉
05/03 20:17, 25F
※ 編輯: k300plus (180.177.0.139), 05/03/2019 20:30:51

05/03 20:33, 5年前 , 26F
很不直覺,第一次看覺得傻眼
05/03 20:33, 26F

05/03 20:44, 5年前 , 27F
if( a == 0 ) 不要用 if(a) 這是可以解決的
05/03 20:44, 27F

05/03 20:45, 5年前 , 28F
看個人習慣囉
05/03 20:45, 28F

05/03 20:45, 5年前 , 29F
這種寫作習慣沒對錯 沒bug 就好
05/03 20:45, 29F

05/03 20:54, 5年前 , 30F
我都寫 = =
05/03 20:54, 30F
Build code team就= =

05/03 21:04, 5年前 , 31F
用.equals()會放左邊
05/03 21:04, 31F
還有 47 則推文
還有 3 段內文
05/04 09:48, 5年前 , 79F
與其計較這個,不如好好規範變數命名規則
05/04 09:48, 79F

05/04 09:49, 5年前 , 80F
專案變大會讓人困擾的,這還排不上前10
05/04 09:49, 80F

05/04 10:41, 5年前 , 81F
以前看過才知道是防 null 但是最後自己還是只能接受一半
05/04 10:41, 81F

05/04 10:47, 5年前 , 82F
請問我寫C和C#的做法是bool isChecked=(varA==5); i
05/04 10:47, 82F

05/04 10:47, 5年前 , 83F
f isChecked {...}這樣不就兼顧防呆和可讀嗎?
05/04 10:47, 83F

05/04 11:11, 5年前 , 84F
搜尋Yoda condition
05/04 11:11, 84F

05/04 11:18, 5年前 , 85F
我自己是不推薦啦 但如果出錯的確很好抓 不過經驗夠
05/04 11:18, 85F

05/04 11:18, 5年前 , 86F
之後其實這種錯也很好抓
05/04 11:18, 86F

05/04 11:23, 5年前 , 87F
如果真的寫錯應該在unit test就發現了吧?我選可讀性
05/04 11:23, 87F

05/04 12:07, 5年前 , 88F
這是面試必考題欸
05/04 12:07, 88F

05/04 12:37, 5年前 , 89F
看久就習慣了 自動兩邊swap...
05/04 12:37, 89F

05/04 14:56, 5年前 , 90F
一般ide會設定if不能assign
05/04 14:56, 90F

05/04 16:02, 5年前 , 91F
面試白板題這樣寫 是加分的好嗎 紅明顯
05/04 16:02, 91F

05/04 16:26, 5年前 , 92F
防禦性寫法 讓編譯器遇到 True = var 的typo報error
05/04 16:26, 92F

05/04 16:42, 5年前 , 93F
個人也是不推薦這樣的寫法
05/04 16:42, 93F

05/04 17:44, 5年前 , 94F
面試遇過這問題,顯示出公司code品質管理很差
05/04 17:44, 94F

05/04 17:44, 5年前 , 95F
應該是地雷公司才會問
05/04 17:44, 95F

05/04 18:16, 5年前 , 96F
以前會用這招,後來發現一些compiler或是ckeck coding s
05/04 18:16, 96F

05/04 18:16, 5年前 , 97F
tyle對這些寫法會跳warning, 後來就不寫了
05/04 18:16, 97F

05/04 19:01, 5年前 , 98F
attraction 大 方便透露是哪家公司這樣寫可以加分嗎
05/04 19:01, 98F

05/04 19:07, 5年前 , 99F
話說防禦性寫法有沒有書籍或資料專門講的啊?
05/04 19:07, 99F

05/04 19:58, 5年前 , 100F
==
05/04 19:58, 100F

05/04 20:56, 5年前 , 101F
有規則是可以抓 if條件裡面只用一個=的嗎? 另外也有
05/04 20:56, 101F

05/04 20:56, 5年前 , 102F
點好奇是什麼樣的情況下才會真的想要在if條件裡面賦值
05/04 20:56, 102F

05/04 20:56, 5年前 , 103F
XD?
05/04 20:56, 103F

05/04 21:01, 5年前 , 104F
不等於0就不進入的那種是可以啦。
05/04 21:01, 104F

05/04 21:01, 5年前 , 105F
但有CodeReview的話多半會被擋下來吧....
05/04 21:01, 105F

05/04 21:01, 5年前 , 106F
說錯,等於0就不進入
05/04 21:01, 106F

05/04 21:31, 5年前 , 107F
映像中 code complete 有在講
05/04 21:31, 107F

05/04 21:43, 5年前 , 108F
不順眼沒錯,但是編譯期就幫你防錯概念很好
05/04 21:43, 108F

05/04 23:38, 5年前 , 109F
不以為然的人,似乎都忘了對SQL和VB這些不用==做比
05/04 23:38, 109F

05/04 23:38, 5年前 , 110F
對的語言,這種防禦是很有實際價值的
05/04 23:38, 110F

05/05 00:10, 5年前 , 111F
重點不是 == 寫成 =, 重點是 = (assign operator) 有回
05/05 00:10, 111F

05/05 00:12, 5年前 , 112F
傳值. VB和SQL跟本沒這問題, 有個屁價值?
05/05 00:12, 112F

05/05 18:16, 5年前 , 113F
跩成那樣 大概沒寫過其他語言 笑死
05/05 18:16, 113F

05/06 12:11, 5年前 , 114F
原來可以防bug 但很不習慣…
05/06 12:11, 114F

05/07 16:03, 5年前 , 115F
我一直以來都無法理解會怕==寫成=的人到底是有什麼問題
05/07 16:03, 115F

05/07 16:04, 5年前 , 116F
我知道有些語言可能沒有夠好的compiler跟IDE幫你擋掉
05/07 16:04, 116F

05/07 16:04, 5年前 , 117F
但高階語言還在用這種寫法就讓人匪夷所思
05/07 16:04, 117F

05/18 01:53, 5年前 , 118F
同樓上
05/18 01:53, 118F
文章代碼(AID): #1So_YDO5 (Soft_Job)