1read 100read
2013年17プログラム25: クラス名・変数名に迷ったら書き込むスレ。Part23 (549)
TOP カテ一覧 スレ一覧 2ch元 削除依頼 ▼
Visual Studio 2008 Part 21 (881)
MATLABプログラミング 質問箱 その4 (150)
くだらないアルゴリズムを考えるスレ (191)
Java⇔RDBのMapping-Frameworkを語るスレ Vol.5 (959)
Java系スクリプト言語Groovy (880)
VisualBasic6.0 対 VisualBasic .NET 2003 (461)
クラス名・変数名に迷ったら書き込むスレ。Part23
- 1 :2013/04/02 〜 最終レス :2013/09/25
- クラス名、変数名のつけ方に悩んだら書き込むスレです。
命名規則や設計の善し悪しについて議論するのは基本的に禁止。
命名規則や設計の善し悪しについて議論するのは基本的に禁止。
命名規則や設計の善し悪しについて議論するのは基本的に禁止。
前スレ
クラス名・変数名に迷ったら書き込むスレ。Part22
http://toro.2ch.net/test/read.cgi/tech/1346919580/
- 2 :
- http://y-anz-m.blogspot.jp/2012/11/blog-post.html
- 3 :
- 3げと
- 4 :
- 前スレで、ファイルのパスとサイズを格納する構造体の名前を質問した者です。
動機は、あるゲームを作っていて、そのゲーム内で
仮想的なファイルシステム(みたいなもの)を作る必要があるからです。
そういうデータ構造を作った方が処理が効率的なるという類いのものではなく、
ゲームの「遊びの根幹」に関わるものなので、すいません、今は詳しくは説明できません。
「ファイル」も OS が提供するファイルシステムのファイルではなく、
ゲーム内に独自に作るファイルシステムのファイルですが、
概念としては同じものですので、「パス」というものも普通にあります。
ただ、普通なら「ファイルシステムから取得できるはず」のサイズですが、
そのファイルシステムをゲームの仕様に合わせて独自に作るのに、
ファイルのパスとサイズという2つの情報をセットにした構造体が必要なんです。
(必要、というか、これらをセットにした方がゲーム仕様上管理しやすい)
すいません、できる限り詳しく説明したいと言っておきながら、
動機という痛いところを突かれてあまり詳しく説明できませんでした。
- 5 :
- Item や File だと、格納する情報はパスとサイズだけでなくても良いですよね。
たとえばそこに、ファイル作成日時という情報を追加しても、
Item や File という名前で良いわけです。
ですが今回はパスとサイズだけです。
この2つの情報を端的に表した言葉は何かないか、ということです。
その際に、もう少し抽象化して考えれば何かいい名前が閃くかと思いました。
パスは言わばディレクトリツリー内の位置を表すのではないかと。
すると、位置とサイズから連想したのが範囲とか領域といった概念です。
たとえば 前スレ 992 で言った Range や Region という名前からは、
「ここには色の情報は入っていはないな」と直ぐに分かりますよね。
始点と終点、あるいは始点とサイズ、これらの情報を表すのだろうと分かります。
このような考えから、ファイルのパスとサイズを格納する構造体の名前も、
そこから作成日時などの情報は入っているのかと余計な事は考えず、
名前から直感的にファイルのパスとサイズだと分かれば理想的だろう、と思いました。
Item が懐が大きすぎると言ったのは、何が情報として入っているのか、
色んな事が想像できてしまう余地があるという意味です。
その点からは、前スレ 993 の path_and_size は悪くなく、素直なネーミングだと思います。
ただ、識別子に接続詞はできるだけ使いたくない、というのが我が儘ですが本音です。
他により良い候補がなければ、これを使わせてもらいます。
- 6 :
- やっぱり何でその組み合わせが必用なのかの背景が分からないと難しいよね。
極座標のradiusとthetaとか、複素数のrealとimaginaryみたいな一般的な
組み合わせではないわけだから。
まあ、どうしてもというなら、パスとサイズ以外の情報は入ってないことを端的に
表すことは諦めて、FileInfoとかChunkInfoとか
- 7 :
- slot: ファイルを収めるべき場所(プレステのメモリカード風味)
allocation: ファイルの配置
reserved: ファイルを置くために予約された場所
- 8 :
- Node?
- 9 :
- その仮想敵なファイルシステムみたいなものにカッコいい名前を付けて、
それを前置して「なんとかFile」みたいな感じで。
- 10 :
- >>6
> FileInfoとかChunkInfoとか
一連の流れは読んでないがあるあるワロタw
こういう名前に着地しかかったら自己嫌悪になるわな。
かといって、考えた挙句のことだからどうしようもないわけだが。
- 11 :
- 先ほど Partition を思いつきましたが、
考えてみると、やはり紛らわしいですね。
どうもこれといったものがなさそうなので、
path_and_size を使わせてもらうことにしました。
分かりやすさではピカイチなので。
>>9
いや、そういうのホント嫌いなんです。
〜〜バトルシステムとか。
営業的にはやらざるを得ないものもありますが。
レスを戴いた方々、ありがとうございました。
拙い質問で申し訳なかったです。
- 12 :
- >>11
そういう方向じゃねえよ...
- 13 :
- なんとかinfoとか
なんとかmanagerとか
なんとかstatusとか
なんとかdataとか
なんとかargsとか
;' ':;,, ,;'':;,
;' ':;,.,.,.,.,.,,,;' ';,
,:' : :、
,:' \ ,,. 、./ ノ( ::::::::',
:' ● ● ⌒ :::::i.
i ''' (_人_) '''' * :::::i
: {+ + +} :::::i
`:,、  ̄ ̄ ::::::::: /
,:' : ::::::::::::`:、
,:' : : ::::::::::`:、
- 14 :
- checkなんとかも入れてやってくれ(場合によるけど)
- 15 :
- 解決したらしいけど俺はregion気に入ったなw
- 16 :
- なんとか還元水
- 17 :
- 2フレーム目に4など、
アニメーションに使うデータが定義されているクラスの名前は何が良いでしょうか
- 18 :
- > 2フレーム目に4など、
意味不明
- 19 :
- >>17
大雑把だな
フレーム毎にアニメーションに関連する何かしらのデータを保持しているってこと?
例えば、画像データとか
- 20 :
- >>19
説明不足すみません
そうです、テクスチャ座標とかそういうのです
- 21 :
- Animation
- 22 :
- >>17
名前を求めているのはフレームに関する情報を持っているクラスそのものなのか、
それともそれを集約しているクラスなのか。
なんとなく後者の方のような気がするけど、後者にしても機能的にいろいろバリエーションが
ありえそうな気がする。
例えばSequenceとSequencerじゃ担う機能がまったく違う印象を受ける。
とにかく、いい加減な説明では他人はあんたのクラスの要件を理解できるわけがないし、
したがって適切な命名も出てこないよ。
- 23 :
- まずは母国語が堪能でないとな
- 24 :
- >>17
map<int, int>じゃだめなんw
本質的には、xフレーム目にyみたいなもんは配列よ。連想配列よ。
それがクラスというもんであって、変数名が多分frameindex2animeidよ。
- 25 :
- プログラムの起動時、あるいはヘルプメニューで情報表示を選択肢たとき、
ソフトウェア名称やバージョン番号、開発者情報などが表示されることがあると思う。
これらのうち、ソフトウェア名称を格納する定数名は何が良いだろうか?
ApplicationName、ProductName、SoftwareName あたりが今のところの候補。もし使い分けがあれば教えて欲しい。
補足
・実行ファイル名や内部名などではなく正式名称
・バージョン番号はVersion、開発者情報についてはDeveloperNameとDeveloperAddressを予定
・プログラム内の別の箇所でも、例えば「このプログラムのバージョンは<Version>です」と書けば
そこが「1.0.0」などの実際の値に置換されるような処理を行う
- 26 :
- >>25
MyNameIs
ApplicationNameでいいんじゃね?
- 27 :
- >>26
UNIXコマンドのwhoisやwhoamiみたいだなw
冗談はさておき、ApplicationNameにしたよ。ありがとう。
- 28 :
- >>25
autoconfにならってPACKAGE_NAME
- 29 :
- >>28
ありがとう。
せっかくなので内部名の方で使ってみる。
- 30 :
- お知恵を拝借したい。
とあるプログラムで Person というクラスがあり、名前通り人のいろんな情報や振る舞いを持ってます。
このプログラムには時間軸がないため、Personクラスはある特定の瞬間のデータしか格納していません。
このたびプログラムを拡張することになり時間軸が加わりました。
時間tをforループで回し、各時間tでそれぞれ沢山のPersonインスタンスが生成されます。
ただこれだと扱いづらいので、同一人物のPersonインスタンスをまとめる新しいクラスを作ることにしました。
つまり時間概念のある人のクラスで、単純に言うといままでのPersonの配列のようなものです。
元のPersonクラスはPersonという名前のままであるとして、この時間軸を持った人のクラスに付ける名前としては何が適当でしょうか?
○○Personみたいな名前(TimerangePersonとか)になるのかなとは何となく考えているのですが。
データ解析プログラムなのでAnimatedPersonなんかはちょっと合わない気がしてます。
- 31 :
- Person4D, PersonHistory,
- 32 :
- TimeslicedProfile
Transitional〜
Momental〜
すまん長い。
- 33 :
- >>31-32
ありがとうございます。
改めて考えると>>31さんのPersonHistoryが今回の意図にも近くしっくりくるのでこれを採用しようと思います。
自分で考えていてもこの名前は出てこなかった気がするので大変参考になりました。
別のバリエーションを提案して頂いた>>32さんにもお礼を申し上げたいです。
- 34 :
- 参考までに追記:
もしこちらで良い案が挙らないようであれば、あのあと自分で考えた MultitimePerson という名前にしようかと考えておりました。
- 35 :
- >>30
Personのままがいいと思うんだが
- 36 :
- 普通は名前や性別などの属性が時間に従属して変わると思えないから
時間で変わる属性だけを時間を引数にとるメソッドに
変更する方がまっとうに思えるよね
- 37 :
- >>30
その瞬間瞬間でPersonは「何を」格納しているの?
それがPersonの主要な使われ方なら、それにピッタリの単語があるかもよ
- 38 :
- ゲーム作ってて悩んでる。
1.キャラの画像読み込みとかの準備する関数名
2.キャラクターの位置とか初期化する関数名
同じクラスで別々にしたいんだけどわかりやすい名前ないかしら
- 39 :
- 1. load
2. initialize
- 40 :
- さげんの忘れてた
>>39
ありがとう。
そんな感じで行く
- 41 :
- アバウトなお方w
- 42 :
- 「準備」ならprepareだと思うが・・・
- 43 :
- prepareはデータベースっぽいイメージがあるなあ(偏見
- 44 :
- ready
- 45 :
- foreplayがしっくり来るな。
- 46 :
- やはり>>39を超える案は出ないか。
- 47 :
- >>35-37
この時間軸追加はオプション対応なので、もとの骨格であるPersonクラスは動かさないというのが前提なのです。
Personが持ってるプロパティは同一性確認用の識別文字列以外全部時間によって異なるので、
継承してそれらを全部変更するよりも、ガッと配列的にもって新たにメソッドとか足した方が今回の場合実装がらくなのです。
ちなみに位置座標とか計算した評価数値とかそういうのが入ってる。
プログラムの全貌を書いてないからこんなモヤモヤとした返答で申し訳ない。
時間が取れたら根本から拡張しやすいように設計しなおした方がいいのかもしれないけど、まだちょっとそれは骨が折れるなぁ。
今後の課題にします。
- 48 :
- >>47
>>35だが、なるほど。確かにネーミングが難しいね。histric personとか嫌だし、
トランザクションデータではあるんだが。
- 49 :
- Historyとほぼ同義語でJournalっつうのもある
- 50 :
- >>47
ゲームかな?ステータスヒストリーとかでどう?
- 51 :
- キーボードのキーをチェックするクラスを作ったのですが、
キーを押した瞬間、離した瞬間を知るメソッド名で悩んでます
何かいいメソッド名ないでしょうか?
ちなみに単純にキーが押されてるか知るメソッドはbool IsKeyDown(uint vkcode)って名前にしてます
- 52 :
- >>51
> キーを押した瞬間、離した瞬間を知るメソッド
というのがよく分からんのだが、そのメソッドを呼ぶと、
いつキーを押したかという時刻(秒数?)が帰ってくるのか?
それなら GetTimePressedKey や GetTimeReleasedKey でいいと思う。
- 53 :
- >>52
いや時刻を返すメソッドではないです
キーを離している状態から押されている状態に切り替わった1度だけを知りたい時に使うメソッドです
ソース上での話だと、C++でWin32APIでGetKeyboardStateでキーの状態を取り、
キーが押下されている状態だと最上位ビットが立って、
キーが押下されてない状態だと最上位ビットが倒れてるんです
1フレーム前にGetKeyboardStateで取得したキーの状態と
今回のフレームでGetKeyboardStateで取得したキーの状態で比較し
最上位ビットが立っている状態から倒れている状態になった時(キーを押した瞬間)と
最上位ビットが倒れている状態から立っている状態になった時(キーを離した瞬間)を知るメソッドです
説明下手でごめんなさい
- 54 :
- それメソッドというよりイベントじゃないの
- 55 :
- イベント(ウィンドウメッセージ)の方でもできるかもしれないですけど
メッセージループの中でキーを取得したいんです
- 56 :
- GetKeyPressedStickyStateAndClearIt
- 57 :
- IsKeyBeingPressed とか?
- 58 :
- beingてw
- 59 :
- >>51
キーボードイベントの定番だと
up/downは「上げっぱなし」/「押しっぱなし」の意味で使う。
released/pressedは「離された」/「押された」時に1度だけ発行される。
- 60 :
- IsKeyReleased()とIsKeyPressed()にしようと思います
変じゃないですよね???
変だったら教えてください
教えてくれた方々ありがとうございました
- 61 :
- 説明下手杉
〜な瞬間を知る(返す)メソッド、〜になった時を知る(返す)メソッド
じゃなくて
〜になった直後だけtrueを返すメソッドってことだろ?
俺だったら単純にnowをつける
- 62 :
- その瞬間に「呼ばれる」んならわかるが、呼ぶってのがわからん、、
- 63 :
- >>60
isって変じゃね?
俺ならkeyDidPressedとkeyDidReleasedにする
- 64 :
- メソッドというよりトリガイベントな気がするけど
- 65 :
- メソッドなのだとしたら動詞で始めるべき。
返すのがbooleanなのだったら3人称単数、isとかhasとか。
- 66 :
- トリガ名ならwhenをつけて繋がる名前、Bool返すなら"This function returns true if it ---"の---の部分をメソッド名にする
- 67 :
- だからisKeyPressedはあまりよくない気がする
- 68 :
- 戻り値がYESかNOと仮定してIs key pressed? Yes. と捉えることもできるのか?
いや、やっぱりhasKeyPressedだな
連投スマソ
- 69 :
- isは今押されてるか、hasは既に押されたかで分けてるな俺は。
- 70 :
- 英語能力もプログラミング経験も無い奴がおるな
- 71 :
- be動詞は受動態、has+過去分詞は能動態の現在完了。主語が違うんだからそれがタイミングで使い分けられるわけがない。
boolだと三人称単数になるのは、その文章に対して正しい(true)か正しくない(false)かを返すから。
基本的には親となるクラスが主語でそれに対する動詞、で引数が目的語。
クラスとなるオブジェクトがKeyなら、key.isPressed()。
直後感(?)を出したいなら、まぁ hasBeenPressed() くらいか?
クラスがkeyそのものではなく引数だったら(今回の場合)、それをメソッド名に含めて isKeyPressed(key)もしくは、hasKeyBeenPressed(key)。
hasKeyPressedだったら「Keyが(何かを)プレスしたか」、になる。ナンセンス。
>>60 で良いと思う。
どっか間違えてたらツッコミよろしく。
- 72 :
- 訂正。
>>71
> be動詞は受動態、has+過去分詞は能動態の現在完了。
はもちろん
be動詞+過去分詞は受動態、has+過去分詞は能動態の現在完了。
のことですね。
- 73 :
- 現在完了形でイベントを表現するって発想はなかったw
言うまでもなくそんな考えは完全に間違ってる。
- 74 :
- 質問者の話であいまいだと思うのは、求めているのが次のどちらなのか
はっきりしない点
(1) 「今」が特定のキーの押し下げ/解放イベントが発生したタイミングか
どうかを検査するメソッド
(2) 押し下げ/解放イベントが発生したキーを取得するメソッド
GetKeyboardStateを使うって言っているから、そこだけ聞くと(2)の方のように思えるが、
でも>>60で挙げてる候補は(1)っぽい。
- 75 :
- 色々とありがとうございます
あと下手な説明でごめんなさい
下手すぎる説明よりソースのがわかりやすいと思いますので
綺麗なソースではないですが必要そうな部分をアップします
一応winmain関数くっつけて動くようにしておきました
パスワードはcppです
ichigo-up.com/Sn2/download/1367031651.zip
- 76 :
- keyboard.GetKeyDown(VK_UP)
keyboard.GetKeyUp(VK_UP)
- 77 :
- 関係ないけどさ、プログラミングって英語力が必要とされるよね。
変数名や関数名とかを単に直訳しただけで、第3者が見たとき意味不明な単語が多いと理解するまでに時間がかかったりするから。
たまに単語の意味と処理の内容が違う時は本当にイラっとする。
- 78 :
- あと、複雑すぎるメソッド名はやっぱり、設計で間違ってると思う。
リファクタリング本には、説明的なメソッド名は良しとされているようにあったが。
可能な限りギリギリまでシンプルにしたら使いまわし安いし、
やっぱり実装も堅牢だわな。
- 79 :
- 英語力も必要ないとは言わないが、命名が下手な人はそれ以前の段階で躓いてることが
多いように思う。
命名が下手な人は抽象化能力がないんだよ。
抽象化能力があればとりあえず母国語で名前を考えることはできるはずだが、
そもそもこれができない人が多い。
母国語で命名ができれば、ほとんどの場合はあとは辞書を引くだけ。
- 80 :
- 関数名ってそのクラスが主語で共通、後は動詞+目的語なわけで
この目的語がそのクラスのやることに内包されているかどうかなわけだよね
究極的に言えば、目的語がなくても主語と動詞だけで何をしようとしているのか
分かるのが一番だな、引数が目的語の代わりになったりするし
英語力って言うよりもモジュール化とコンポーネント化の違いだな
- 81 :
- ・日本人には余り馴染みがないが、英語的に正しい単語&文法
・ネイティブだと少し違和感がある(通じなくはない)が、日本人にも比較的分かりやすい命名
どっちを取るべきか迷うって人は居るんじゃない?
- 82 :
- >>81
そういう場合は前者を取るべきだな。
後者だと、自分が勝手に思い込んでいるケースもあるから。
- 83 :
- >>79
>命名が下手な人は抽象化能力がないんだよ。
あるある、頭の中が整理できてないのが手に取るように分かるコードとかw
…そんなのの後始末させられるとか勘弁してほしいもんだが
- 84 :
- 文字列データを保存する処理で文字列の中身が無い(nullやブランク)場合
に保存するかしないかのフラグを持たせるんですが、そのフラグ名は何が
いいと思いますか?
True:データ無しで保存しない、False:データなしでも空を保存で考えています。
NoDateNoSave とか?
なんかスタイリッシュないいの無いかな・・・。
- 85 :
- × NoDateNoSave
○ NoDataNoSave
- 86 :
- >>84
dropEmptyString
- 87 :
- is required field
- 88 :
- 逆でもいいなら
allow empty
- 89 :
- SaveForced
- 90 :
- おー、やっぱり自分じゃ思いつかない単語で嬉しい。
どれも良さそうなので、大いに参考にします。
- 91 :
- 空文字かnull参照なら破棄
DiscardsIfNullOrEmpty
- 92 :
- 引数名で悩んでいます。
その関数は、ある値を引数に渡した値だけ加算していく処理をしています。
「変化量」的な意味の言葉を1単語ですっきり表現したいのですが・・・何か良い名前はないでしょうか。
- 93 :
- Succ
Inc
- 94 :
- >>92
incVal
- 95 :
- incrementをincと略すのは、少々危険じゃないかい?
- 96 :
- dif
- 97 :
- >>92
add
d
- 98 :
- >>95
アセンブリ言語でもそう略してるし有名な略だと思うけど
- 99 :
- >>98
CやC++だとincludeって言葉があるよ。そっちもincと略されることがある。
- 100read 1read
- 1read 100read
TOP カテ一覧 スレ一覧 2ch元 削除依頼 ▲
VB.NET質問スレ(Part40) (526)
MFC相談室 mfc22d.dll (360)
文字コード総合スレ part8 (348)
C++は難しすぎ 難易度:4 (441)
OpenMPプログラミング (393)
任天堂「今後C++は捨てJavaScriptで開発していく」 (674)
--log9.info------------------
+++千石+++ 都営三田線スレ +++I-14+++ (422)
JR西日本車両更新予想スレッド Part27 (566)
西武鉄道車両総合スレッド Part3 (204)
209系総合スレ 15両目 (192)
近鉄奈良線・けいはんな線・生駒線・生駒鋼索線70 (133)
【調布地下化】京王相模原線part3【リニア輸送】 (188)
【横須賀東海道】湘南新宿ライン44【宇都宮高崎】 (437)
北陸新幹線 総合スレッドPart43 (444)
小田急電鉄を語ろう!Part85 (689)
名鉄のパワハラについて語るスレ 3 (626)
【スーパー】常磐線特急ひたち19号【フレッシュ】 (784)
東急東横線・副都心線を複々線化しよう (331)
●都営新宿線 [13.04.29改正] (776)
【乗って守ろう】神戸電鉄38番線【粟生線】 (394)
【GTO】VVVF車を語る 10両目【IGBT】 (616)
【住吉⇔豊洲】豊住線スレ (382)
--log55.com------------------
【MTG】最新セット雑談スレッド1642
【MTG】Magic The Gathering Arena109【アリーナ】
【MTG】最新セット雑談スレッド1643
【MTG】Magic The Gathering Arena110【アリーナ】
【MTG】最新セット雑談スレッド1644
【MTG】最新セット雑談スレッド1645
【MTG】Magic The Gathering Arena110【アリーナ】
【MTG】最新セット雑談スレッド1646
-