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

Поделиться
HTML-код
  • Опубликовано: 29 авг 2024
  • 売れるゲームクリエイターを育成するオンラインスクール
    「GC’sブートキャンプ」開校!
    期間限定で超実践型オンラインセミナー無料公開中!
    セミナー視聴で僕の電子書籍「超実践型インディーゲームクリエイターガイド」をプレゼント!
    今すぐ公式LINEに登録しよう!👇
    penguin-asp.co...
    ※スクールに関する質問は公式ラインにお願いします!
    このチャンネルはゲーム業界歴約20年の私が、ゲームクリエイターになりたい人や個人でゲームを作っていきたい人、ゲーム会社に就職・転職したい人のために、開発・制作のノウハウや売上の伸ばし方、企画やプログラムのコツ、勉強法など様々な情報を語っていくチャンネルです。
    チャンネル登録よろしくお願いします!
    メインチャンネル
    / @hirohasu
    サブチャンネル
    / @hirohasu2
    ひろはすが弟にゲーム開発を教えるチャンネル
    / @kkgame
    各種SNSもフォローよろしくお願いします!
    【Twitter】
    / hirohasusan
    【Instagram】
    公式 / hirohasu_game
    プライベート / hirohasusan
    【TikTok】
    vt.tiktok.com/...
    ■プロフィール
    ファミコンのスーパーマリオブラザーズに出会いゲームクリエイターを目指し始める。
    小学生から個人でゲーム開発を始める。
    専門学校卒業後ゲーム会社に3Dグラフィックデザイナーとして就職。
    10年間サラリーマンとしてゲームを作った後独立して再び個人でゲームを作り始める。
    現在は趣味でゲームを作りながらゲームクリエイターになりたい人を応援するために各種SNSでノウハウを発信しています。
    ※記載されている会社名・製品名・システム名などは、各社の商標、または登録商標です。
    #ひろはす #ゲーム開発 #ゲーム制作 #ゲームクリエイター

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

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

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

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

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

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

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

  • @user-qk5ic1we3h
    @user-qk5ic1we3h Год назад +2

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

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

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

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

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

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

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

    • @user-tj6qz6ho8o
      @user-tj6qz6ho8o Год назад

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

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

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

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

    参考になります〜🎉

  • @user-sy7wc5jp6m
    @user-sy7wc5jp6m Год назад +4

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

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

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

  • @user-pr2js3om1u
    @user-pr2js3om1u Год назад +2

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

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

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

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

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

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

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

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

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

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

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

  • @tacky9736
    @tacky9736 Месяц назад

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

  • @e-keii
    @e-keii 8 месяцев назад

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

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

    ラムダ式も見たいですー

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

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

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

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

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

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

  • @user-ux7dc5so2b
    @user-ux7dc5so2b Год назад

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

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

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

  • @user-il8ow8in6f
    @user-il8ow8in6f Год назад +2

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

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

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

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

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

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

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

  • @user-rl1lq5cp6f
    @user-rl1lq5cp6f Год назад

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

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

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

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

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

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

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

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

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

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

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

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

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

  • @user-fj4tq3qm6b
    @user-fj4tq3qm6b Год назад

    とても参考になります!(悪い例の分岐書いちゃってた)
    関数化と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;
      }
      みたいな感じ

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

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

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

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

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

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

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

    気を付けますー^^;

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

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

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

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

  • @user-pn9cx6pj6s
    @user-pn9cx6pj6s Год назад

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

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

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

  • @user-bq1md9sw6r
    @user-bq1md9sw6r Год назад

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

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

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

  • @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. なかなか煽った言い方だとは思いますが、承知しました。

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

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

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

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

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

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

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

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

    • @takoserverchannel66
      @takoserverchannel66 21 день назад

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

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

    ポイントは逆のif文ね

  • @user-hq4ko4lj1l
    @user-hq4ko4lj1l Год назад

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

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

    Ohhhh

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

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

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

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

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

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

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

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