コミュニティアイコン プチコン 非公式コミュニティ トピック

アバター
Ryou Tanpo ◆AI5iRr9FjmkJ
2018/1/20 17:24
情報交換
変数の命名規則に悩む
1. 単語の繋ぎ
変数名ってアンダーバーで繋ぐ (スネークケース) とかっこ悪いし、かといって小文字も混ぜて書こうとするとそれはそれで...
変数名に小文字を使おうとすると、C言語風に予約語とか全部小文字にしたくなる

2. グローバル変数のプレフィクス
何も付けないと見分けが付かないしC言語の this みたいのがないからこんな問題もある

グローバル変数 SCORE があったとして
DEF SETSCORE XXX
 SCORE=XXX
END
→XXX という引数は SCORE という名前にはできない

それとも引数名をどーたらこーたらした方がいいのかな

コメント

アバター
moi 2018/1/20 20:04 ◆hL/XpFV8MD2F
SETSCORE→SETSCRとかどうでしょうか?
SCOREを略したので打ちやすいしSCORE変数の定義もできますよ。
アバター
キルル2 2018/1/20 20:17 ◆rGE712Ruejv7
予約語は全部小文字で打ってもOKのハズ
大文字と小文字の区別がないから、一部だけ小文字にしてもOKだった気がする
アバター
しんいち 2018/1/20 20:31 ◆lHy.hAWXbthn
SmileBASICのSyntaxは大文字小文字の違いが無いので、混ぜるとかえって紛らわしいと思います。私はSyntaxには大文字しか使いません。時々変数名を分かりやすくするためなのか、大文字小文字混ぜた変数名を使ったプログラムを見かけることがありますが、紛らわしくないのだろうかと不思議に思います。まぁ人それぞれのスタイルがあるのでしょうけど。

私の場合、変数名の先頭か末尾で変数の用途が大体分かれば良いかなって感じでそれほど悩まず適当に付けてます。3文字から始まって、頭文字かぶってきたら4文字にしたりとか。

あと、DEFではなるべくグローバル変数を直接参照したくない(DEFは他のプログラムへそのままコピペしても大丈夫なように、独立したものにしておきたい)と考えているので、引数で渡すかな。引数多くなるようならGOSUBで。
と、基本的にはこのように考えてますが、その通りにできないことも結構あります。CALL SPRITEで呼び出すDEFとか。
アバター
Ryou Tanpo 2018/1/20 20:44 ◆AI5iRr9FjmkJ
>moiさん
なるほど...

>キルル2さん
SmileBASIC プログラムに大文字小文字の区別はありません。
ちなみに mkII まではプログラム自体が大文字に変換されるように上書きされて実行されていました。

>しんいちさん
やはり大文字のほうが良さそうですね。全部小文字で打とうとすると命令の入力補完(大文字)が使えないので手間がかかるし、L ボタンを押したり離したり...
あとは単語の略しかたとか?
SCREEN => SCR
INITIALIZE => INI, INIT
CHARACTER => CHR, CHAR
アバター
おちゃめ 2018/1/20 20:49 ◆jH1opV6FnGyx
変数名は「自分が分かりやすい命名ルール」で決めるのが一番だと思います。
すでにSCOREという変数名が使用されている、もしくは、もっと短く表記したいという場合は子音を取ってからSCRとかSCという変数名にすると良いと思います。
子音だけだと分かりにくいという場合はCHARACTER→CHARのように先頭の数文字のみで表記するという手法もありですね。

プチコン3号はDEF内で宣言された変数、DEFの引数やOUT以降の戻り値で指定している変数は自動的にローカル変数扱いとなり、グローバル変数とは区別されます。
したがって、すでにSCOREというグローバル変数が存在していてもSCOREというローカル変数は使用可能です。(でないとローカル変数の意味がないけど)
すでに、SCOREというグローバル変数が存在していて、DEFの引数でSCOREというローカル変数を使用しているなどのようにグローバル変数とローカル変数で同名の変数が使用されている場合においてDEF内でSCOREという変数は基本的にローカル変数として扱われます。
では、DEF内でSCOREというグローバル変数を使用する場合にはVAR関数を使えば使用が可能です。
この状態だとグローバル変数を使用しているというのが一目で分かると思います。
アバター
しんいち 2018/1/20 23:28 ◆lHy.hAWXbthn
大文字小文字混ぜるのは好きじゃないけど、全部小文字なら別にアリかと思ってたんだけど、物理的に入力するのが面倒だったんですね。BIGでUSBキーボードならCaps Lockで小文字のままにできるけど、3号だとCaps Lockできないのか。そして入力補完はL押したままでも強制的に大文字か。まぁ大文字の方がBASICっぽいということでしょう(関係ない^^;)。
アバター
NORTH 2018/1/21 1:05 ◆G3Jbyy4MHK6h
変数名なんて講座で使うサンプルでもない限り、自分が分かればそれでいいんじゃないですかね。
アバター
キルル2 2018/1/21 8:28 ◆rGE712Ruejv7
しんいちさん
3号でも小文字のままロックできますよ
アバター
Ryou Tanpo 2018/1/21 10:41 ◆AI5iRr9FjmkJ
> おちゃめさん
VAR SCORE
DEF SETSCORE1 SCORE
VAR("SCORE")=SCORE
END
DEF SETSCORE2 SCORE
VAR("0:SCORE")=SCORE
END

SETSCORE だけ左辺の VAR がグローバル変数指して値が変わってくれるんですよね…
アバター
しんいち 2018/1/21 13:16 ◆lHy.hAWXbthn
>キルル2さん
お!?それは何か裏技みたいな方法があるのかな?
私が試したところ、3号ではL/Rボタン押してる間か、ソフトキーボードのSHIFTタッチした後1文字だけしか小文字が入力されませんでした。まぁL/Rボタン押しっぱなしの状態をロックと言えなくもないと思うけど、私がCaps Lockと言っていたのは、一度押したらその後押しっぱなしにする必要がないことを意味していました。
アバター
キルル2 2018/1/21 13:35 ◆rGE712Ruejv7
しんいちさん
下画面のキーボードの左下の辺りになんか変なレバーみたいなのがあります
それを一回押すだけでL/Rボタン押しっぱなしの状態になります
今プチコン3号触れないのでこの文章だけで…
アバター
Ryou Tanpo 2018/1/21 13:52 ◆AI5iRr9FjmkJ
SHIFT の近くに CAPS 見たいのがあると思います。

ご意見ありがとうございます。参考にして見ます。ロックはしませんので引き続きお寄せください
とりあえずプログラムは大文字で....
区切りはアンダーバー入れたほうがいいのかな
今までみたもの
入れる派 P3D
入れない派 SFNT
中途半端なものもあるんだよな
アバター
キルル2 2018/1/21 14:10 ◆rGE712Ruejv7
アンダーバーは私なら配列に採用しますね
1文字変数にもたまにアンダーバー。あとは使わない
デフォルトが大文字なので小文字はあんまり使わないのがオススメです
人それぞれですが
アバター
しんいち 2018/1/21 14:15 ◆lHy.hAWXbthn
CAPありましたね(裏技じゃないwww)。

私は変数名にアンダーバー入れることあります。意味の区切りに使うことが多いかな。あとはアンダーバーで始まる変数は定数として扱う、みたいなマイルールにしたり。
アバター
おちゃめ 2018/1/21 20:47 ◆jH1opV6FnGyx
Ryou Tanpoさんへ

VAR("0:SCORE")=SCOREのようにスロット0を指定してしまうと「スロット0でしか動かないプログラム」になってしまうため私のSLOT関数のような現在スロットを取得する関数と組み合わせて使うとよいと思われます。

SLOT関数の動作の仕組みやVAR関数の解説を私のサイトのプチコン3号講座で書いているのでよかったらご覧になってください。
http://ochameclub.web.fc2.com/petitcom3/lecture/var.htm#5
アバター
おちゃめ 2018/1/21 20:51 ◆jH1opV6FnGyx
このSLOT関数や他の私が作った自作関数を見てのように「アンダーバーから始まる変数はその関数の設定に必要なグローバル変数を示す」という自分内ルールとなっています。
関数名はSLOTなので変数名は_SLOTにしているのですが、こうすることで後から見てもすぐに分かるようになっているし、変数名がダブってしまうという可能性を減らすことができるというわけです。
アバター
Ryou Tanpo 2018/1/26 16:57 ◆AI5iRr9FjmkJ
> おちゃめさん
返信が遅れてしまいすみません
参考にして見ます

コメントを書く

  • こちらは「プチコン3号」「プチコンBIG」など、プチコンシリーズに関する話題を扱ったコミュニティです
  • プチコンシリーズにまったく関係ない書き込みはご遠慮下さい。削除の対象となります
  • こちらにはその他のゲームや雑談のコミュニティはなく、作る予定もありません (ひとりで管理できないため)。ごめんなさい
  • ユーザー登録なしで書き込みができます
  • 秘密の合い言葉は成りすましの防止 (トリップ機能)、書き込みの編集時の本人認証に使用します
  • 秘密の合い言葉に他人に推測されやすい言葉、他サービスと同じパスワードは入力しないでください。
  • 書き込むと、投稿時に入力したお名前と秘密の暗号が記憶され、ログイン状態になります

- WEB PATIO -