【初心者向けプログラミング講座】美しいif文を書こう!【ひろはす】

Поделиться
HTML-код
  • Опубликовано: 30 окт 2024
  • НаукаНаука

Комментарии • 71

  • @toumorokoshi111
    @toumorokoshi111 Год назад +9

    このearly returnとかガード節とか言われてるテクニック、不具合が出たときに必要以上にコードを追わなくていい点と、elseが必要になったときに迷いづらい点が非常に良い

  • @ziroura
    @ziroura Год назад +32

    みんなリーダブルコード読もう

  • @kumao230
    @kumao230 Год назад +13

    ダラダラ長くなりがちなプログラミング解説動画をこんなに短くピンポイントでとても実用的にまとめたのは凄い!
    今後にめちゃめちゃ期待してます!!

  • @sankakuonigiri
    @sankakuonigiri Год назад +4

    スパゲティコードに悩まされていたため、非常に助かります。

  • @powo6106
    @powo6106 Год назад +4

    これはめっちゃわかりやすい!
    非常に助かりました!!

  • @Chisataki-is-god
    @Chisataki-is-god Год назад +10

    「IsDead()」のようにネガティブを判定するより、「IsAlive()」のようにポジティブを判定した方が直感的で親切かもしれませんね。
    やりたいことを抽象化すると「命があるかどうか」を判定したいということになりますので、
    true(真) -> 命がある
    false(偽) -> 命がない
    とする方が、名前(目的)と結果(戻り値の意味)が直感的に結びつきやすく、自然な表現になります。
    「IsEnable()」「IsVisible()」のように、ポジティブを判定する事例は多くありますが、無効な値であるか確認する「IsInvalid()」のように、ネガティブを判定する方が意味が通りやすい事例もありますので、使い分けが難しいですが、、、、、

  • @qawsklp
    @qawsklp Год назад +1

    早期return は読みやすいのもあるけど、エラー時に何もしないというのがはっきりわかるので理解しやすいですね...

  • @はてなインコ
    @はてなインコ Год назад +2

    私もearly return肯定派です。
    想定している正常系でのreturnなら問題無いと思います。
    ただ、インスタンスが無い等異常系のreturnの時に何のエラーログも無いままreturnしているプロジェクトの不具合修正に苦戦した事があるので、異常系のreturnをする場合はエラーログ等を出すようにしておいた方が将来的にみんな幸せになると思います。

  • @KK-xn4cm
    @KK-xn4cm Год назад +9

    このコーナー続けて欲しい!

  • @donguri_papa
    @donguri_papa Год назад +4

    自分で、まさに読みにくいif分を書いていて、読みにくいな~っと思っていました。
    なるほど、とても読みやすいですね!実践していきます!!

  • @survible
    @survible Год назад +1

    普段はscriptを書くくらいでしたがとても勉強になりました……!

  • @Bdash9928
    @Bdash9928 Год назад +1

    この書き方だと、後で条件を追加しても可読性が変わらないのが良いですね。
    論理演算子で横に繋げるのはカッコよく見えますが、条件が増えるほど「これは一体何を判定したいんだ……?」と読みにくくなっていくという罠……
    あとは、「isDead」という名前を付けてあげることで、「もし死んでいたら」と英文を読むようにコードを読めるという利点もありますね。

  • @Koh_Wiz
    @Koh_Wiz Год назад +2

    複雑なフラグ管理の場合には、テーブル化して参照ってのもありなんですよねぇ

  • @nthdthdyjsehsnw4ethwbt
    @nthdthdyjsehsnw4ethwbt Год назад +7

    素晴らしいコンセプトですね!if文の頻度は他と比べ物にならないですからね!

  • @成瀬裕紀
    @成瀬裕紀 Год назад +2

    さっそくUnityのプログラムを書きかえました~すげぇ参考になる。。

  • @numberprime9917
    @numberprime9917 Год назад +4

    カッコを開けるんじゃなく
    カッコを閉じるんですね!😮
    結構使えそう!

  • @tarokun5532
    @tarokun5532 Год назад +3

    他に人も書いてますが、update処理は生きてたら行うのが流れ的には美しいかも。

  • @KiibooGame
    @KiibooGame Год назад +3

    参考になります〜🎉

  • @heike_story
    @heike_story Год назад +1

    ソースコード整理は至上の喜び

  • @Rey-pd4gc
    @Rey-pd4gc Год назад +5

    最近始めた初心者なんですが条件を一つのかっこの中で&&でつなげるのはダメなんですか?

    • @harumakimaki
      @harumakimaki Год назад +2

      動くのは大前提として、
      デバッグがしやすい、あとから見返しても読める、他人が読んでも読める
      などの条件が揃ってれば、個人的にはいいと思いますよ

    • @Rey-pd4gc
      @Rey-pd4gc Год назад +1

      はえ〜 勉強になるわ サンガツ

  • @falconno6554
    @falconno6554 Год назад

    3:38 そこの関数名はIsDead じゃなくてIsAliveのように肯定的な単語にした方がいいと思いますよ
    今回の使い方はearly returnとしてなので、「○んでたら終了する」というより「生存していなければ終了する」とした方が可読性上がりそうですね(from リーダブルコード)
    P.S. 他のコメ読んだらすでに書かれていた…

  • @applepi314root
    @applepi314root Год назад +3

    こういうのほんとに助かる。
    いつ知らぬ間にクソコード書いてるか不安になる時あるのでこういうのありがたいです。
    ダウンロードしたので複数回聞いてみるようにします

  • @minolisnull1046
    @minolisnull1046 Год назад +1

    この手法p5.play(js)でも使えますか?

  • @落雁ドロップ
    @落雁ドロップ Год назад +2

    ガード節って学校の教員とかには使っちゃダメっていう人が居るんですよね(ゲーム系にはいないのかも)

  • @ps4youtube925
    @ps4youtube925 11 месяцев назад +1

    久しぶりに覗いてみました。今回の動画良かったです。
    正直ひろはすさんってあんまプログラミング得意じゃないのかと思ってました。
    動画もゲームクリエイターの話とか売上る話とか、ゲームエンジンの利用法とか紹介とかそういうのばかりだったんで。
    プロデューサーでもゲームデザイナーやクリエイターではあるわけですから、実際プログラミングしてるんは別の人かなとか。
    unityでゲーム制作の講座見たいなら一から作りながら解説してる他のチャンネル見たほうが
    ぜんぜん有意義だと思って、いつの間にか他のチャンネルに行ってました。
    スクール開校されたんですね。
    今後はプログラミング講座の動画を増やして欲しいです。そのほうが今よりも説得力もでると思います。

  • @Pascal_123
    @Pascal_123 Год назад +1

    うう、if・if else・else文のなかにさらにif・if else・else文が2、3階層ネストしてたプログラムの修正が必要になった時があって大変だっと記憶が w
    if分を取っ払って全ての変数毎に取りうる状態を洗い出して、配列に突っ込んですべての組み合わせ網羅して、配列の何番目に該当するかで処理を切り替えるって感じに全面的に変更したような。

  • @fg-3590
    @fg-3590 Год назад +7

    個人的には修正後の方がバグが出やすいと思います。
    特に1つの関数の中に複数のreturnが出てくるのが逆に追いにくくする要因かと。

  • @来世に期待
    @来世に期待 Год назад

    とても参考になります!(悪い例の分岐書いちゃってた)
    関数化とreturnと返り値をまだまだ使いこなせません💦

    • @Shishamoequalroot-1equali
      @Shishamoequalroot-1equali Год назад

      とりあえずreturn(返り値)は関数を呼び出された時に返す数値のことですね。
      例(C言語(これはadd関数(足し算して計算結果を返す関数)を作ってみたやつ))
      #include
      int add(int a, int b);
      int main(){
      printf("1 + 1 = %d
      ", add(1, 1));
      }
      int add(int a, int b){
      return a + b;
      }
      みたいな感じ

  • @明日から本気出す-c1r
    @明日から本気出す-c1r Год назад

    今度ゲーム系(cg)の専門学校にオープンキャンパスに行くのですが、これだけは聞いとけ!!的なものはありますか?

    • @hirohasu
      @hirohasu  Год назад

      実績は聞いておきましょう!
      去年の卒業生何人で、その内何人ゲーム会社入ったかは聞いておいた方が良いと思います👍

  • @e-keii
    @e-keii 10 месяцев назад +1

    &&を使ってはいけないんですか?

    • @suzuha_lilybell
      @suzuha_lilybell 23 дня назад

      いけないのか? と聞かれたら、生成されるオブジェクトコードは同じだから問題ない、が回答になるかと思います。
      では何故例題のコードでは使わないのか、と言うと3つの変数に関連性が無く独立したものだからです。
      質問される時でも、全然関係ない事を3ついっぺんに聞かれるくらいなら1つ1つ順番に聞かれた方が答えやすいでしょう。そうやって理解しやすくなるように工夫しているんです。
      最後に&&を使った方がいい場合ですが、変数が同一または関連性が強い時は&&でまとめます。例えば、残り時間が5分~10分の範囲内なら覗けるムフフなお風呂イベントを考えます。
      この時、残り時間が「5分以上」と「10分以内」に分割して考える事はあまりしませんよね。「5分~10分」→「5分以上『かつ』10分以内」と考えるのが自然です。
      ここで『かつ』が出てきたのでそれを『&&』に置き換えて条件文は完成です。
      要は会話なんです。「こんな感じで話したら伝わりやすいかな?」とあれこれ工夫するのと一緒ですね。

  • @user-tanatoi
    @user-tanatoi Год назад +1

    丁度C♯学習してて.netとはとかキャストとはとか読んでて挫折しそうです

  • @シャボン-h7z
    @シャボン-h7z Год назад

    大学卒で中小企業のゲーム業界にプログラマーとして入るのは難しいですか?

    • @hirohasu
      @hirohasu  Год назад

      同じ実力ならむしろ大卒の方が優遇されると思います👌

  • @ayumuhitori8149
    @ayumuhitori8149 Год назад +2

    即リターンは個人なら良いけど、会社だと新人とかがコード読め無さすぎてリターン後に処理書いたりするからバグの温床になる(海外にソース渡したときもそう)。
    アホみたいな話だけどガチで有る。やるなら先頭でエラー処理する時だけの方がいい

    • @ぐんまきりお
      @ぐんまきりお Год назад

      同意です
      基本的に途中でのリターンはその後の処理が単純に不要と言える時に先頭部でですね。
      または例の様なif文なら&で条件を纏める形で階層を減らすようにしてます。
      20年以上前の装置の面倒も見る必要のある分野なので安全性の積み重ねの自己流です。

  • @harumakimaki
    @harumakimaki Год назад +5

    if(!IsDead())
    {
    //処理
    }
    が個人的には可読性高くて好き

  • @takafumifujiwara4911
    @takafumifujiwara4911 Год назад +3

    ラムダ式も見たいですー

  • @風祝の早苗仮
    @風祝の早苗仮 Год назад

    リターン。
    戦闘開始時に戻るあれか!?

  • @nyangoro1115
    @nyangoro1115 Год назад +2

    こういうの助かりますm(_ _)m

  • @marpan2371
    @marpan2371 Год назад +3

    私は美しくまとめるってどーだかなと思うかな。
    確かに斜めは読みにくさを感じるかもしれないが、シンプルに意図が読み取りやすいし、割と改修しやすいのよ。

    • @takoserverchannel66
      @takoserverchannel66 2 месяца назад

      美しく=読み取りやすくする
      なんだけどなぁ…
      多分斜めに慣れてるからそう思うだけでは?

  • @ああ-x9o4v
    @ああ-x9o4v Год назад +1

    深いネストを避けるのはif文もあるあるですが、for文はもっと大事で、可読性以前に潜在的な性能バグとして大問題になる可能性があるので気をつけましょう。
    3つのループをそれぞれ1000周回す時にもし①何も対処せず三重ループにしてしまうと10億回処理が走る。
    ②独立した3回のループなら処理数は3000回で済むし、どうしても処理的に無理で③二重までしか減らせないとなっても100.1万処理まで削減できる。
    もし1回の処理が1ミリ秒だとして計算すると、①なら12日もかかってしまう。これが②なら3秒、妥協して③でも16分と大幅な性能改善が見込める。
    ただ、上記の改修はそこそこ難易度が高く、万能の処方箋を出すのも難しいので「この深いネスト大丈夫かな?」と思ったらまずはコーディングスキル高い先輩に聞くのがオススメ。

  • @musouryunen
    @musouryunen Год назад +5

    ChatGPTに課金して、汚いプログラムをコピペして直してと言うだけでサクッと綺麗にしてくれるのでおすすめ

  • @town4957
    @town4957 Год назад +1

    気を付けますー^^;

  • @kingo8627
    @kingo8627 Год назад

    Bard使えるようになっていないのかな?比較してみて欲しい。結構使えます。

  • @くいくん
    @くいくん Год назад

    ゲームの機能をどういうクラスに分けるべきか、またどのくらいまで機能を細分化するべきかいまいち分からないので説明や紹介をお願いします
    今後も見に行きます

  • @sylphied.
    @sylphied. Год назад +6

    関数内に複数のreturnを置くのはホビーユース向けですね。コードレビューで指摘対象になるので納品出来ない可能性があります。

    • @hogebar5470
      @hogebar5470 Год назад +1

      それどこの業界ですか?聞いたこと無いです。

    • @sylphied.
      @sylphied. Год назад

      @@hogebar5470 MISRAという世界基準です。

    • @hogebar5470
      @hogebar5470 Год назад +1

      なるほど MISRA C ですか。組み込みや自動車業界の方ですかね。
      MISRA C ではそういう規則かもしれませんが、C# や Python、TypeScript などの言語ではガード節はダメというのは聞いたことがなかったので。

    • @sylphied.
      @sylphied. Год назад +1

      @@hogebar5470 ええ、そういう直接生命に関わらないものを指してホビーユースと言っています。

    • @hogebar5470
      @hogebar5470 Год назад +1

      @@sylphied. なかなか煽った言い方だとは思いますが、承知しました。

  • @大山茂-v9d
    @大山茂-v9d Год назад

    シーケンシャルに実行されるプログラムは楽でいいなぁ、HDLはコンカレントだからめんどくさい。

  • @masato291
    @masato291 Год назад

    if文は処理が1行でも必ず{}を付けるべきだと思ってたけどゲームのコードだと要らないんだね

  • @kosetei1
    @kosetei1 Год назад

    構造化プログラミング涙目

  • @44heee
    @44heee Год назад

    ポイントは逆のif文ね

  • @tacky9736
    @tacky9736 3 месяца назад

    一応エンジニア歴40年のじじぃの意見です
    出口が複数はダメだと思うけどなぁ
    if分にコメントってもどうだかなぁ
    そのかっこの書き方もしないなぁ
    それを見やすいと思うのは時代の差なのかなぁ

  • @Shishamoequalroot-1equali
    @Shishamoequalroot-1equali Год назад

    基本的にこういう時は&&を主に使ってたけどこういう事も出来るのかと思ったただのDxLibでクソゲーだけ作ってる柳葉魚であった。

  • @gammeldrask919
    @gammeldrask919 Год назад +1

    でもデバッグしずらくならないすかね。

  • @砂肝-x6u
    @砂肝-x6u Год назад +1

    if(false)
    {
    a:
         //この辺に全角スペース
    }
    goto a;

  • @tribear
    @tribear Год назад

    言語はどこからどこまで使えるんですかね

  • @iwa6981
    @iwa6981 Год назад

    Ohhhh

  • @catkazu8326
    @catkazu8326 Год назад +2

    通常、関数と言わず、メソッドと呼びます。