[過去ログ]
PHP質問・雑談スレ4【初心者お断り(ROM歓迎)】 [無断転載禁止]©2ch.net (1002レス)
PHP質問・雑談スレ4【初心者お断り(ROM歓迎)】 [無断転載禁止]©2ch.net http://medaka.5ch.net/test/read.cgi/php/1498653249/
上
下
前
次
1-
新
通常表示
512バイト分割
レス栞
このスレッドは過去ログ倉庫に格納されています。
次スレ検索
歴削→次スレ
栞削→次スレ
過去ログメニュー
604: 580 [sage] 2018/07/22(日) 23:19:58 ID:??? 一番上がおかしかった if (age < 18) { if (gender == 'male') { title = 'Master'; } else { title = 'Miss'; } } else { if (gender == 'male') { title = 'Mr'; } else { title = 'Ms'; } } やっぱこれは俺にはあってないな http://medaka.5ch.net/test/read.cgi/php/1498653249/604
605: nobodyさん [sage] 2018/07/22(日) 23:20:56 ID:??? 一番下もおかしいんだが php書けないのか http://medaka.5ch.net/test/read.cgi/php/1498653249/605
606: 580 [sage] 2018/07/22(日) 23:25:42 ID:??? >>605 これPHPじゃないし 三項演算子の可読性について、stackoverflowで引き合いに出されてたコード PHPは評価の仕方が他の言語と違うので そもそも一番下のようなコードは書いたことがない http://medaka.5ch.net/test/read.cgi/php/1498653249/606
607: nobodyさん [sage] 2018/07/22(日) 23:33:07 ID:??? >>602 同意 ネストしないなら3項演算子がシンプルでよいがネストさせるヤツは死ねと思ってしまう http://medaka.5ch.net/test/read.cgi/php/1498653249/607
608: nobodyさん [sage] 2018/07/22(日) 23:37:49 ID:??? 俺Pythonistaだけど、{}が読みづらい原因だから、こうするといいよ。 if ($age < 18) if ($gender == 'male') $title = 'Master'; else $title = 'Miss'; else if ($gender == 'male') $title = 'Mr'; else $title = 'Ms'; http://medaka.5ch.net/test/read.cgi/php/1498653249/608
609: nobodyさん [sage] 2018/07/22(日) 23:43:15 ID:??? PSR-2>呼んだ? http://medaka.5ch.net/test/read.cgi/php/1498653249/609
610: nobodyさん [sage] 2018/07/22(日) 23:59:30 ID:??? $titles = [ 'male' => [ 'u18' => 'Master', 'other' => 'Mr' ], 'female' => [ 'u18' => 'Miss', 'other' => 'Ms' ], ]; $age_category = ( $age < 18 ) ? 'u18' : 'other' ; // もしくは if( $age < 18 ) $age_category = 'u18'; else $age_category = 'other'; $title = $titles[ $gender ][ $age_category ]; 一定以上複雑なときはこうしておくかな 判断が増えたとき処理構造を大変更したくないから というか、性別やu18かどうかをフラグで持っておくのが普通だと思うが 三項演算子だとすごく短い2つの文字列どちらか選択とかならまだいいけど 関数や式が絡むと : の区切りがわかりづらくなるんだよな http://medaka.5ch.net/test/read.cgi/php/1498653249/610
611: nobodyさん [sage] 2018/07/23(月) 00:00:45 ID:??? 実務的にはそれぞれ属性を自分のobjectに聞いて、って感じのが多いかな http://medaka.5ch.net/test/read.cgi/php/1498653249/611
612: nobodyさん [sage] 2018/07/23(月) 00:14:43 ID:??? stackoverflow探してみたけどそれっぽいのが見つからないわ http://medaka.5ch.net/test/read.cgi/php/1498653249/612
613: nobodyさん [sage] 2018/07/23(月) 00:48:54 ID:??? https://www.quora.com/Does-using-the-ternary-conditional-operator-negatively-impact-code-readability stackoverflowではないな http://medaka.5ch.net/test/read.cgi/php/1498653249/613
614: nobodyさん [sage] 2018/07/23(月) 01:16:15 ID:??? echo 'こんにちは、' . ($name && strlen($name) > 0) ? trim($name) : "anonymous" . "さん"; $name = ($name && strlen($name) > 0) ? trim($name) : "anonymous"; echo "こんにちは、{$name}さん"; var = a ? b : c;を徹底して、 それ以外を組み込んだ、上のような使い方をしなければ問題ないと思う。 Viewには処理済み変数のみを埋め込むのを徹底すればいい。 http://medaka.5ch.net/test/read.cgi/php/1498653249/614
615: nobodyさん [sage] 2018/07/23(月) 01:22:26 ID:??? 表示名の場合はだいたい $nameを先に'anonymous'で初期化しておいて セッションがあってDBから取ってくる等の時に$nameを上書きする ってやるよね http://medaka.5ch.net/test/read.cgi/php/1498653249/615
616: nobodyさん [sage] 2018/07/23(月) 01:27:12 ID:??? そだねー http://medaka.5ch.net/test/read.cgi/php/1498653249/616
617: nobodyさん [sage] 2018/07/23(月) 01:27:21 ID:??? 条件2つ処理する2x2の構図でも 条件1の結果によって条件2の式自体が変わる場合は Balancedケースでも可読性落ちるよね http://medaka.5ch.net/test/read.cgi/php/1498653249/617
618: nobodyさん [sage] 2018/07/23(月) 01:44:19 ID:??? 三項演算子を使うときに可読性が落ちない条件を突き詰めていくと 一重であることと 代入される部分が簡潔で統一されてることのほかに 条件部分が簡潔で統一されてることも必要だと思うんだ 18<=ageのときは性別にunknownやnewhalfが追加されたら、途端に難解になるし age<18ではgender==='male'だけど18<=ageではchecktitle(age,gender)の戻り値だったりすると、わりとめちゃくちゃ でもそうするとvar=(a)?a:20;みたいな条件になりがちになって 短絡評価のわかりにくさの話に戻るんだよね $var = (expr) ? value1 : value2 ; みたいな書き方だったら多少複雑でもいい http://medaka.5ch.net/test/read.cgi/php/1498653249/618
619: nobodyさん [sage] 2018/07/23(月) 01:46:11 ID:??? 簡潔じゃないと1重なのか2重3重になってるのかパッと見てわからないからな その辺ifでは迷ったことがあまりない http://medaka.5ch.net/test/read.cgi/php/1498653249/619
620: nobodyさん [sage] 2018/07/23(月) 06:55:36 ID:??? > 18<=ageのときは性別にunknownやnewhalfが追加されたら そこまでくると>>603が良さそう 1(under18) 2(over18) 4(male) 8(female) 16(unknown) 32(newhalf) ちなみにnewhalfじゃなくて shemaleとかladyboyが正しいおっぱいおちんちんMAN http://medaka.5ch.net/test/read.cgi/php/1498653249/620
621: nobodyさん [sage] 2018/07/23(月) 07:10:51 ID:??? なんだそれは ageもgenderも1つに閉じ込めてbit演算するならunder18/over18は下位1bit、genderは以降上位bit、ってとこだろう maleやfemaleを両方選択可能の並存状態にしてどうするんだよ 2値が1種、4値が1種なら3bitで済むだろう http://medaka.5ch.net/test/read.cgi/php/1498653249/621
622: nobodyさん [sage] 2018/07/23(月) 07:29:32 ID:??? そもそも話題が>>618の趣旨とは離れることだが、1点付け加えると 条件がどう動くかわからず拡張性を考えるのであれば 愚直にifやswitchで構造化するか >>610のように1つ1つ条件を絞れば引き当てられるtableを作るのが筋だろう ageの判定処理は完全固定と断定できないだろうし age自体を現在日付とユーザ誕生日設定によって動的に取得させることになる可能性がある フラグ化してのbit演算では柔軟性・拡張性に乏しい、全然良さそうじゃない http://medaka.5ch.net/test/read.cgi/php/1498653249/622
623: nobodyさん [sage] 2018/07/23(月) 09:03:36 ID:??? えせグラマ http://medaka.5ch.net/test/read.cgi/php/1498653249/623
メモ帳
(0/65535文字)
上
下
前
次
1-
新
書
関
写
板
覧
索
設
栞
歴
あと 379 レスあります
スレ情報
赤レス抽出
画像レス抽出
歴の未読スレ
AAサムネイル
Google検索
Wikipedia
ぬこの手
ぬこTOP
0.020s