「js三元運算子」的推薦目錄:
- 關於js三元運算子 在 コバにゃんチャンネル Youtube 的最佳貼文
- 關於js三元運算子 在 大象中醫 Youtube 的最佳解答
- 關於js三元運算子 在 大象中醫 Youtube 的最讚貼文
- 關於js三元運算子 在 Re: [討論] 寫三元判斷式code review被打槍- 看板Soft_Job 的評價
- 關於js三元運算子 在 React小技巧(3) - 三元運算子Ternary Operators - YouTube 的評價
- 關於js三元運算子 在 7 JS三元運算子 - YouTube 的評價
- 關於js三元運算子 在 JS 核心觀念筆記- 運算子 的評價
- 關於js三元運算子 在 js三元運算子的問題包括PTT、Dcard、Mobile01 的評價
- 關於js三元運算子 在 js三元運算子的問題包括PTT、Dcard、Mobile01 的評價
- 關於js三元運算子 在 js三元運算子的問題包括PTT、Dcard、Mobile01 的評價
- 關於js三元運算子 在 【 程式教學】給初學者的JavaScript 6 小時教學 - Facebook 的評價
- 關於js三元運算子 在 coding-standards/legacy/javascript.md at master - GitHub 的評價
js三元運算子 在 大象中醫 Youtube 的最佳解答
js三元運算子 在 大象中醫 Youtube 的最讚貼文
js三元運算子 在 React小技巧(3) - 三元運算子Ternary Operators - YouTube 的推薦與評價
今天要來介紹在React中常使用到的 Javascript 語法- 三元運算子 Ternary Operators ... ... <看更多>
js三元運算子 在 7 JS三元運算子 - YouTube 的推薦與評價
Share your videos with friends, family, and the world. ... <看更多>
js三元運算子 在 Re: [討論] 寫三元判斷式code review被打槍- 看板Soft_Job 的推薦與評價
這邊不針對效能,也不針對說階層太多,應該用什麼方式重構之類的
只是看到有人提到巢狀的三元運算子,閱讀性太差,應該改回用if else寫
我只是好奇兩者的可讀性有差很多嗎?
以下只是舉例,不是指實務上會真的這樣寫
(1) 三元運算子:
int i = condition1
? condition2
? condition3
? 1
: 2
: 3
: 4;
(2) if else:
int i;
if (condition1) {
if (condition2) {
if (condition3) {
i = 1;
} else {
i = 2;
}
} else {
i = 3;
}
} else {
i = 4;
}
單就上面的範例來說,我覺得兩者可讀性差不多,還是只是因為我看習慣產生的錯覺 XD
以我自己的觀點來看,像這種條件式指派單一變數值的情境,三元寫起來比較順手
也不用擔心像在寫 if else 時,因漏寫了 else 導致有情況沒指派到值
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 203.204.160.44 (臺灣)
※ 文章網址: https://www.ptt.cc/bbs/Soft_Job/M.1672157770.A.D00.html
老實說我也是覺得明顯一比較好啊
只是看前面文章和推文,想說講差不多來測一下風向 XD
實務上來說我也是會用 Array Map,或是拆成 Function 來攤平巢狀結構
大部分的情況下寫到兩層就是極限
而且真寫成巢狀,以這案例會在 Condition 加 Not 來對調順序
所以從推文來看,問題點不在巢狀三元,而是只要是寫成多重巢狀都不好閱讀
有些情境在相同結構下,反而有人會覺得改寫 if else 卻降低可讀性
就看到前面說巢狀三元可讀性劣於if else
所以故意寫一個很醜的結構來看一下相同結構下,是否真的三元比較難閱讀 XD
我認真說,如果是專案公司,你可能高估了正常人的水平了
多的是能動就好(嘆氣
以我的經驗,我之前同事如果修改要在 if 內部加判斷就直接加了
多半不會條件反轉
另外 else if 本身就是巢狀的,有些程式語言本身沒有提供 else if 語法
它們的 else if 是以下程式碼排版後產生看起來攤平的效果
if (condition1) {
} else {
if (condition2) {
}
}
而且兩種寫法都反轉後,if else 也真未必有比較好閱讀
例如:
三元運算子:
int i = condition1
? 1
: condition2
? 2
: condition3
? 3
: 4;
if else:
int i;
if (condition1) {
i = 1;
} else if (condition2) {
i = 2;
} else if (condition3) {
i = 3
} else {
i = 4;
}
剛 Google 一下,Guard Clauses 我也很愛用
只是我之前不知道它叫 Guard Clauses
這邊來說明一下 else if 是怎麼來的
1.
完整程式長這樣:
if (condition1) {
} else {
if (condition2) {
} else {
}
}
2.
我們已知 else 後面只有單行可以不用加大括弧,而 if else 語句將之視為一個單行
所以我們將第一個 else 的大括弧去掉變成以下這樣
if (condition1) {
} else
if (condition2) {
} else {
}
}
3. 最後再用排版將第二個 if 放置在第一個 else 後面,else if 就誕生了
if (condition1) {
} else if (condition2) {
} else {
}
所以我前面說 else if 本質上還是巢狀結構,只是靠排版攤平
不過有些程式語言像 PHP 是真的有提供 elseif 這個關鍵詞
本文一開始就加一堆但書,並註名只是舉例,非實務上的寫法 XD
實際上當然是 Array Map、Function 和 Guard Clauses 等方法來優化寫法 XD
推文提到的比較好的寫法,才是我實務上真正在寫的
大部分情況我最多只會寫到兩層,且不會用成波動拳結構
我只是因為前面文章有推文提到巢狀三元運算子容易漏看,且不好閱讀
而改回寫成 if else
關於容易漏看這部分我是疑惑為什麼會容易漏看
至於可讀性部分,兩種方法當然都很糟
但看起來也不是每個人都認為巢狀 if else 可讀性優於巢狀三元運算子
實際上真正影響閱讀的多層巢狀這件事,真的多層巢狀起來
if else 和 三元運算子都不好閱讀
※ 編輯: CloudyWing (203.204.160.44 臺灣), 12/28/2022 23:35:33
... <看更多>