忍者ブログ

神戸電子専門学校ゲームソフト学科の生徒が運営するGESのブログです。

   

[PR]

×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。

関数作ってますか?

 時間の経つのは早いもので、もう7月も終わりですね。
ども、加藤(委員長)です。

前回は2年向けの内容だったので、今回は1年生の皆さんに役立つかもしれない記事でも書いてみます。

拍手[0回]


 夏休みが始まるまでに、1年生向けセミナーを3回ほどさせていただきました。
それぞれ関数、構造体、ポインタについて、どれも2年生までにマスターしておいてもらいたいものばかりです。
今回は特に関数について少し掘り下げておこうかと思います。

入学前からプログラムを勉強している人や適性が高い人は別として、
「関数ってどう作ればいいの?」って思ってる人、結構いるんじゃないでしょうか。
そんな人のために、関数を作る時の指針のようなものを紹介します。
と言っても、「私はこうしている」というだけのものですが。

【一つの関数が大きくなったら別の関数に分ける】
明確な基準があるわけじゃないですが、
一つの関数がエディタ(VisualStudio)の1画面に収まらないくらい長くなったら、
新しく関数を作った方がいいと思います。
特に、同じ関数の中で「プレイヤーの処理」「敵の処理」「アイテムの処理」みたいに、
直接は関係しない処理をベタで記述してると、
新しい処理を書き足すときやデバッグする時にどこを見ればいいのか分かりにくくなって大変です。

【if文やfor文が多くなったら分ける】
特に、for文の中にfor文がある多重ループや、
if文の中にif文があって、更にその中にif-else文があるといった多重if文などでは、
それぞれのfor文やif文を関数化した方がいいかもしれません。
これも、一つ一つの文が長かったりすると、全体の構造が見えにくくなり、混乱の元になります。
それぞれの文で処理しているデータが密接にかかわっている場合、
分割し難いこともあるので、そこは臨機応変に。

【一つの意味のある処理が完結したら関数に追い出す】
ちょっと分かりにくいですね。
例えば、
if(getch3(VK_UP)){player.y -= 1;}
else if(getch3(VK_DOWN)){player.y += 1;}
else if(getch3(VK_RIGHT)){player.x += 1;}
else if(getch3(VK_LEFT)){player.x -= 1;}
というプログラムを書いたとします。
これは4行まとめて「プレイヤーの移動」と言い表すことができますね。
こんな時、この4行を「player_move()」とか名前を付けた関数に追い出してしまえば、
スッキリすると思いませんか?
よっぽど単純なプログラムでなければ、
言葉では一言で表せる処理のために、複数行に渡る記述が必要になります。
その「一言で表せる処理」を、一つの関数にしてしまおうということです。

慣れないうちは難しく感じるかもしれません。
けど、書けば書くほどわかってくるのがプログラムです。
今日記事に書いた程度のことなら、しばらくの間意識して取り組んでいれば、
直観的にできるようになってきます。
「今すぐ」出来る必要はありません。少しずつ積み重ねていくのが大事です。
PR

COMMENT

NAME
TITLE
MAIL(非公開)
URL
EMOJI
Vodafone絵文字 i-mode絵文字 Ezweb絵文字
COMMENT
PASS(コメント編集に必須です)
SECRET
管理人のみ閲覧できます

ブログ内検索

最新コメント

[01/29 人面犬]
[10/01 8ch]
[09/12 uncle]
[09/10 某卒業生]
[06/07 uncle]

カレンダー

04 2024/05 06
S M T W T F S
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31

テスト

Copyright ©  -- GESブログ --  All Rights Reserved
Design by CriCri / Photo by Geralt / powered by NINJA TOOLS / 忍者ブログ / [PR]