※本記事は、Bardによる意訳+翻訳を活用し、レイアウト調整したものです。
※感想は、オリジナルです。
原文
Don't nest ternary operators. Please! - DEV Community
意訳+要約
三項演算子のネスト使用は避けるべきである
概要
三項演算子は、条件式の結果に基づいて、値を返すことができる便利な構文である。しかし、そのネスト使用は、コードの可読性や保守性を低下させる可能性があるため、避けるべきである。
三項演算子のネスト使用とは
三項演算子のネスト使用とは、三項演算子の中にさらに三項演算子を組み合わせて使用することである。例えば、次のコードは三項演算子のネスト使用である。
int x = (a > b) ? (c > d) ? 1 : 2 : 3;
このコードは、a > b の結果に基づいて、c > d の結果を返す。c > d の結果が true の場合は 1 を返し、false の場合は 2 を返す。
三項演算子のネスト使用の問題点
三項演算子のネスト使用には、以下の問題点がある。
コードの可読性が低下する
三項演算子のネスト使用は、条件式の構造が複雑になり、コードの可読性が低下する。保守性が低下する
三項演算子のネスト使用は、コードの変更や修正が困難になる。条件式の構造が複雑になると、条件式の変更や修正を誤る可能性が高くなる。パフォーマンスが低下する
三項演算子のネスト使用は、パフォーマンスが低下する可能性がある。条件式の評価が複数回行われるため、処理に時間がかかってしまう。
三項演算子のネスト使用を避ける方法
三項演算子のネスト使用を避けるには、以下の方法がある。
if-else 文を使用する
三項演算子のネスト使用を、if-else 文に置き換える。if-else 文は、条件式の構造が明確で、可読性や保守性に優れている。for ループや while ループを使用する
繰り返し処理を行う場合は、for ループや while ループを使用する。for ループや while ループは、条件式の構造が単純で、パフォーマンスにも優れている。関数を使用する
複雑な条件処理を行う場合は、関数を使用する。関数は、条件処理を単一のまとまりとして扱うことができるため、可読性や保守性に優れている。
まとめ
三項演算子は、便利な構文であるが、そのネスト使用は避けるべきである。三項演算子のネスト使用は、コードの可読性や保守性を低下させ、パフォーマンスにも悪影響を及ぼす可能性がある。
重要な部分
- 三項演算子のネスト使用は、コードの可読性や保守性を低下させ、パフォーマンスにも悪影響を及ぼす可能性がある。
- 三項演算子のネスト使用を避けるには、if-else 文、for ループ、while ループ、関数などの代替手段を使用する。
Bardさんに聞いてみた
Q:なぜ三項演算子をネストする人がいるのでしょうか?
三項演算子をネストする人がいる理由は、以下のようなものが考えられます。
記述量を減らしたい
三項演算子は、if-else 文よりも記述量が少ないため、短くしたい場合にネストされることがあります。処理を簡潔にしたい
三項演算子は、条件式の結果に基づいて、値を直接返すことができます。そのため、if-else 文よりも処理を簡潔にしたい場合にネストされることがあります。慣れ
三項演算子は、if-else 文よりも使用頻度が高い言語もあります。そのため、慣れているためにネストされることがあります。
しかし、これらの理由は、三項演算子のネスト使用の問題点を上回るものではありません。三項演算子のネスト使用は、コードの可読性や保守性を低下させ、パフォーマンスにも悪影響を及ぼす可能性があるため、避けるべきです。
以下に、三項演算子のネスト使用を避けるための具体的な方法をいくつか示します。
条件式を分割する
三項演算子の条件式を、複数の条件式に分割します。これにより、条件式の構造が単純になり、可読性や保守性が向上します。if-else 文を使用する
三項演算子のネスト使用を、if-else 文に置き換えます。if-else 文は、条件式の構造が明確で、可読性や保守性に優れています。関数を使用する
複雑な条件処理を行う場合は、関数を使用する。関数は、条件処理を単一のまとまりとして扱うことができるため、可読性や保守性に優れています。
Q:三項演算子をネストする人は、頭がいいアピールがしたいのだと思っています。意見を聞かせてください
三項演算子をネストする人が、頭がいいアピールをしたいのかどうかは、その人の意図次第だと思います。
三項演算子のネスト使用は、コードの可読性や保守性を低下させるという点では、頭がいいとは言えません。しかし、三項演算子のネスト使用を理解し、適切に使用することができれば、それはある程度のプログラミングスキルを示すことができます。
そのため、三項演算子のネスト使用をすることで、頭がいいアピールができると考える人もいるかもしれません。
しかし、頭がいいアピールをする方法は他にもあります。三項演算子のネスト使用は、その方法の1つに過ぎません。
もし、頭がいいアピールをするなら、コードの可読性や保守性を高める方法を理解し、実践することが大切だと思います。
感想+雑記
三項演算子をネストさせる実装は、たまに見かける。
個人的には、やっぱり、頭いいアピールがしたいのだと思っている。三項演算子のネストのコードを作った人を見てると、たいだい、プライド高そうな感じの人が多い印象がある。
かくいう俺も、使ったことがあるので、強い言葉で批判するのは忍びないが。。。
三項演算子を禁止にすればいいという意見もあるかも知れないが、三項演算子をシンプルに使う分には、かなり有用な記述だと思っている。
問題は、全体で見たときに、三項以上になってしまうこと。
シンプルに使うことを心がければ、可読性は、ついてくるはず。
なぜ、難しく感じるかというと、意外と人間の脳は、複数のことを同時に考えることができないから。
考える項目が増えれば増えるほど、キャパオーバーになる。
3つというのが、シンプルさを保つ最大数だと思っている。
なぜ、3なのかは知らないが、おそらく、人間の本能的なものに刻まれているのだろう。
遊戯王でも、神のカードは3枚だからな。
3以上にしてたら、初見で覚えにくいのだろう。
とりあえず、使えるものはシンプルに使え。
凝った使い方をすれば、それは巡り巡って自分の首を締めることを忘れてはいけない。