クラス名・変数名に迷ったら書き込むスレ。Part21
>>1 乙
> 前スレファイル名議論
住所の最後が名前、
パスの最後がファイル名、みたいなもんだな。
できるだけ簡潔なものを選ぶ余地がある。
1おつ >>前1000 極論ではなく一般論 それもコーディングだけではなく自然言語も含めたより広い世界での一般論 極論してるのはそっちだよ
>>6 だから馬鹿はお前なんだからお前が消えねーとだめだろ
説明しないとわからんほど馬鹿なのか
11 :
デフォルトの名無しさん :2012/01/22(日) 12:46:09.87
小学校かここは
前スレ
>>992 それ同じ事を言い方を変えただけ。
「その機能や概念を示す」のと「機能を読み取れること」のどこが違うんだ。
それなりに複雑な機能をもったクラスやメソッドの機能を短い名前で完全に表現
できないのは当たり前で、仔細な点は捨象して大枠の機能を抽象した名前を付けるに決まっている。
馬鹿じゃないのか。
>>12 >「その機能や概念を示す」のと「機能を読み取れること」のどこが違うんだ。
例を出して言えば「オイラー方程式」が前者で「理想流体の運動法則」が後者だ
どちらも同じ物を示しているが前者は機能や概念を隠蔽した名称だ
ぜんぜん違うだろ?
そして議論で使うのはどちらが自然かといえば前者だ
後者をいちいち使うのはあまりにもクドい
前スレ
>>990 > だったらutf8だとかeucだとか文字エンコードも併記すべきな気がするぞ…
併記すべきかどうかは場合による
複数の文字コードを扱っているのであれば、併記しなければ分からない
扱っている文字コードがOSや環境のデフォルトだけであり、
あるファイルフォーマット内の文字列部分を処理しているなどなら、
文字エンコードを併記する必要性は感じない
>それなりに複雑な機能をもったクラスやメソッドの機能を短い名前で完全に表現 >できないのは当たり前で、仔細な点は捨象して大枠の機能を抽象した名前を付けるに決まっている。 あと一応言っておくが俺はクラス名やメソッド名を短く省略しろとは言っていない 狭い範囲、スコープに限定された文脈の中では短いものを使えと言っているのだ >馬鹿じゃないのか。 それを読み取れなかったお前がBAKAです
論破されると罵倒するしかできないってなんか可哀想だな 神様ももうすこしIQ平等に分けてあげればよかったのに罪なことするぜ
>>13 なるほど俺の誤解みたいだね。っていうかまさかそこまで馬鹿とは思わなかったw
要するに、
String.GetLength()
などという機能をそのまま表現した名前はよくないから、
String.func001()
String.YamadaTarou001()
のように単なる識別子以上のものではない名前を付けろという訳だ。
関数名と機能の対応を参照するバインダーがないと読めないコードが存在するって
都市伝説、あれは本当だったんだなw
こんなガチ馬鹿がどうしてこんなスレにいるんだろう。
>>20 >>15 ちょっと前のレスも読めない馬鹿がなんでいまだに生きてるんだろう
>>20 それはクラスというひとつの大きな単位の中のメソッド名ですよね
>>15 で彼は
> あと一応言っておくが俺はクラス名やメソッド名を短く省略しろとは言っていない
> 狭い範囲、スコープに限定された文脈の中では短いものを使えと言っているのだ
と言っているので、それは反論の方向としては間違っていると思うのですが
たとえば、
void func () {
*** = String.GetLength()
場合の***の部分などの場合の事だと思います
>>21 間違いを指摘されると「俺の真意はお前の理解と違う」ってか。
みっともない奴だな。
前スレの
>>992 は俺が書いた
>>982 に対する反論なんだから、そんな言い訳が通用する訳がない。
どんなクルクルパーだよ。
それから、メソッドやブロックのスコープ内でも明示的な名前を使え、 なんて言ってる奴が一人でも居たか? そんな奴いねえよ一人も。 誰と戦ってるつもりなんだろうなまったく。
28 :
デフォルトの名無しさん :2012/01/22(日) 16:13:41.99
スコープが広域であれば、略さず完全な名前を付ける superHogeCountWithPiyo pugeraDescription スコープの狭さに応じて単語を省く 例えばローカル関数であれば、 countWithPiyo もしくは count pugeraDesc または desc できる限り略語を使わない ×superHogeCountWithPiyo → shCountWithPiyo ×pugeraDescription → pDesc, pdesc そもそも短い単語を略す必要はない ×cnt ○count ×idx ○index
○ c ○ i
・・・とは書いてみたものの、狭域スコープでは hogeCount を nHoges みたいに略すことがある 単語を略すのであれば、number (of) → num みたいな中途半端な略し方ではムラが生じてしまう(numでは生じないだろうが)ので、一文字 number (of) → nまで略す その単語の略語にムラが生じることはないだろうと自分で確信が持てるのであれば、使うことはある 例えば、Description は desc 以外に略語を持たないと判断できるし、Information は info 以外の略語を持たないので、狭域スコープではこれを使う Temporary は temp と tmp が存在するので、略したいときは 一文字「t」まで略する
>>30 ごく短い、例えば3行以下の関数ローカルスコープであれば一文字でもかまわない
またはループカウンタとしてのcやiは、自分では許可している
> ごく短い、例えば3行以下の関数ローカルスコープであれば一文字でもかまわない
変数名をゴッチャリ飾って区別しないといけないようなのは、 既にメソッドが大きすぎるか、メンバ変数の場合はそれらが多すぎる。 fooBarBazList = appleBeerList = codeDoorList = みたいに併記しているような場合、うまくいくと list = これで住むような可能性がある。
>>34 うむ。コーディングの技術がしっかりしてればほとんどの識別子は最低限まで縮めても問題は起こらないよね
というか問題が起こらないように作れると良い設計になってることが多い
いやいや大きいとか多いとかじゃなくて対象コードブロックの中に機能や状態を持ち込み過ぎ struct A{int x,y;}a;のaじゃなく 後から読み解く奴の身になってx,yのどちらか必要な方だけを取り出して書けよと
現実問題、英語で言ったら形容詞抜きの"list"だの"count"だので十分説明の機能を果たすような クラスはまずあり得ない。 皆無とは言わないが、むしろ例外的。 そういう特殊な前提がないと成立しないようなアホみたいな議論はするだけ時間の無駄。
>>35 丁寧なコメントが消臭剤でしか無いような場合があるのと同様に、
説明的な変数が消臭剤でしか無いような場合があるな。
早い段階ですべきは、元の悪臭漂うクソ構造を改めること。
39 :
デフォルトの名無しさん :2012/01/22(日) 21:51:39.52
その画像独り歩きしてるけど 2枚の画像は1年間開いてるからね その娘は就活うまく行ってそのインタビュー場所の近くの会社に勤めてるって事
後ろに居る男も横断歩道の向こう側にいる人も インタビュワーも停まってる車も天候も変わってないな
偶然ってあるもんなんだな
Google Code Searchがなくなったのは痛すぎるな。 とりあえずつけたクラス名やメソッド名が外人的にあり得るか?否かをしらべるのに便利やった。
ええーーっ!! ちょっと見ない間に無くなったのか!
google code
>>30 count_hogeもcHogeもほとんど見易さ変わらないだろ
ch
決まってんだろ チャンネルだよ
入門書とか読むと、よく「チャネル」って書いてあるよね その発音の方がより本物に近いのは分かるが、なんか気取ってて嫌
俺はにちゃねらー
お前らはアニモー。
>>50 の中では「JISに合わせること=気取っている」なのか
前スレの、chrとかcharの974です。 まさか論争に発展するとは見通し甘かった。 私が書いているのはゲームの為の周辺ツールで、個人作業です。 ですから厳密な命名規則が欲しいって程でもないんです。 #報告 一度フルスペルで書いたのですが、書き進める内に用途が広がって キャラクターの意味に相応しくなくなったので一切なくなってしまいました。 計画性のないプログラムは、これだから・・・!
>>53 違う
JISに合わせる、合わせないは全く関係ない
チャネルという言い方が気取っているように感じるだけ
>>53 の中ではたった一例を挙げて、それがたまたまJISに合ってただけで
「JISに合わせること=気取っている」と解釈するのか
>>54 論争になったらなったで、それを話題に盛り上がる訳で、面白いものなのだよ・・・
hashtable = { "foo.name": "value1", "foo.text": "value2", "bar.name": "value3", "bar.text": "value4" } みたいなデータから { "foo.name": "value1", "foo.text": "value2" } だけをとりだす関数の名前を考えて下さい。 prefix = "foo." print func(hashtable, prefix) #=> { "foo.name": "value1", "foo.text": "value2" } 今の候補 ・get ・matched ・retrieve お願いします。
find
find_by_key_prefix
複数候補だからenumかfindfirst→findnext
filterByPrefix
63 :
デフォルトの名無しさん :2012/01/25(水) 05:09:39.26
ウィンドウが画面の外に出ないように防ぐ処理 をお願いします
関数名?引数や返り値は何?
65 :
デフォルトの名無しさん :2012/01/25(水) 06:42:48.58
関数名です 戻り値なし、引数は画面のRECTとウィンドウのRECTです
その関数の副作用は何?
「ウィンドウが画面の外に出ないように防ぐ処理」じゃなくて 「(ウィンドウが画面の外に出ないように防ぎつつ)ウィンドウ移動する処理」なのでは?
>>57 Perlっぽいけどfilterできんじゃねーの?
要するにそういう細かいことをまとめて行う処理です
ちっとも細かくないやん 基本処理にしか見えん
71 :
デフォルトの名無しさん :2012/01/25(水) 08:35:58.47
ではそろそろ ウィンドウが画面の外に出ないように防ぐ処理 をお願いします
MoveWindowInScreen
avoid-tilesaw
void MoveWindowInsideScreen( const RECT & windowRect, const RECT & screenRect);
void MoveWindowInsideScreen( const RECT & windowRect, const RECT & screenRect, RECT * pOutput);
77 :
デフォルトの名無しさん :2012/01/25(水) 16:52:12.72
なんでMOVEなんだよw
void ウィンドウが画面の外に出ないように防ぐ処理( 矩形 const & ウィンドウ, 矩形 const & スクリーン, 矩形 & 結果) ; いい加減英語識別子から脱却しろ いちいち名前付なんてくだらない作業で悩む必要がなくなって捗るぞ
preventとかcropとかかなぁ?captureはちと違うか。
confine
「ウィンドウが画面の外に出ないように防ぐ処理」って何だかよく分からないな。 この手のことをする場合、例えばWindowsなら普通は、 (1) 移動中にデスクトップの上下左右いずれかの隅に達したら、その方向にはそれ以上 移動できないようにする。 (2) 移動完了(マウスアップとか)時、ウィンドウがデスクトップの上下左右のいずれかの隅を 超えていたらデスクトップの範囲内に戻す。 のどちらかじゃいかと思うんだが、ニュアンス的にどっちとも取れないな。
ProcessingPreventedSoThatAWindowMeyNotComeOutOfAScreen
略してMoveWindow
日本語の段階で既におかしいのにそれを英語にしても無駄
2つのリスト(配列でもいいですが)a=[a1, a2, a3, ・・・] b=[b1, b2, b3, ・・・] を c=[a1, b1, a2, b2, a3, b3, ・・・] の様に1つのリストに合成するのは interleave ですが、 この逆方向の様にリスト c をリスト a とリスト b に分ける関数の名前は何が良いでしょうか 単純にリスト c のある要素を境に2つに分けるなら split や break が適切だと思いますが・・・ とりあえず今のところ、トランプカードを配る様に見えるので deal と名付けていますが、 もっと適切な名前はありますか?
どういう基準で分けるかぐらい書けば?
>>87 いや、だから interleave とは逆なんですけど・・・
c=[a1, b1, a2, b2, a3, b3, ・・・] を
a=[a1, a2, a3, ・・・] と b=[b1, b2, b3, ・・・] に分ける
>>87 言葉で説明すると
リストcの n/2 番目の要素をリストaのn番目の要素に
リストcの (n/2)+1 番目の要素をリストbのn番目の要素に入れる
そんな分け方です
90 :
89 :2012/01/29(日) 22:34:00.99
すいません、間違ってました リストcの 2n 番目の要素をリストaのn番目の要素に リストcの 2n+1 番目の要素をリストbのn番目の要素に入れる でした
>>86 distribute なり divide とかでいいんじゃね?
Cutでいいよ
プロジェクト名ってどうやって決めてますか? 公開するとなるとさらに慎重になりますよね
>>86 interleave ⇔ deinterleave
で良いのでは?
単に1つ(or n)おきに取り出すだけならdecimateもありだと思う。
95 :
デフォルトの名無しさん :2012/01/29(日) 23:12:20.48
uninterliveか、
>>94 が挙げている deinterleave か、迷った。
>>94 decimateはdec-に「10ごと」という意味があるのと、
その10ごとの1を「処刑する」という意味があるのがよろしくない気がする。
decimateは普通のプログラマはあまり使わないかも知れないが、間引きを表す術語みたいなものなんですよ。
>>93 状況次第だけど、ソフトウェアの名前そのまま、もしくは逆に一般名詞にすることが多いかなあ。
あえて全然関係ないコードネームにする そうするとカフェで仲間と話し合うときにハッカーっぽさがましてカッコイイ気分になれる
一周を[0, 1)で正規化した角度のことをなんて名付けるべきかな (0.5なら弧度法でのpiに、1.0なら弧度法での2piに相当する)
>>99 意外と難しいな。
正規化って言葉がダブルミーニングになってるから、ベタにNormalizedAngleとかすると
[0, 360)だと思われそう。
それでもあえてNormalizedAngleにするしかないかもw
101 :
89 :2012/01/30(月) 22:24:10.66
>>91-96 色々ありがとうございます
distribute は既に distributed という名前で使ってました、すいません
divide は簡潔で良さそうですね、ただ私は真っ先に割り算を連想してしまいますが
cut はどちらかというと、カードの山をざっくり2つか3つくらいに分ける事では?
deinterleave はやや長いですが、けっこうしっくりきます
関数の結果として得られる状態が容易に想像できるのがいいですね
uninterlive はググっても1件しかヒットしない貴重な言葉です
大事にしたいと思います
decimate は意味が深すぎて、使うのがなんが怖いです
と言うわけで、deinterleave の採用が決まりました
分割統治アルゴリズムは divide and conquer だけど、 このアルゴリズムを使っているプログラム内の 分割部分を divide 処理、統治部分を conquer 処理とか言ったりするの?
分割統治は昔よく聞いたが、分割統治アルゴリズムは初めて聞いた。 結論から言うと言わないと思う。 だって分割部分とか統治部分とか、そもそもそんなものないでしょ。 だって分割統治ってコーディングの技法
>>99 angleByRate, angleRatio
>>103 お前の出す結論にまるで意味がない事はわかったからもういいよ
人に罵詈雑言浴びせるならテメエがまず回答者の質問に答えてみろよ。 下衆な奴だなほんと。 その「分割統治アルゴリズム」っていうのは、分割統治を使ってるアルゴリズム、 という以上の意味ないでしょ。 コード上の処理としては分割する部分も統治する部分も、そんなものはない。 なぜなら分割統治とは、コーディングの手法に過ぎないからだ。 (問題を)分割統治するのはプログラマであってプログラムじゃない。
過ちて改めざる是を過ちと謂う
>>110 お前がな。
だからどう過ちか言ってみろ。
お前がなって何が?
>>109 コーディングの手法じゃなくて問題解決の手法だよ。
アルゴリズムってのはコーディング以前に考えておくものなんだよ。
>>113 では「分割部分」と「統治部分」を含むアルゴリズムの話を具体的にしてみてください。
まあ無理しなくていいよ。
こんな馬鹿、そもそも分割統治の意味が分かってないとしか思えない。
「分割部分」と「統治部分」があるって言ってないんだが 俺は君に一方的に馬鹿呼ばわりされただけ 誰彼かまわず攻撃してるだけなんだろうが とりあえず訂正してもらおうか
116 :
102 :2012/01/31(火) 20:41:50.75
Haskell でプログラムしているんだけど A という型の値に c :: A -> B という計算を行って B という型の値が得られるとする この時、A という型と B という型、および c という計算によっては、 f :: A -> [A']、c' :: A' -> B'、g :: [B'] -> B という計算を用意することができて、c' を並列処理できる場合がある 自分の今まで作ってきたプログラムソースを色々分析したところ、 何となく分割統治がある種のパターンとして抽出できそうな感じがしてきた まだ分析途中だけど、型クラス化する実験を始めている (失敗に終わる可能性ももちろんある) もし型クラス化できれば、型をそのインスタンスにすることで、 c' の計算を並列化した方が速いのか、直列化した方が速いのか、 LAN経由でマシン間で同時計算するとどうなるのかなどの実験が、 いちいち個別のプログラムソースの内部深くを弄らなくても簡単にできるようになる で、c' の関数名は compute に決定したんだけど、 f の関数名と g の関数名をどうしようか考えてた 安直に divide and conquer の divide と conquer をそのまま使おうかと思ったけど、 divide はともかく、やっぱり conquer はおかしいかな 長くなりましたが、こういう経緯です
fはdivideでいいけど、conquerに相当するのはc'或いはcだな。 分割した個々を「統治」するとみるか、個々を統治することで全体としても「統治」するとみるか。
新たな罵詈雑言来ました
120 :
102 :2012/01/31(火) 21:27:56.98
>>117 なるほど、そういう見方もあるのか
と言うか、それが分割統治の意味なのか
確かに分割統合じゃなく分割統治なんですよね
今までとくに深く考えず統治=統合で考えてた
では改めて、f は divide にして、c' はとりあえず compute にしておく
(Aを計算してBを得るのが目的なので、conquer ではやはりちょっとね・・・)
で、g に相当する部分は何が良いかな?
抽象度の高い関数なので、具体的に狭い意味を表す名前は避けたいのですが、
integrate 辺りが無難かな
aggregate って、どちらかと言うと、かつ集めてくるイメージですよね
mergeとか。
いやだから分割統治ってそういう意味じゃないってば.... もともとプログラマが問題(=目的のプログラム)を小さな処理に分割して制服する、 ってだけの意味だから、統治という言葉に違和感を感じるのは当たり前。
123 :
デフォルトの名無しさん :2012/01/31(火) 21:45:57.67
>>120 「統治」が使われてるのは政治用語の訳をそのままもってきただけだからね
「(問題の)克服」と思っておけばいいよ
124 :
102 :2012/01/31(火) 21:50:09.67
>>121 あぁ、merge は良いね
divide や compute と同じくらい短いし
>>122 >>123 そうだったんですね
勉強になります
古代ローマの戦略の方は"divide and rule"だけどね
126 :
デフォルトの名無しさん :2012/01/31(火) 21:54:07.03
127 :
102 :2012/01/31(火) 22:50:03.27
>>121 にいただいた案を使って、
分割して統治したものを最後に統合する関数は merge にしました
みなさん、ありがとうございました
128 :
デフォルトの名無しさん :2012/01/31(火) 23:13:42.12
>>125 also known as divide and conquer と書いてあるではないか。
129 :
デフォルトの名無しさん :2012/01/31(火) 23:16:45.50
そもそも impera ( imperare 命令する/指揮する/支配する の命令形)の 英訳なわけで、英訳時点での訳の揺れを気にしてもしょうがないよ。
>>114 ( ´,_ゝ`)ハイハイ かわいそうに
衝突検知用の分割空間を一般的になんという? 8分木などの具体的な実装を意識させない名前
パーティション
英語版のwikipediaのoctreeの項ではsubdivisionってなってるね。 8分木って言葉は今日初めて聞いたから全然自信はないがw
divided space partial space partitioned space
物理エンジン参考にすればいいじゃない
broad_phaseのこと?
競馬ゲーム作ってます 用語どこかにのってませんか
「競馬入門」でググってみる知恵もないか?
はい
英語できない人 どんな変数名の付け方してるか教えてくれよん
ここで相談する
でもわざわざ一回一回ここで相談しに来たら時間いくらあっても足りないよ! どういう用途なのか説明も大変ですしおすし
英語できるようになる
その発想は無かった 解決しました
・英語的に完璧に正しいが、日本人にはあまり馴染みのない単語や用法 ・英語的には完璧とは言えない(通じるレベル)だが、日本人でも意味を連想できる単語や用法。 ちょっと迷う時がある。 前にスレで聞いたときは前者の方が良いという意見が出てた気がするが、 海外の人にソースを見せたり、外国人PGと一緒に作業したりしないのなら、後者もアリかもしれない。
148 :
デフォルトの名無しさん :2012/02/11(土) 20:19:39.12
関数名お願いします クラスの中のメゾットなのですが そのクラスは「コールバックを管理する」クラスです。 そして、そのメゾットの機能は 「自分のクラスから『コールバックの実行』の機能を持つメゾットを取り除いたクラス(オブジェクト)を返す」 というものです
×メゾット ○メソッド
もともとイタリアで食べられてきた麦類の料理に東洋(中東)から伝播した米が融合した料理である。 イタリアでは下記の料理法で調理した米料理のみを指すが、フランスではピラフの別名として用いられてきた。
151 :
デフォルトの名無しさん :2012/02/11(土) 20:28:05.49
メソッドなんか作らずに継承関係にしてスーパークラスとして扱えばいいだけじゃ どうしてもメソッドにするならgetBase
スーパークラスというか、普通は適当なインターフェイスにキャストした自分を
返すようにするんだろうね。
どっちにしろ、
>>148 だけの内容で名前付けろとか無理筋過ぎるけど。
153 :
デフォルトの名無しさん :2012/02/11(土) 20:33:03.79
ありがとうございます 一応付属的な機能ですので、 継承関係は作りませんでした
logger.writeだと面倒だから log.writeにしちゃったんだけど やっぱり変?
>>148 返すのは単なるコールバックのコレクション?
実行機能を除いて残った管理機能には何がある?
コールバックとハンドラとイベントの違いとは
・コールバック(関数) プログラムをシステム側とユーザ側の2つに分けるとき、 システム側に呼ばれる、ユーザ側の関数のこと ・(イベント)ハンドラ イベントを受信する関数 ・イベント 何らかの現象が発生したことを示す 発生したことをイベントハンドラなどに伝えることを「イベントの送信」、 イベントハンドラがイベントを受け取ることを「イベントの受信」といい、 これらを活用することをイベントドリブンという
class IHoge { // ry }; class HogeBase : public IHoge { // ry }; class HogeX : public HogeBase { // ry }; class HogeY : public HogeBase { // ry }; 上のように派生クラスでよく使う共通機能を〜Baseと名付けているのですが 同じような目的で、しかし継承ではなく集約での利用を前提にしたクラスがあります class Hoge??? { // ry }; class HogeX : public IHoge { Hoge??? ??????; // ry }; class HogeY : public IHoge { Hoge??? ??????; // ry }; 継承をしていないのでBaseという名前を変えたいのですが なにか適切でシンプルな名前はありますか?
>>159 HogeEngine とかいろいろ考えられる。Driverとかいろいろあるやん
a = "aaa;bbb,ccc" b = f(a, ";"); // b = "aaa", a = "bbb,ccc" b = f(a, ","); // b = "bbb", a = "ccc" b = f(a, 0); // b = "ccc", a = "" というセパレータを指定して頭を引っこ抜くお手軽関数ってなんて名前がいいですか
>>162 例えば、配列の先頭の要素を取り外して返すようなものはshiftという名前でperlやrubyにある。
また、文字列から一部分を取り出す(だけ。非破壊)コマンドとしてはcutというのがある。
>>162 汎用性が低そうだから、その関数を使うところでの文脈に沿って決めたら良いよ
165 :
デフォルトの名無しさん :2012/02/12(日) 20:25:06.10
見た感じ strtok(_r) の亜種のように見えるな。
動的(dynamic)の略 dyn はよく見ますが、 静的(static)の略は何でしょうか?
staでいいんじゃね?
dyn stc
interceptorってコールバックの一種ですか?
ミサイル要撃機の一種
犬の名前じゃなかったっけ?
わかりました
>>173 性能的に考えると、あなた本体じゃないですかー
ただの黒装束姿では汚い忍者系といったところだが愛犬を連れているという設定が備わることで遠目で見ると人格者に見える
ラムダで済ませるようなSTLの関数オブジェクトの名前にいつも悩む
>>168 ,169
1単語の略称に a e i o u 辺りを普通は入れないという話を小耳に挟んだので、
stc を使うことにします。
ありがとうございました。
スタックと読んでしまいそうだ
スタティック(静的)と読むのが自然である文脈でしか使わないので問題ないです。
スタティック・メーン?
182 :
デフォルトの名無しさん :2012/02/18(土) 19:25:36.83
抽象クラスCProxyが具体的に何を行うクラスなのか分からない
CProxyはタスクにわたすパラメータみたいなもの?
派生クラスへのアクセスをカプセル化したいんじゃねーの? インターフェースにしないのがなんでかわからんが
まず、プロクシってのは使う側に意識させないのが普通じゃねーの?w あるインタフェースに対して、プロクシになってる実装と、そうでないのとは作る側の仕込み。 一人でやってる場合は自前ライブラリ(または単にクラス群)を作る側と、使う側で考えてくれ。
?とりあえず、CProxyの具体的な使用方法を教えてくれ CProxyの具体的な説明が「派生クラスの代理人」だというのであれば、命名はCProxyで合ってると思うんだが
しかも頭にCつけてんのが狂ってる。MFCでもないのになぜマネをする? JavaのSwingならJ、rubyのcソースコードではrb_。それぞれ由来があるからつけてるんだぞ?
インターフェースでは妥協してIをつける 統一感無いから普通のクラスではCをつける
Cつけるか付けないかとか、スタイルが統一されてさえいればどうでもよくね?
まぁいいじゃないか釣られんなよ
とにかく、
>>182 で名前決めろっていうのはやっぱりちょっと無理があるよな。
俺がゲーム作ったことないからそう思うだけかと思って黙ってたが、
やっぱりそうじゃないんだな。
maskの反対って何? unmask除いて。 ある範囲だけを使う時、 今はonly(Range r)などとしてるが…。
>>194 なんかmaskの意味を誤解してるような気がする....
例えばサブネットマスクの意味を考えれ貰えば分かると思うが、
普通は「ある範囲だけ」っていうのこそがmaskの意味そのものじゃないの?
【動詞】 【他動詞】 1 〈…を〉仮面でおおう[隠す]. 用例 The robbers masked their faces with stockings. 強盗は顔をストッキングで隠していた. 2 〔+目(+前+(代)名)〕〈感情などを〉〔…で〕隠す,紛らす 〔with,behind〕. 用例 He masked his anger with [behind] a smile. 彼は怒りを笑いで紛らした.
動詞だと隠すっていう意味だろうから、exposeあたり?
198 :
194 :2012/02/19(日) 16:12:30.70
>>195 ビットマスクは名詞でかつ、使う時論理積になるのが想像つくからそうなのかも。
>>197 良い名前キタコレ! MaxOSXのあの機能ってそういう意味だったのかw
しかし良い名前ではあるが、「そこだけ使う」っていう感がちょっと少ない気も。
完全素人なんでよくわからんけど、jQueryにはmaskとexposeっていうペアで使うようなメソッドがあるっぽい。
extract filter
エクスポゼは英語じゃなかったような.... って、だから「そこだけ使う」のがまさにmaskするってことなんだけど... なんか質問者が誤解してるみたいんなんで余談になるけど、 NMI = non maskable interruptなんて用語があるように、maskの反対は 「マスクしない」という否定による表現でしかいいようがない気がする。
NMIは、マスクできない割り込みだろ。
206 :
デフォルトの名無しさん :2012/02/19(日) 18:22:22.59
アクサンが付いたのは「エクスポゼ」で、フランス語の 動詞exposer(エクスポゼ。動詞の末尾のrは読まない)の過去分詞形だけど、 英語にも普通に1050年ほど前に輸入されて、expose(エクスポウズ)になっている。 意味は「晒す」など。
207 :
デフォルトの名無しさん :2012/02/19(日) 18:23:21.80
ぐは、繰り上がり間違えた。950年弱だった。
208 :
デフォルトの名無しさん :2012/02/22(水) 21:39:03.69
キーが衝突することをなんて表現すればいい? たとえば、A,B,Cのキーが既に使われているのにまたAが追加されようとした時とか。
209 :
デフォルトの名無しさん :2012/02/22(水) 21:42:22.60
MDCでconflictが使われていることを確認できたので事故解決。失礼しました。
collision
クリティカルヒット
212 :
デフォルトの名無しさん :2012/02/22(水) 22:13:55.90
hash collisionとか言うよね。
ダブルブッキング
クッキングパパ
conflict : 競合 collision: 衝突
race condition
conflict って競合というよりは対立だと思ってた 互いに正反対の主張が衝突して All or Nothing みたいな 競合っていうと、競合他社のようなシェアを奪い合うみたいに、 普通は All or Nothing の状態にはならないような感じを受ける
どっちでもいいよ PGは猿じゃないんだからhash関連の文脈ってわかってりゃ競合でも衝突でも通じるわ
conflictは競合じゃないね
コーンフレークがどうしたって?
221 :
デフォルトの名無しさん :2012/02/23(木) 18:54:24.34
コンフリクト例 svn conflict:ソースの同じ箇所を複数人が修正して自動的なマージに失敗、人間によるマージが必要 dll conflict:ロードした複数のDLLで関数名などが被ってる コリジョン例 packet collision:同じタイミングでデータが来た hash collision:異なるデータが同じハッシュになった コンフリクトは意味的な競合で、どうするか人が選択したりする コリジョンはもっと直接的な競合(衝突)で、運次第で起きるときは起きる という感覚だけど、もちろん合ってる保証は無い
duplicate key
>>208 # useradd -u 99 aaa
useradd: UID 99 is not unique
引数でパラメータを受け取って通信仕様に従って制御用の文字列を返す 逆に、返信された制御文字列から必要なパラメータを切り出す この1対のメソッド名をどうしたらいいでしょうか?
encode/decode
制御文字列 <- ParamsToCode(パラメータ1, パラメータ2) CodeToParams(制御文字列, パラメータ1, パラメータ2, ...) 制御文字列 <- 通信仕様::CodeFromParams(); 通信仕様::CodeToParams(制御文字列, パラメータ1, パラメータ2, ...)
compose parse/analyze
>>227-229 encode/decodeだと暗号化とか圧縮、文字コード変換みたいな意味合いに思ってたけど有りみたいですね
parseは考えたのですが対になる物はCompseでよかったのか・・・
formedString/params
単純にくっつける/ばらすならDateTime構造体にならってToString/parseとかどうかな
encode/decode 意外あり得ない せいぜいinterpretくらい
234 :
デフォルトの名無しさん :2012/02/28(火) 01:31:05.86
前後の空白を許すっていうのをなんとかableみたいに表現できない? normalizeみたいな動詞でもいいんだけど、簡単な単語が分からない。
前後の空白を許す事とnormalizeの関連が不明
関連はないんじゃないの?
YouMayStartOrEndWithSpace
何の名前? プロパティ? メソッド?
239 :
デフォルトの名無しさん :2012/02/28(火) 02:00:56.72
marginok とか?marginableだと連結しちゃいそう
leading or trailing space is acceptable
何の前後? 単語?
前後の空白を取り除く処理を行うかどうかのオプション?
243 :
デフォルトの名無しさん :2012/02/28(火) 02:26:00.91
ありがとうございます。
>>242 頻繁に正規表現を編集する機会がありまして、
その中でも前後の空白を許可するように書き換える、という処理が多かったのです。
たとえば、/a/ => /\s*a\s*/ という感じです。
>>240 その表現が主流みたいですね。利用させていただきました。ありがとうございました。
失せろゴミ
>>240 parse()とかの説明に出てきそうな文章だな
componentって辞書で見るとちょっと広義だなーと思うんだが あんま使わないほうがいいかな?
>>243 文字列側の操作になるけど、Rubyでは、strip Qtでは、trimmed だな。
trimmedだとスペースは取っ払った状態だから、逆のuntrimmedか ..? untrimmed {形} 刈り込んでない、手入れしてない untrimmed board 耳付き板 (英辞郎)
allowWhitespaces allowsWhitespaces
AllowSandwichedByWhiteSpace
なんか辞書使うの下手な奴多いなw
>>234 WordSpacingとか。
「分かち書き」の和訳を調べると一番簡潔なのがこれ。
>>251 質問はたぶん「分かち書き」そのものじゃなくて、
それが「可能」、それを「許す」「認める」という意味を含めた英単語だと思う
辞書以前の問題だな
>>252 このスレの性格を考えれば、質問者は「前後の空白を許すかどうか」を表す
bool値の名前を求めているんだろうと解釈するのが普通。
その意味でおかしくない名前を提案したつもり。
異議があればどうぞ。
>>254 WordSpacingだと前後の空白だけじゃなくて間の空白とか余計なものまで許しちゃってる。
は?
>>256 「分かち書き」の意味の中に、語と語の間の空白以外にも、
文節と文節の間に空白(空行)を書くこと「も」 含まれています
もし「分かち書き」の英訳が word spacing であるならば、
[文節間の空白 = 余計なもの] まで許しはしないだろうか
という意味のレスだと思われます
ただ、Wikipedia で word spacing を調べると分かりますが
(
http://en.wikipedia.org/wiki/Word_spacing )、
本当に [WordSpacing = 分かち書き] であるかどうかはさておき、
word spacing と言えば単語間の空白部分だけを指しており、
文節間の空白などとは明確に区別されていますね
つうか、word-spacingってcssでは単語間の空白のサイズをピクセル単位とかで指定するプロパティだよね。 だいぶ雰囲気違うんじゃね?
そもそも分かち書きは英語にない概念なんだから、word spacingは意訳でしょ。 もちろんイコールじゃないよ。 それはそもそも質問者が求めているものじゃないんだから当たり前だけど。 俺はただこういう情報の検索方法もあるよと言いたかっただけ。
形態素解析の論文なんかでは word segmentation て言ったりしてるヨーダ。
>>259 > 俺はただこういう情報の検索方法もあるよと言いたかっただけ。
その意図が
>>251 のレスでみんなにちゃんと伝わったという自信はあるか
冒頭 「書使うの下手な奴多いなw」 と小馬鹿にしてる感じなんだが
autoTrim でいいんじゃね
>>243 本当の問題はなんだい? スペースを許さない仕様って何を許すんだい?
既にあるコード中の正規表現を書き換えるプログラムを作ってるんじゃないの?
WindowsのAPIやクラスライブラリなどでは、 FileNameだとファイル名、FilePathやPathNameだとフルパス名を意味するのが一般的ようですが、 "..\\Hoge\\Hoge.doc"のようなファイルの相対パスだと明示したい場合、 どういう名前が考えられますか? FilePathRやFilePathRelativeしか思いつかず、NameやPathに置き換わる名前があるとよいのですが。
> FilePathやPathNameだとフルパス名を意味するのが一般的ようですが まずここの認識が違うのでは? FilePath を指定するヶ所ではたいてい 絶対パスでも相対パスでもどちらでも認識するのが普通だと思いますが (相対パスが入力されたら内部で絶対パスに変換するなど)
それは言わない約束でしょ♪
>>266 よくよく考えてみると、GetModuleFileNameとかは
FileNameと言ってるくせにフルパス名を返してきますわ。
boostだとrelative_path
基本的に正常系の場合にのみ実行される処理において、 あるフラグが立てられた場合に限り異常系でも処理をするときのフラグの名前。 フラグはアプリ起動前に設定し、終了まで変更されることはありません。 とりあえずFORCE_FLGとしてるけど、もっといいのないでしょうか。
IGNORE_XXX_ANOMALY
正常系と異常系の違いは何?
continueOnError
処理 = Hoge として ::alwaysHoge Context::alwaysHoge Hogeler::alwaysPerform Hogeler::alwaysPerforms
270です。 FORCE_HOGE_ON_ERRORにしました。 # HOGEは処理名称 ありがとうございました。
>>275 変なセンスだなあ。
それだと、「エラーの時はHOGEを強制する」の意味になるけど分かってる?
「雨天決行」と、「雨が降った時に必ず〜をする」は全然別の意味。
「エラーが起きたときでもHogeを行う」んじゃなくて、そのフラグが立っている時は「必ずHogeを行う」んでしょ? だとしたら always 〜 をオススメしたいんだけどなぁ if (!error || error && FORCE_HOGE_ON_ERROR) { Hoge(); } if (!error || FORCE_HOGE_ON_ERROR) { Hoge(); } if (alwaysHoge || !error) { Hoge(); }
そのフラグがどういう時に立つかを考えて命名できないの?
何かの数を返す関数の場合、馬鹿正直に getNumberOfHoges() とすると長くていやなので getHogeCount() ってやっちゃうんですけど英語的にどうなんでしょうか?
280 :
デフォルトの名無しさん :2012/03/04(日) 01:06:05.80
最近面白い質問来ないな
左様でございますか
うん
nullを""に変換するgetterの名前よろしく。
それgetterじゃないよ
エスパーすると、 何らかの文字列を取得する、もしくは有効かどうか判定する際に、空文字列とNULLを同一視する関数?
/* * xxxがnullの場合に空文字列を返す旨はコメントに書く */ string getXXX() { if(this.xxx == null) return ""; return this.xxx; }
とりあえずgetXXXNotNull()という名前を使ってますが気持ち悪いんです。
getXXX()というのはすでに存在しているんです。
じゃあヌルを避ける意味を考えてgetYYY()にするまで
getXXXSafety
getXxxOrEmptyString
文字列を返すって意味にすればいいやん
toString()w
つかそれだけなら関数にしなくていいだろ
string Hoge::toString() 機能説明: Hoge の文字列表現を取得する この関数は Hoge が null であれば空文字列を返す string Hoge::GetPiyoAsString() 機能説明: Piyo の文字列表現を取得する この関数は Piyo が null であれば空文字列を返す
与えられた文字列が与えられた長さ以内かを判定するメソッドの名前。 boolean foo(string arg, int length) 半角文字を1とした場合に全角文字は2でカウントします。 半角とはUnicodeでInBlockLatinにマッチするもの、全角はそれ以外です。
isLess() ちと広義すぎるか
>>298 設計に口出しするのはご法度だろうけどどうしても言いたい。
そんな不自由なメソッド作ってはいけない。
// 半角文字を1とした場合に全角文字は2でカウント
int nbyte(string s)
みたいなもんを作っておいて、
(nbyte(arg) <= len)や(len <= nbyte(arg))や、
(nbyte(arg) < len)や(len < nbyte(arg))や、
(nbyte(arg) == len)や(len != nbyte(arg))として使ったほうがよっぽど柔軟。
これ以外にも用途見えてくるっしょ?
既にそうやって使ってるなかで、沢山出てくるパターンに名前をつけて可読性を上げたいんじゃないのかしら。
可読性を上げたい?冗談じゃない。 「以内」なんてもんを英語で表現して後ろに二個引数渡すより、 「<=」の記号を使ったほうがよっぽど可読性は上。 「以内」という意味を隠して、抽象化した名前にするんなら意味はあるだろうけど。 check_length_cho-doii-kado-ka(s, len)みたいなのだとね。
303 :
298 :2012/03/05(月) 11:34:05.99
>>300 ,302
いいたいことは非常によくわかります。
わたしも同じ提案をしましたが却下されました。
ベタ移植するから元にない関数は作るなと。
元がCOBOLだからなのか関数名がKSP10142みたいなコードになっていて意味不明すぎる…
>>302 >「以内」という意味を隠して、抽象化した名前にするんなら意味はあるだろうけど。
いやだから、同じ設計に口だすならそっちだろうと。
>>303 なるほどね…。KSP10142みたいな名前に比べりゃ、何でもマシだよねw
かといって英語で「以下」を表現するとなると…。
is_less_than_arglen_or_equal_to_arglen(s, len)みたいな?
>>298 length_is_not_over(string arg, int limit)
bool string_length_less_equals(string, length) bool string::LengthLessEquals(string, length) ※クラスメソッド
>>298 IDEが使える言語向けっぽいから
validateLength(string target, int maxLength)
とかで良いんじゃない?
一応他の候補
isWithinMaxLength
isNotLongerThan
isLengthLTE
あと、ベタ移植だっていうのならまんまKSP10142でも良いんじゃないの?w
いやマジで。
>>298 goodString(arg, length)
healthyString(arg, length)
isStringLengthEqualToOrShorterThan
311 :
298 :2012/03/06(火) 09:19:52.16
みなさんたくさんの候補ありがとうございました。 徹夜で電子化されてない手書き7,000ページほどの仕様書を読み切ったところです。 # どうでもいい話ですが7,000ページの手書き資料なのに修正した跡が一つも無し。 # 間違ったら全部書き直していたのか?? # さらに作成者が全部同じで筆跡も同一人物っぽい。この人化け物かっ。 この関数は紙帳票に印字される項目に対して 情報が入力された際と印字する際にチェックとして使われていました。 使用用途で考えると308さんのvalidateというのがしっくりきたのでvalidateなんとかーという名前にします。
手書き7000pって・・・そんな化物いるんだ
写経に慣れてるお坊さんじゃねw
サンプルでもライブラリでもスニペットでもなく ただ実プロジェクトからコピペしたような汎用性のないコード(やテキスト全般)の断片ってなんて言えばいいですか。 とりあえずコピー、収集しておいて参考にする程度のもの。 scrap?
snippet fragment scratch
>スニペットでもなく 見落としてたが、その判断基準は何だ?w
piece of code
複数のブール値を持つクラスを定義する class bool3 { bool a, b, c; } @ return a & b & c A return a | b | c B return a ^ b ^ c bool型を返す@・A・Bそれぞれの関数の名前を教えてちょ ただし、変数は3つとは限らない(bool10、bool20ということも可能だろうということ!)
return (^q^);
common lisp だとそういうのは、 (logand a b c) (logior a b c) (logxor a b c)
bool3.and() bool3.or() bool3.xor()
DBから取り出したhogeというカラムのStringなデータで、そのデータはカンマが入っています。 このデータをカンマ区切りでArrayに変換する関数名はなにがいいでしょうか? convertStringToArrayはString型をArray型に単純に変換するってわけではないので違うと思うので。 convertHogeToOtherFormatとか考えましたがotherってなんだよとかなんかネーミングおかしくね?とか、 そもそも英語あってんの?って感じなので、どなたかお願いします。
>データはカンマが入っています >このデータをカンマ区切りでArrayに変換 ごめん、意味がわからない。
convertCsvToArrayList(String value) convertCommaSeparatedStringToArrayList(String string)
split
327 :
323 :2012/03/06(火) 20:01:54.52
>>324 "aaa,bbb,ccc"
↓
×{"aaa,bbb,ccc"}
◯{"aaa","bbb","ccc"}
ってことです。
>>325 ありがとうございます。
ちなみにカンマだけではなく第二パラメータで区切り文字を指定する時は、
どうしたらいいでしょうか?
ところで非オブジェクト指向のコレクションのない言語なのですが、
ArrayListのListってつけてもだいじょぶですか?
328 :
323 :2012/03/06(火) 20:03:10.89
>>326 あーー
そうですね。splitかも。
ありがとうございます。
split使います。
Javaだと、 String[] split(String regex) String[] split(String regex, int limit) この文字列を、指定された正規表現に一致する位置で分割します。 Rubyだと、 split([sep[, limit]]) 文字列を sep で指定されたパターンによって分割して配列に格納します。
330 :
デフォルトの名無しさん :2012/03/06(火) 20:29:14.43
区切り文字を指定したいなら delimiter
>>322 それ現状の名前だわ
>>321 その命名って logical and|or|xor の略なのかな
元々 getLogicalAnd とかいう名前にしていて、今は
>>322 にしてあるんだけど、
もっとこう・・・まさにこれという名前はないだろうか
結構よく見る演算だけど、この演算自体の名前はないのかな
足し算ならsumがあるからいいけどね。
>>331 っていうか、そもそもインスタンスメソッドな時点で変だよw
BooleanとかLogicOperationクラスの、可変長の引数を取るクラスメソッドで
実装した方がいいと思うよ。
その上で
>>322 のようなシンプルな名前でいい。
最近面白い質問来ないな
計算するがcalculate,computeなので calcAnd calcOr calcXor とか?
cumulative(累積)で「キュームなんとか」 cumuAnd cumuOr cumuXor
>>333 Value3という3つの値の並列演算を行うクラスがあって、このクラス同士の比較演算を行った際にBool3で値が返されるようになっている
Bool3 Value3::Equals(Value3, Value3); ※クラスメソッド
bool Bool3::LogicalXor(); ※インスタンスメソッド
Value3 a, b;
if (Value3::Equals(a, b).LogicalXor()) { ... }
>>334 おぉ、かなりいい感じだと思った
何か元ネタがあったりしますか?
>>336 Calc〜やCalculate〜系はもっと規模の大きい演算を行って、それを返す関数に使いたいかな
>>339 おー、all()が何かと思ったら最新仕様のものだったか
>>334 の案を使わせてもらうよ、ありがとう
341 :
デフォルトの名無しさん :2012/03/12(月) 12:19:55.33
0-5みたいな範囲指定に使う文字ってなんて呼べばいい? ハイフンとか文字の名前じゃなくて、その役割から命名したいから、 たとえば、a,b のカンマなら separator とか delimiter みたいな感じで。
range span
range operator じゃね?
344 :
341 :2012/03/12(月) 12:44:10.97
そうなんです。でも普通に delimiter みたいに表現できないかな、と思って質問しました。 やっぱり operator を付けるしか無いですかね?
to
rangeop
むしろhyphenatorとかでいいと思うんだけど。 hyphenを辞書で引いた感じでは
range indicator
pubic static double heyHoCoooon(int x, int y);
造語だけど coverager
クソすぎ
353 :
デフォルトの名無しさん :2012/03/14(水) 17:35:23.01
ホームページにURLと同じ構造のディレクトリを作るメソッド名はなんにすればいい
EnsurePath
MakeDirectory
FromURL
make index
変数hogeのデフォルト値って、HOGE_DEFAULT? DEFAULT_HOGE?
お好きに
メソッド名は動詞+名詞が基本ですよね? ソケットにヘッダーを送るメソッドで sentHeaderよりheaderSentのほうがしっくり来るんですが どっちがいいですか?
動詞は原形 目的語は引数
もし個人でプログラムしているのなら、 しっくり来る方を使わず違和感のある方に合わせるなんて本末転倒だよ
>>360 sentHeaderだとヘッダそのものを保持する変数、もしくはそれを返すメソッドに自分は見える
364 :
デフォルトの名無しさん :2012/03/16(金) 08:59:00.55
どこかよそに送り付けたヘッダー情報を保持している変数みたいだな。 > sent header
sentって過去形/過去分詞だよ
bool messageSented; とかやりそうな勢い
他人の感覚求めて質問してるのに個人の狂った感覚を尊重するのもいかがなものかと
sentHeaderなら過去分詞+名詞なので全体として名詞として機能する→変数 sendHeaderなら動詞+名詞→メソッド headerSendならおそらくheader.send()のイメージでオブジェクト志向的なメソッド
class Sender { void send( Header header ) { ... } } class Data { Header header; Body body; void sendHeader(){ ... } void sendBody(){ ... } }
class Header { void send(){ ... } }
@ Hoge.SentHeader : ヘッダーが送信されたさいに呼ばれるイベントハンドラ A Hoge.SendHeader : Header を 送信する関数 B headerSend : Header というモジュールに属する(何かを)送信する関数 C headerSent : Header というモジュールに属する、送信されたさいに呼ばれるイベントハンドラ Header.Send : Bに同様 Header.Sent : Cに同様 ・・だと感じる
>>371 headerSentって、送られたヘッダっていう変数名っぽく聞こえませんか?
ところで、put、set、cutみたいな手頃な動詞は活用が一緒だからこまるね。
メソッドの話しならやっぱHeadオブジェクト作るのが正道でしょ なんだか良くわからない巨大で延々居座り続ける複雑なオブジェクトを考え無しにつくっちゃうから「長い名前メソッド」問題が出てくるわけで
>>372 変数として宣言されてるか、関数として宣言されているかによる
変数として宣言されているのであれば、確かに送ったヘッダと理解できるが、
変数の名前に、「動詞の形容詞的活用」とか言ったか? これを使うのはあまり人気がない
Header (that is) Sent ←これね
>>372 lastSetValueとか settableValueで誤魔化したことある
377 :
360 :2012/03/16(金) 22:05:04.68
たくさんのレスありがとうございます! いやーお恥ずかしい(ノ´∀`*) sentじゃなくてsendですね。 これからみなさんのアドバイスを読み返してどれがいいか考えてみます。
コマンドラインの引数から値のセットと引数をチェックする関数の名前は何がいいですか
parse args
checkArgs
Getopt……は、違うか
まぁ、文字列から何かを作るのであれば、Parseなんちゃらが主流だろうな
getoptも悪くはないけど その名前使うなら使い方もそれっぽくしておいて欲しい所
GetOptPpoi()とかで誤魔化すしかないな
GetOppaiだと...?
386 :
デフォルトの名無しさん :2012/03/23(金) 18:01:16.55
Windowsで、 \\server\hoge... みたいなパス表記はUNCという名前でいいみたいですが ::{GUID}\{GUID} みたいなやつの正式名称ってなんて言うんでしょうか
387 :
デフォルトの名無しさん :2012/03/23(金) 20:24:07.04
volume GUID path ?
世界最古の土器 1988年、青森県の大平山元遺跡で見つかった土器が、世界最古の土器という事になっています。 1万6500年前(縄文時代前)のものと言われています。 これは、中国や他の国で発見されているものと比較して、群を抜いて古いものです。 発掘がすすめば、さらに古い土器が発見されるかもしれません。 世界最古の木造建築 奈良の「法隆寺」の建築物群。国宝にも指定されています。 法隆寺は、推古天皇や聖徳太子によって建立されたと言われています。日本最古の木造建築として日本の国宝に指定されているだけでなく、世界最古の木造建築としても認知されています。 また、日本を代表する木材「ヒノキ」で造られており、1993年12月には、日本で初めて世界文化遺産に登録されました。 世界最古の王室 現存する世界で一番長い歴史を有する世界最古の王室「天皇家」 海外では歴史や伝統に重い価値を置いています。 世界での天皇家の地位は絶大です。 世界の権力図を示すとこんな感じ。 天皇陛下≧ローマ法王>英国女王>アメリカ大統領etc>日本国首相etc ローマ教皇と同等かやや上回るか。 世界2トップのうちの一人です。 これは日本の宝として大切にしないといけませんね。
コピペ王に、俺はなる!まで読んだ。
390 :
デフォルトの名無しさん :2012/03/27(火) 21:47:01.50
URLのファイルのパス取得するメソッド名は何がいい
391 :
390 :2012/03/27(火) 21:48:14.23
間違えた URLのファイルのパスの部分を取得するメソッド名は何がいい
具体例を
URLのファイルのパスの部分って何?
scheme://server:port/ここの/部分の/こと.じゃね extractPathFromURL
>>391 RFC1738 3.3. HTTPの項目を見るとURLの構造が
http://<host >:<port>/<path>?<searchpart>となってるので、
getPathでいいような気がする。
string extractPath(string url);
"@r@n"という文字列表現<=>Char(13)+Char(10)という実際の文字コード列 の相互変換関数を手書きするとして名前は 何escape/unescapeっていうんですか。ascii?
日本語で
※訳 "エスケープシーケンスを含む文字列からエスケープされた文字列へ変換する、または逆変換する関数の名前を教えてください 〜escape/〜unescapeと命名するべきでしょうか? ascii_escape/ascii_escapeなどという命名はどうでしょうか?
「実際の文字コード列」ってのはは、 エスケープ方法に関わらずアスキーなんじゃないの? それをエスケープ方法の名前にするのはへんてこじゃないかね。
C#で7zを利用した圧縮解凍ソフトを作ろうと思っているんだけど 7zを利用を楽にするラッパークラス名をどうしようか迷ってます
402 :
片山博文MZボット ◆0lBZNi.Q7evd :2012/03/31(土) 14:49:15.12
C#ならラップしてる対象そのものの名前でいいでしょ。 しかしクラス名? 普通欲しいのはライブラリや名前空間の名前じゃないかと思うんだけど。
Lucky7 でいいじゃん
7zでいいじゃん
>>403 そうじゃなくて、識別子の頭に数字を使えない C# の仕様で、
適切な名前の付け方はどんなのがある? という趣旨かと
(もう答えは出てるが)
C# は UTF の ascii の範囲外の文字なら数字でも頭にできたんだっけ?
そんな趣旨か? しかし、"seven"の綴りをいちいち人に尋ねないと分からない人間がいるとも思えんけど。
SevenZipの類でいいだろ 本家本元も使ってるし
>>407 プログラムソース内に SevenZ と書かれているよりも、
7z と書かれていた方が 「圧倒的に」 読みやすい
そうでもない
逆か SevenZ は圧倒的に読み難い、と個人的には感じる まぁ私なら Archiver クラスの引数に Algorithm7z クラスのポインタを渡す感じの作りをする
それもない
おまえ個人の感想なんか聞いてねえ
>>409 そんなことは分かってるってだから。
何が言いたいのか良く分からん。
そもそも7z=seven zipなんだからC#なら素直にSevenZipでいい。
>>403 はそういう意味。
ついでに言えば、この程度の長さの識別子で可読性云々言ってる人間は論外。
プログラム書いたことあるのか。
>>414 すまん、よく考えたら生まれて一度も書いたことなかったわ
ちょっと書いてみる
>>401 です
なんかすごいスレが伸びてる
そのままSevenZipにしょうと思います
自分も
>>411 の感じで作ろうと思ってます
7zで解凍できないタイプの場合、別のライブラリと取り替えたいので
Archiverクラスってのを作って一括しようかなと
C++で、「テンプレート」を表すクラスがあって(CHogeTemplate)、 そのクラスのインスタンスを作る場合、 CHogeTemplate template; みたいに書くと、templateが予約語なので使えません。 CHogeTemplate temp; だと、テンポラリみたいになってしまいます。 templateに対する変数名用の略語って、なにか一般的なものはあるのでしょうか?
メンバ変数ならmHogeTemplate、ローカルならhtとかで何も問題ないのでは? でもそもそも“「テンプレート」を表すクラス”そのものが妙に聞こえる
>>417 俺も、そもそも論として疑問が多々あるが、それらはひとまず置いておいて、
たとえば tmpl とかはどうだ?
なんかお寺みたいです
お寺みたいと言われても、template の略として普通に使われているのだが
422 :
デフォルトの名無しさん :2012/04/19(木) 00:16:12.24
ローカルならtでもtplでも。 もっとスコープが広い変数ならなんか形容詞が要るだろうし。
固めるテンプル吸わせるテンプルって最近見ないな
自分ならtplにするかな
tenpureito deok
426 :
417 :2012/04/19(木) 22:00:36.16
>>418-425 みなさんありがとうございます。
テンプレートと言っても、クラスのテンプレートとは全く関係なく、
Officeやメールソフトなどにあるようなテンプレートを表すクラスです。
MFCなどを見てみたら、CDialogTemplateなんていうクラスがありましたが、
ポインタとかハンドルとかに対しては「pTemplate」とか「hTemplate」とかやっていて、
実体を作る場所ではとたんに「dt」とか「dlgt」とか書いていました。
なんかMFCの開発者も、同じように悩んだような書きかたです。
こんな感じでいいものなんですね。
「tmpl」というのも、ググったらたくさん出てきました。
ありがとうございます。
>tmpl 何故かテンプラだのテンプルだの呼ばれてるw
template_ だな。
よく使う自作関数をひとまとまりしたクラスをつくろうと思うのですが どういう名前がいいでしょうか? 主にシステム内で使用するために返り値を最適化した標準関数の拡張や、 データの変換などを行うものがあります。 全部static修飾子をつけることになると思うのですが、 MyLibとかちょっとダサイなと思ったのでなんかいい名前ないでしょうか?
helper, utils
>>429 そんなゴミ溜めみたいなダサいクラスはその名前で間違いない。
namespace 自分の名前 static partial class Helper
割と本気で MyUtility でいいと思う しかし、俺なら my_utilities とかいう名前空間を作って、そこに雑多な自作関数を全部ブチ込みます
もっと中二的な名前付けてあげてよ
まあ、クラス名はMyXXXみたいなダサい名前にしておいた方が無難ではあるね。 名前のバッティングなんてそうそうあるもんじゃないけど。 ただ一つのクラスに全部詰め込むと後で後悔するだろうね。 俺はMyMathとかMyTextとかMyFileIOとか分けた方がいいと思う。
MurasameMath TyrhungText FruntingFileIO
とりあえず全部突っ込んどいてあとで後悔して後方互換を保ちつつエイリアスを作る ってのが俺ですね
右寄せとか左寄せ、中央とかを総じてなんて呼ぶのでしょうか?
align(ment)
>>434 MyExtremelyUsefulLibyrary
略して MEUL
Bokutが考えた Sugoi Library
システムハンガリアンが禁止されている環境で、 一時的に変数の型を変えたい時は、どういう命名をしてますか? もちろん、十分に短い名前ってのもアリですが。
>>443 hoge.toInt
hoge.toLong
hoge.toString
>>443 hoge as int/long/string...
tempなんちゃら
ありがと。
>>444 型変換くらいならコストも高くないし、変換後の一時変数を持たないってのも確かにアリか…
>>445 すまない、分からなかった。
VBかしら? 元のhogeとどう共存するのか分からないけど、その辺は大丈夫なのかな。
>>446 ほんとに一瞬使うだけなら、それでもいいのかな。型変換したって情報は残らないけど。
正直、禁止されていてもローカルスコープでは使う
449 :
445 :2012/05/11(金) 08:58:39.87
>>447 命名規則にあわせて hogeAsInt や hoge_as_int にして採用してもらうつもりで書いた。
変数宣言じゃなくて、そういうことかw
>>449 これいいな
asのおかげで元になるhogeがあるのがわかる
でもhogeと同値である保証がないなら 毎回変換したほうがバグは少ないかもね
ハァ?
DBの列名もここで相談してOK?
>>452 保証がない変数使って、バグがどうしたって?
その変数が「名前が似てるだけのただのコピー」だと理解してないやつが触ったら どんなコードに書き換えられるかわからんぞって話 わかんねぇだろうなぁ
いいよ別にそんなことを議論スレじゃないから
>>457 > どんなコードに書き換えられるかわからんぞって話
馬鹿が触ればあたりまえ。
まあ、俺の周りには
>>457 みたいな馬鹿は居ないからいいけど。
スレッドセーフとか考えたこともなさそうなお仲間だな
>>460 が一番難しいと思ってる言葉 = スレッドセーフ (w
あのな 値をコピーしたあとで別の「スレッド」に元データ書き換えられたらどうするんだっていってんだよ おまえらほんとレベル低いな
それスレッドセーフと関係ないし。 お前が言ってるのは、 > 値をコピーしたあとで別の「サブルーチン」で元データ書き換えられたらどうするんだっていってんだよ と同じ。 馬鹿すぎ。
>>462 その問題は「毎回変換」したら解決するものじゃないよね。
class HogeHolder { int hoge void Do() { VerifyString(IntToString(this->hoge)) // @ LogOutputString(IntToString(this->hoge)) // A DrawString(IntToString(this->hoge)) // B } } 条件: 関数@・A・Bの引数として同じ値を渡す イベント: 途中でthis->hogeが別スレッドに書き換えられる イベントの発生により、条件が保てなくなる void Do() { Thread.Lock() const string sHoge(IntToString(this->hoge) Thread.Unlock() VerifyString(IntToString(sHoge)) LogOutputString(IntToString(sHoge)) DrawString(IntToString(sHoge)) } こうすることでイベントが発生しても条件が保てる で、上記の変数sHogeの命名規則が今の課題
修正: 引数としてthis->hogeのコピーを渡すだろうし、Thread.Lock()とかは余計だった
>>452 >>1 あとスレタイ
あ、まだ間違えてる。 二つ目のDo関数は void Do() { // Thread.Lock() const string sHoge(IntToString(this->hoge) // Thread.Unlock() VerifyString(sHoge) LogOutputString(sHoge) DrawString(sHoge) } だな
MVCでいうところの「Controller」に、別のわかりやすい名前をつけたいんですが、 なにかいい名前あるでしょうか。 なお今考えているのはWeb用のMVCであり、GUI用のMVCではないです。 現在の候補: ・RequestHandler (長すぎ) ・Page (どちらかというと「Controller」じゃなくて「View」のことですよね) ・Resource (「Controller」よりわかりにくいのでは?)
命名以前に、 >RequestHandler (長すぎ) この感覚を矯正しないと話にならない気がする
で、でた〜wwwwww質問に答えず説教始め奴wwwwww
>>470 >>469 は質問に答えてると思うが。
この程度なら全然長すぎてはいないから使っていいよ、
と暗に言っているように俺には聞こえる。
>>469 RequestHandlerのような長いのを使うならControllerのままでいいです。
わかりにくさも同じようなものだし。
で、いい案はお持ちでしょうか。
>>471 というか、この程度で長いと感じる人が相手だと、名前の提案は事実上不可能に近いよね。
別に親でも教師でも何でもないから説教はしないけど、こういう普通じゃない感覚に固執するなら
まともな人には相手にされないと思うけどな。
って言うか単に Handler じゃいかんの? 何も情報がない状態で Handler 単体なら意味が分らないけど、 M に相当するものと、V に相当するものとの対比で Handler を捉えるわけで、 まして Web という文脈の中なんだから、どういう役割のものか Handler という名前から容易に想像つくでしょ。
>>473 じゃあ長い名前でいいので、お持ちの案を教えてもらえないでしょうか。
それをきっかけに、他の人が短い名前を思いつくこともあるでしょう。
よろしくお願いします。
>>474 いえ、Webアプリケーションの中だけでも
・FileHandler
・EventHandler
・SessionHandler
などいろんなハンドラがありえます。
ローカル変数で handler というのはありですが、クラス名で Handler は混乱のもとです。
どうせreadとwriteしかないんだからパッケージの名前なんて付けずにグローバル空間で。
RequestHandler
Inflater
>>475 SessionHandler は良いのに RequestHandler は長いのか・・・
わかんない
わかるまで考えろ わかるまでサビ残だからな
このスレはベリーロングロング識別子派の巣窟だから 古典UNIX/C派は黙って観察するだけにしとくべき
>>479 SessionHandlerは長くないとは誰もいってないぞ。単に、そういう名前があるといってるだけ。読解力大丈夫か?
↑馬鹿
>>468 そもそも Controller が分りにくいと感じる原因は何?
(Handler がダメな理由は納得した)
これも、**Controler って色々あるの?
もういいんじゃね? 一応、案は提示したんだし、どう見てもコミュ障みたいだし。
わかんなかった
池沼じゃね
対戦ゲームで、プレイヤーの意思決定ロジック部を抽出したものの 名前は何がいいでしょう。StrategyパターンのStrategyに相当すると思います。 これを変更することで、人間がGUIを介して選択を行うプレイヤーやコンピュータ がいろいろな計算方法で選択を行うプレイヤーを作れるようにしたい。 まんまStrategyだとGUIで人間が決めるやつの居心地が悪い気がしています。 それも含められるような名前を希望します。
Player HumanPlayer ComputerPlayer
↑に賛同
「プレイヤーの意思決定ロジック部を抽出したもの」にPlayerという 名前を付けたらプレイヤーそのものはどうなってしまうんだ。
プレイヤーそのものって何? どういうコードが書かれるの?
Brain Human CPU
Strategyパターンということなので humanPlayer = player.set意思決定(GUIで決める) comPlayer1 = player.set意思決定(難易度:易の思考ルーチン) comPlayer2 = player.set意思決定(難易度:激強の思考ルーチン) みたいなの。
あ、setterもあるかもしれんけど、 humanPlayer = new Player(GUIで決める) comPlayer1 = new Player(難易度:易の思考ルーチン) comPlayer2 = new Player(難易度:激強の思考ルーチン) だ…
humanPlayer = new HumanPlayer(); computerPlayer = new ComputerPlayer(); IPlayer player; if(condition) player = humanPlayer; else player = computerPlayer; player.determinAction();
player.determineAction();
>>489 EngineとかBrainとかAgentとか?
Playerでもいいと思うけどね。人間の場合はHumanPlayer、コンピュータならComputerPlayerとかAutoPlayerとか。
こういうところでPlayerを使うプログラムはしばしば見かけるよ Playerのもっと相応しい使い所が他に有って取っておく必要があるなら他のにすればいいけど
>>493 プレイヤー本人なのか、それともプレイヤーが操作するゲームトークン(プレイヤーキャラクター)なのか、
って違いかなあと認識した
まあ、そもそも戦略の切り替えとプレイヤーの切り替えは別のロジックのはずで、
それをごっちゃにしている
>>489 の話はちょっとおかしいと思う。
プレーヤーが状態(例えば将棋の持ち駒とか)を持つゲームを考える。
この時、
>>489 の考え方で作ると、ゲームの途中で指し手を人間からCPUに切り替える
ことがやりにくい。(できないことはないが)
オセロのようにプレーヤーが状態をもたないゲームの場合は、プレーヤーの側は
他から依存されない(メソッドを呼ばれない)のだからそもそもインターフェイスを
揃える必用がないような...
オセロも将棋もプレーヤーが状態を持つかどうかは設計次第でどうにでもなる どちらでも実現可能
どういう読解力....
ACharacter - hp : int - mp : int - ownerPlayer : *APlayer APlayer - possessedCharacters : *Character[] Player -> APlayer - settings : ? AIPlayer -> APlayer - intelligenceLevel : int - aimingCharacter : *ACharacter
持ち駒は盤面の状態であって プレーヤーに持たせたりなんかしない方がいい。
そもそも例えが変
だからどんな読解力だよ。 話のキモはプレーヤーが状態を持つかどうかの区別ではない。 それと、あるゲームがプレーヤーに状態を持たせずに実装可能であることは、 どんなゲームでもプレーヤーに状態を持たせずに実装可能、あるいはそれが最適な 実装方法であることを意味しない。
設計力が乏しいからだな。 変な例を盛り込んでも論点をずらすだけ。
506だけど、Character と Player に分けてみたよ Character その対戦者が*ゲーム上で*持っているものを集めたクラス Player はその対戦者の意思決定ロジック APlayer から派生した2つのクラス Player と AiPlayer は、自分の所持しているCharacterを操作する クラス名が Character であることが正しいかはそのゲームによるが、 Player がそれを操作するロジックであることは、名前から予想できるっしょ
>>503 インターフェースを揃えた方が簡潔に書ける
他から依存もされるしメソッドも呼ばれるし
この手法はオセロでも有用
Commander/Operator
>>503 の読解力がヤバイ
>>489 は最初から最後までstrategyの切り替えの話しかしてないのに
深読みして自爆するタイプって職場に3割ぐらいいる
そう悔しがるなゴミ
E:\dirA\dirB\public_html\img\img.jpeg の時、 E:\dirA\dirB public_html\img 上記2つはどう記すべきですか? parent_path ? root_img_path ? よろしくお願いします。 趣味で小さいツールを作り始めましたが、後で ソースコード見てみると変数の名前が意味不明過ぎて…。
パスの使い道は何?
>>519 即レスありがとうございます。
E:\dirA\dirB は後で別な場所に動かしてもいいように、です。
D\dirC\dirD\dirE などに。
public_html\img も同様に
my_travel_1\img のようにです
DocumentRootの上のディレクトリか なんでそこで切るの?
〜PathFirstPart 〜PathSecondPart
E:\dirA\dirB\public_html ↓ D\dirC\dirD\dirE\public_html とか E:\dirA\dirB\public_html ↓ E:\dirA\dirB\my_travel_1 じゃだめなの?
前半はウェブサーバのdocument rootとは違うんだろうけど そのプログラムにとってはルートディレクトリの一種ではあるな root directory image directory 単純にこんなのでいいんじゃないか
>>521 ここで区切ったほうが書きやすくなるかな、くらいな
理由です。
>>522 これわかり易くていいですね。
>>523 文字列が埋め込まれているのがなんとなく
気になりまして。でもそれなら定数でいいですね。
>>524 シンプルでカッコイイですね。使わせてください。
なんかよくわかってない奴が紛れ込んでしまって
すみませんでした。
レスいただいた方、ありがとうございました。
ディレクトリとパスややいな。.NETだと、 Path.GetDirectoryName,Directory.GetParent うーん
プログラム入門用のサンプルを作らなきゃならなくなって、 極簡単な食券販売機をシミュレートするプログラムを作る事になった。 で、下記のデータの変数名を考えてるんだが、いまひとつ良い名前が思い浮かばない。 一応自分で考えた案も併記したんだけど、おかしくないかな? ・自分の財布にあるお金(myMoney) ・購入した食券のリスト(myTicket) ・販売機に投入されている自分のお金(enteredMoney) あと、釣り銭レバーは change lever でいいの?
pay(paid)かと思ったけど、これだと最終的に払った合計金額になっちゃうのかな repaymentがユーザの払い戻し行動でrefund leverが釣り銭レバーとか
530 :
527 :2012/06/13(水) 20:57:21.17
>>582 > pay(paid)かと思ったけど、これだと最終的に払った合計金額になっちゃうのかな
ODE見ると、pay には仕事や商品の「対価」として支払うイメージや、
合計金額というイメージが付いてる感じだった。
あと、ごめん、言い忘れてた。
販売機に投入されている自分のお金とかは変数なので、基本は「名詞」で考える。
まぁ形容詞もぎりぎりOKだから、品詞的には paid もOKだけど。
>>529 > 「〜円のお預かり」に相当するのは deposit
なるほど。
> 自動販売機の保守マニュアルがあった。
なんというピンポイントのマニュアルが公開されてるんだw
大いに参考になる、
>>528 の後半の提案も含めて調べてみるよ。
ふたりとも、ありがと。
531 :
527 :2012/06/13(水) 20:58:47.52
すまん、マニュアルに興奮して安価ミスった
前半は
>>528 へのレスね
均等な幅の隙間でいくつかの図形が並べてある状態で その、「幅の隙間」をなんといいますか?
Margin Padding
ありがとうございます
interval……は、ちょっと違うか
幅の隙間って日本語でどういう意味?
すみません隙間です
gap
均等に並べてその隙間を指すならピッチになるんじゃね?
・・・いやピッチは重心間の距離か
>>540 隙間は均等だけど、図形が均等とは言ってないので pitch はちょっと違う気がする。
■<->▲<->★<->● ↑の <-> の箇所なら gap でいいと思う
HTMLのTABLEなんかを参考にまず概念を整理した方がいいだろうね。 まず図形を包含する最小の矩形領域MinRectと、MinRectを包含するMinRectより大きな 矩形領域CellRectを考える。 この時、CellRectとMinRectの同じ辺の間の距離がPadding。 CellRect1とCellRect2の間の「隙間」の距離がGapとかSpacing。 だからPaddingは上下左右の4つの値を持つ。 Gapは水平垂直の2つだけ。 こんな感じだと思う。
Javaのレイアウトマネージャの用語も参考になるかもね。
>>544 分かりやすい説明ありがとうございます!
CellRect間をイメージしておりました
Gapを利用したいと思います。
どういたしまして
フォームに特定の文字列を入力すると、その文字列を解釈して対応した処理(コマンド)が実行されるプログラムがあります。 実行の際、ユーザは引数(オプション設定)を与えることが出来るとします。 それぞれのコマンドは 【1】オプションが必須 【2】オプションを指定してはいけない 【3】どっちでもいい(指定してなければデフォルト扱い) の、どれであるかを列挙型(enum)で保持したいと考えています。 この時、【1】〜【3】の状態を表す名前、 およびこの状態を保持する変数名をお願いします。 ちなみに【1】は OPTION_NECESSARY、変数は optionRule にしようかなあと考えています。
necessary required acceptable unacceptable forbidden optional acceptability
optionType optionStyle
>>549-550 ありがとう
列挙型の方はrequired、forbidden、acceptableで、変数名はoptionStyleでやってみる!
朝昼夜の総称をなんと呼ぶのでしょうか?
>>552 day
エスパーするとtime zone, またはtime slot
日本語では何と言ってる? どういう場面で使う言葉?
period
「時間帯」じゃねぇの
欲しいのは春夏秋冬に対する「季節」みたいな言葉ではないかとエスパー
day portion とか day part とか day section とかかねぇ。 コンテキストは何だろう。勤務シフト管理とか?
"(a) day"
C言語で「ポインタの配列からNULLな要素を切り詰めて先頭方向へ移動する」関数って何て名前が良いでしょうか 仮に func() という名前だとすると、例えば MyStruct *ary[] = { ptr1, ptr2, NULL, ptr3, ptr4, NULL, ptr5, NULL }; func(ary, 8); とすれば ary[] の中身が { ptr1, ptr2, ptr3, ptr4, ptr5, NULL, NULL, NULL } になるような関数です。
zeroPaddingならぬnullPadding
reduceArray
整理する、と捉えてOrganizeとか
move/shift non null (element to left) gather/collect non null
566 :
uy :2012/07/01(日) 07:19:55.26
eliteGomikuz
remove(ary, NULL)
>>567 NULL を取り除くわけではないだろ
align (FORWARD, ary)
normalize (「ノーマルな状態」を定義しておいて、それに準ずる形式にすること)
>>561 CompactArray, DefragArray, PackArray, CompressArray
今の時代ならDefragが一番話が早いかも
571 :
561 :2012/07/01(日) 18:43:42.62
色んな案をありがとうございます、どれも参考になりました 用途としては散らかした配列を整理するためのものなので organize,normalizeなどでも良かったのですが それはそれで他の用途に使いそうな名前なので、処理内容のほうに近い名前を選びました
処理内容の方に近い名前ってどれだよ
どれでもいいだろ 突っ込んでやるなよ
配列が散らかってしまう状況が読めない
GCではよくあること
そうなんだ
>>574 散らかると言うか、穴だらけになるという方があってると思う。
配列要素の参照先が不要になって削除された場合、その配列要素もいらなくなるけど、
いちいち詰めたりしてたら大変だから、とりあえず null にしといて、適当な時期を見計
らって、一気に詰める処理を行うことはままある。
>>561 sqlならvacuum
windowsならデフラグ
その他 rebuild, sort, pack, cleanup, compress, reallocation, reposition
思いつくものがことごとく、空いた分を取り除いてしまうニュアンスがあって提案できんかった。
>>579 提案できんかった報告はどうでもいいが、今まで提案された中で
空いた分を取り除いてしまうニュアンスを含むものがあるのなら、
指摘した方がいいのではないか?
むしろもういいってw これ以上何を議論しようっての
fill forward
sortNullsAndOthers
586 :
デフォルトの名無しさん :2012/07/21(土) 23:32:06.33
測定機のプログラムで、 int voltage;//電圧を2V単位で代入する と書きました。私は、電圧が2Vのときvoltage=1,4Vのとき2,...になるという意味で書いたのですが、 別の人に、「2Vのとき2,4Vのときは4で、1や3のような値は代入してはいけない」という意味にとられてしまいました。 どんな変数名やコメントにすれば誤解されにくいかアイデアはありませんか?
素直に int voltage_code; // 2V ⇒ 1, 4V ⇒ 2, ... とする。 と書いておけばいいのでは? ちなみに、「電圧を ... 代入する」って書いてあるんだから、俺もその別の人と同じ解釈する。
>>586 int voltage; // 電圧(2V単位, 1=2V, 2=4V, ...)
>電圧が2Vのときvoltage=1,4Vのとき2,...になる まだ意味不明なんだが
int voltage: //電圧。実際の電圧値の半分の値で持つ。
>>586 アセンブラでゴリゴリに特定ハード向けに最適化されたコードを書いてるならともかく、
Cで書くようなコードなら変数にそんなミスリーディングな意味付けをすべきでない。
変数名がvoltageなら素直に電圧の値を表すべき。
偶数のみとか{2, 4, 10, 12}みたいに選択可能な値が限られるのなら、
セッターにするかenumを使う。
> bool値の名前に動詞を使うときは三単現にするという指針 まずこの理由というか根拠が分らんな。 どういう意味が込められてるんだろ。
>>593 > アセンブラでゴリゴリに特定ハード向けに最適化されたコードを書いてるならともかく、
> Cで書くようなコードなら変数にそんなミスリーディングな意味付けをすべきでない。
Cで特定ハード向けのコード書く仕事もあるんですよ。
まあ、C かも知れない状況で、セッターとか勧める人みたいだから、
自分の周りしか見えてないんだろうな。
て言うか、
>>1 > 命名規則や設計の善し悪しについて議論するのは基本的に禁止。
ぐらい読め。
598 :
594 :2012/07/22(日) 12:26:48.36
>>595 >> bool値の名前に動詞を使うときは三単現にするという指針
>
>まずこの理由というか根拠が分らんな。
>どういう意味が込められてるんだろ。
要は答えがyes/noの疑問文の形にしておけばtrue/falseの2値しか持たないことが主張できて良いという考え方だと思います。
で、動詞の場合はDoesで始めると冗長なのでそこは抜いて三単現動詞で始めると。
だけどuseはuseなのがさっぱり分からないので答えを求めて書き込みました。
javaの命名規則なのになんでJavascriptで検索してんの?
しかし変数やコメントだらけだな メソッドが見当たらん
useなんちゃらって変数や引数によく使われるけど 命名規則にあやふやな人がその勢いでメソッド名にまで使ってるだけじゃね
602 :
594 :2012/07/22(日) 13:35:19.69
>>599 このboolの話はべつにjavaに限った話じゃなく
googleで検索して出てきたやつがそれだっただけです。
英語を母国語としている人達がどういう考えで 命名規則に「Boolean に動詞の原形はダメ、もしするなら三単現動詞」 という規則を入れているのか知りたかったのだが boolean "third person singular" "naming convention" OR "naming rules" これでググってもなかなかヒットしないな
>>602 別にJavaに限らなくてもいいけど
その規則の元で書かれてないコードから探したって無意味じゃん
606 :
594 :2012/07/22(日) 13:43:34.63
圧倒的つっても検索結果はコメントだらけなんだが
なんかしらんが
>>599 でクスッときたw
前後関係読んでないけど、みょうにツボってしまったw
>>607 usesCacheって使われてないからそのコメント部分がヒットしちゃってるってことですね
Javaでも変数・引数・コメントだらけだな メソッドがなかなか見つからん これでどうやって判断したの?
>>596 >まあ、C かも知れない状況で、セッターとか勧める人みたいだから、
>自分の周りしか見えてないんだろうな。
純Cでも構造体の値のセットのために噛ます関数や
別モジュールのグローバルやstaticの変数を弄るために存在する関数を
OOPみたくセッターと呼ぶ人はいるよ
613 :
594 :2012/07/22(日) 13:54:55.18
usesだと10件でuseだと86件か
>>594 >>597 なぜその記事を書いた本人にまず質問しなのでしょうか?
[本サイトへのご意見、ご感想] のところに
> 本サイトに関することであれば、何でも OK です!
>
> ・コンテンツの感想
> ・コンテンツに間違いを見つけた
> ・コンテンツの内容に疑問がある
> ・こんな記事が読みたい
>
> などについてお問い合わせください。
と書いてあります。
今回の件はまさしく 「コンテンツの内容に疑問がある」 ではないでしょうか。
もしかしたら use(あるいはその他にもあるか)は例外かもしれないのですから。
もう質問した後で、返事がなかなか来ないからここで質問したというのでしたら、
ごめんなさい、余計な事でした。
>>615 まあそれも一つなんでしょうけども、同様に書いてあるところは無数になります。
というよりuseのことに書いてあるところが見つからないのでここで聞いてみた次第なのですが。
>>616 同様に書いてあるところが無数にあるのでしたら、
いくつかランダムにピックアップして著者(管理者)に訊いた方が、
より確実な情報が得られると思いますが、どうでしょうか。
>>596 本当に変数の値を1/2にするコスト(整数だから1回右に算術シフトするだけ)
すら惜しむ必要があるのならCを使うのは矛盾してる。
馬鹿かお前。
619 :
594 :2012/07/22(日) 14:20:05.51
>>617 useうんぬんについて書いているサイトがあるならそれもごもっともなんですけどね。
どなたかこの件について知っている方がいればレスをお願いいたします。
別に急ぎでもないし、前からずっと疑問に思っていたことなので。
QTだと逆に三単現使うなって規則があるな
命令的なニュアンスで書いてるんでしょ
関数(メソッド)名でのuseCacheとusesCacheは異る物を示すことに注意すること。 useCacheはキャッシュを使用するように要求する(bool引数でon/off切替えのケースもあり) usesCacheはキャッシュを使用状態にあるのかを問い合わせる。 でも、大抵の場合どちらも使わない。(引数名ならよくある) 何故か。 それはキャッシュ無しバージョンのクラスを作って、それにキャッシュ機能をもつクラスをかぶせるよう作るからである。
623 :
uy :2012/07/22(日) 14:33:21.35
おっと、名前欄忘れてた
hasChild は意味的に「子ノードを持っているか?」となりますが useCache は「キャッシュを使うか?」じゃなくて「キャッシュを使え」というニュアンスが込められているように感じます。
625 :
622 :2012/07/22(日) 14:37:04.34
>>624 いや意味不明なんですがw
恐らくそんな邪推するような深い意味なんてない。
たまたま現状の分布がそうなってるだけ。
要するに「キャッシュを使うかどうか」を表す値が必要になるような分野では
三単元でbool値を表す作法が一般的な言語はあまり使われないんだろう。
>>619 ですから、
>>597 であなたが示したサイトの管理者に、
「Boolean 値の動詞は三単現動詞を使うと書いてありますが、
use の場合も三単現動詞を使うのですか? ネット上に実例が見当たらないです。
これは例外なのですか?」 と質問すればいいと思うのですが。
言っておきますが、ここで質問する事じゃないと言ってるわけではありませんよ。
ここで質問しつつ、解答に時間がかかってもいいのでしたら、
命名規則を書いたサイト管理者にも訊いてみた方が良いのでは? と言っています。
先に管理者からの結果が得られれば、ここに報告すればいいですし。
(もちろん管理者に許可を得てからですが)
かたくなに拒む理由がよく分らない。
>>629 確かにおっしゃる通りですね。
建前ばかり言ってても仕方ないのでぶっちゃけて言うと2chだと気軽に聞けても
サイト管理者に聞くというのが億劫、というのが本音です。
でもここで答えが得られずまたこの先ももやもやするということになったら考えます。
どうもありがとうございます。
useXXXってのは今では単なる習慣だし。 もともとは命令形から来たものだけど。
>>628 確かに奇妙だね。
あえて理由を推測すると、
- usesCacheよりuseCacheの方が1文字短い
- それでいて、useCacheでも十分意味が通じる。
こんなとこ?
>>611 > OOPみたくセッターと呼ぶ人はいるよ
で、それが何の前提もない状況で伝わるとでも?
もう少し、人とコミュニケーションとれるように努力しようよ。
>>631 命令形というのはたとえば"getSize"のようなことですかね。
こういう関数の名前では命令形で原形というのはわかるのですが
useCascheなりuseIE、というのでは三単現のsが付けて他の動詞と同様に統一した方が
ああbool値なんだなというの分かりやすいと思うんですよね。
>>628 Javaに限定するならなんでメソッドに限定しないの?
そういや過去スレでget/set論争もあったな
>>635 今更ですがよく使う言語はCなんです。
で、変数の命名規則のことを調べてたら上記の指針を見つけてこれはいいなと
思っていたのですが、確かTwitterでuseはなんでusesにならないんだとつぶやいている人が
いて、それ以来何故なんだろうと疑問に思っていました。
で、さっきそれについて情報を探していたらこのスレッドを見つけたので書き込んだ次第です。
>>636 ではbool値の変数で他にも例外となる変数はあったりします?
useだけ付けないという習慣ですか?
Javaでも規則になってるのはメソッドだけなのに なんで変数含めた命名規則にJavaを持ち出すの?
>>639 例外じゃなくて
もともと規則が無いところに存在する習慣
>>598 疑問文じゃなくて、 if (obj.isXXX) ... て書いた時に条件部が現在形のふつうの文になるように
決まってるんだろ。
>>640 すみません、それは引用ミスでした。
javaではメソッド名&変数名のどちらもbooleanの場合は↓のようになります。
http://www.okapiproject.com/java/java_codeconventions/jcc_naming.htm 2.9.4.boolean 変数を返すメソッド
boolean 変数を返すメソッドについては、「is + 形容詞」「can + 動詞」「has + 過去分詞」
「三単現(三人称単数現在)動詞」「三単現動詞 + 名詞」のいずれかの名称をつけます。
特に動詞は三単現以外の動詞は利用してはいけません。
また、true の場合がどちらであるか判別しやすい名前にするために通常は true の場合を名称にします。
2.10.1.boolean 変数名
boolean 型の変数名については boolean 変数を返すメソッドの命名規則(2.9.3)に準ずるものとします。
useほど頻度は多くないけどshowとかenableとかforceとかmakeなんかも 動詞の原形の変数名がbool値を持つ例が有る
>>643 >命名規則(2.9.3)に準ずる
と書いてるのになんで2.9.4を引用してるの?
>>boolean 型の変数名については boolean 変数を返すメソッドの命名規則(2.9.3)に準ずるものとします。 メソッド名 IsEmpty に対応する変数名は isEmpty なのか (変数名は empty は)いかんの? っつーかbool型のメソッド名に対応する変数名も俺は論議した方がいいと思う
やっぱり「習慣」で済む話だな Javaみたいに標準的な規約の無いCならなおさら
>>652 多分ね、次はイベントハンドラ関連の命名方法で迷うことになる
命名規則について気にし出したのはリーダブルコードという最近の本を読んだからです。 この本に”ブール値の変数名は、頭にis, has, can, shouldなどをつけて分かりやすくすることが多い” と書かれており、は〜なるほどなとググってみたのがきっかけです。 (これについて本に書かれている情報は結構少ない、約1ページ) ちなみに今読み返してみたらコード例に bool use_ssl = true; とやはりuseが使われていました。
>>653 厚かましいお願いですが、ざっくりで構わないんで要約して頂けませんでしょうか?
消防か?そんくらい読めよ
>>656 [質問]
equals ってなんで三単現動詞なの?
[回答]
Equals は引数を取って Boolean 値を返すんだよ。
で、一般な的には次のように使うんだ。
if(a.Equals(b)) {}
意味的に分りやすいよね、美しいよね。
>>642 のように「ふつうの文になるように」という事を意図するのは、
>>644 が笑い飛ばすほどおかしな事ではないと思う。
644って質問者では
661 :
594 :2012/07/22(日) 18:06:00.37
>>660 違います。
荒れて話が流れてしまうようなことはしたくありません。
何でここってID出ないんですかね。
662 :
594 :2012/07/22(日) 18:11:05.04
>>658 ありがとうございます。
Cでも(というか何の言語でも)この命名規則がいいなと思うのは
コードが文章を書いている風になって読む人(未来の自分を含む)に優しいからですね。
動詞の主語を関数名に入れたり、あるいは引数に入れなきゃならない場合もあるけど、 そういう時に三単現にするべきかどうか迷う。 foo.equals(bar) じゃなくて、 equalsFoo(bar) とか equals(foo,bar) みたいなやつ。
>>662 母語の人にとっては読みやすいらしいよ。
自分みたいに、せいぜい頑張れば読める程度の人間だと、そこまでメリットを感じないけど。
もはや日本語プログラミングはネタみたいなもんだしな
>>660 笑いながら質問するのか。
それはそれで、アホと言われてもしょうがないだろ。
>>659 どこがどうアホか言ってみな。
ついでに、なぜ三単現のsを使うかって話をしてる時にisXXXがどうとかトンチンカンなことをいってる
>>642 の意味もね。
スレの流れも追えない「アホ」出現 (w
>>667 isも三単現だし、594-は「〜のs」なんて限定してないし
>>668 変化が特殊なのはともかく、変化しないのは困るよなー。
例えばsetDataという名前があったとして、どう考えても「データをセットする」にしか読み取れず、
「データがセットされているか」や「セットされたデータそのもの」は別の名前にしなきゃならないだろうから。
672 :
671 :2012/07/22(日) 18:43:05.70
あ、ごめんちょっと寝ぼけてた
>>671 そうですね。
違う単語を使うか、あるいはhasSetData(has + 動詞)とかがいいんですかね。
ゲームの「リザルト画面」って英語では何て表現するのでしょうか? result screen だとリザルト用に普段のスクリーンとは全く別のスクリーンがあるみたいな感じがして何か違う気がするんですが…
ゲッター系のメソッドに限り三単現なんじゃないの。
>>661 そう思うんだったら常に酉かコテ付けろよ
別の規則が作られたところでも使い続けてるから例外になってるけど もともと例外でも何でもなくそれだけ広く使われてきた慣習と言うこと どういうルールがあるかと言えば慣習に合致するものとしか言い様が無い
そりゃ慣習知らないようじゃ分析もできないわな ただでさえ英語もわかってないのに
683 :
594 :2012/07/22(日) 21:21:33.28
>>681 慣習というならソースをお願いします。
参考にしたいので。
684 :
594 :2012/07/22(日) 21:27:06.93
それとuse以外の例外リストのようなのもあればお願いいたします。
>>680 すみません。専ブラ入れてないので何度か名前入れ忘れてますね。
ごめんなさい。
686 :
594 :2012/07/22(日) 21:29:54.88
言ってるそばから。。。
>>683 広く使われてる事実を目の前に何のソースが欲しいのか
慣習でなければ何だよ
別の規約に基づいてる可能性がある、とかじゃね
690 :
594 :2012/07/22(日) 22:12:21.85
>>689 確かに。そんな感じですね。
仮に慣習化されてるなら”ただしuseは○○のため除く”というようなことが
文言として文章化されてて当然だと思って聞いてみたけど無駄みたいですし。
とはいえ英語圏で聞けるなら2chで聞いてないんですが。
まあしばらくこのスレ見てるので何か知ってる人がいらしたら
よろしくお願いします。
情報もらっておいて相変わらず舐め腐った態度だな。
692 :
594 :2012/07/22(日) 22:27:58.92
今更気付いたか低能
694 :
594 :2012/07/22(日) 22:30:47.74
>>691 あなたから情報もらいましたっけ?慣習ってやつ??
どうもしっくりこないんですよね、それ。
695 :
594 :2012/07/22(日) 22:33:28.99
意味ないと思うけど692は私じゃないですので。 一応書いておきます。 低脳とか馬鹿とかそういう言葉を人に使いません。 イヤミを言いたくなることはあっても。
慣習でないなら何?
698 :
594 :2012/07/22(日) 22:49:52.60
>>696 それが知りたいから書き込んでるんですよ。
慣習なら慣習でいいんですけど、use以外にどういうのがあるんです?
show
>>695 いっても無駄ほっとけって。
useの場合だけ原型を使うなんて習慣はないでしょ。
現にusesとかusingを使ってる人もいる。
>>628 のリンク先を見ると、useCacheという名前は変数名として使われている例が多い。
三単現を使うそもそもの動機が
>>642 の言うとおりのものなら、この場合三単現を使う理由はないわけだし。
useの場合だけ原形を使う習慣があると誰か言ってたのか。
そんな慣習ねーだろ 自分の作りだした幻想に反論してんじゃねーよ
704 :
594 :2012/07/22(日) 23:03:34.35
>>702 631,636,641,651,681,687,696さんあたりが「習慣」「慣習」の一点張りですね。
705 :
594 :2012/07/22(日) 23:05:07.49
useの場合だけ、とは特に名言してないか。
706 :
594 :2012/07/22(日) 23:18:04.42
707 :
594 :2012/07/22(日) 23:22:38.57
そして645に書かれているshow/enable/force/makeもuseと同様の傾向があるようです。 これらについて情報をお持ちの方がいらっしゃいましたらよろしくお願いいたします。
>>706 だから、しつこいようだがメソッドの名前と変数の名前の違いということで
一応説明がつくんじゃないの?
単にそのオブジェクトの状態、状況を表すものなら、 「そのオブジェクトは〜か?」って感じで、主語より三単現になるが、 指示されたことを単にフラグとして持ってるものなら、 特に主語付きでもないので(あるとしたらそれを指示した貴方自身)、原形を使ってる とか妄想
特に、動作を表す動詞については その現在形を使うことは、日ごろの習慣をあらわすことになるので 使うのに疑問を持つのかもしれん。
>>676 意外とscreenって意味広いんですね、タイトル画面もtitle screenみたいですし。
「screen=モニタの表示部分」みたいなイメージ持っちゃってましたが、杞憂でした。
713 :
594 :2012/07/23(月) 08:06:23.75
>>708 すみません、どういうことなんでしょう?
javaの命名規則に従うならメソッドも変数名も同じく動詞で始める場合は
三単現になるという理解ですから、その2つで違いがあるというのがよくわかりません。
>>709 そのときの主語等の状況で原形になるというのはちょっとありそうなんですが
useの場合は大体どんな状況でも原形で使われてそうなんですよ。
>>710 そうかもしれないけど、原形の割合が多すぎるのがどうも気になりますね。
714 :
594 :2012/07/23(月) 08:14:16.75
>>701 >
>>628 のリンク先を見ると、useCacheという名前は変数名として使われている例が多い。
>三単現を使うそもそもの動機が
>>642 の言うとおりのものなら、この場合三単現を使う理由はないわけだし。
動機ってのはif文にしたとき文章に近くなる、ってやつですよね。
if does hoge なら原形のままでいいと思うんですが、bool値命名のルールではdoesはいちいちつけないため
if hoges と三人称単数現在にする、と。だからuseも三単現になるべきだと思うんですが。
>>683 ソースがあったら つまり
>>690 文言として文章化されて たら、もう規則じゃないの?
ないから慣習だとおもうよ
>>714 use の事は私もまだ分らないから言及しないが、
> bool値命名のルールではdoesはいちいちつけないため
> if hoges と三人称単数現在にする
if文にしたとき文章に近くなる事を考えるなら、理由が違うだろ。
訳してほしいとのことだったから暇を見て
>>658 に訳したわけだが、読んでないのか?
(依頼は君じゃなかったっけ?)
Equal なら if(a.Equals(b)) となるから Equals だ。
if AAA equals BBB, ...
does を省略したから Equals になってるわけじゃなく、元々 does は不要だ。
does を付けたら無駄に強調されてしまうだろ(強調の do + 動詞の原型)。
717 :
594 :2012/07/23(月) 18:52:45.73
>>716 >if文にしたとき文章に近くなる事を考えるなら、理由が違うだろ。
>
>訳してほしいとのことだったから暇を見て
>>658 に訳したわけだが、読んでないのか?
>(依頼は君じゃなかったっけ?)
私です。拝読しました。ありがとうございます。
>Equal なら if(a.Equals(b)) となるから Equals だ。
>if AAA equals BBB, ...
>
>does を省略したから Equals になってるわけじゃなく、元々 does は不要だ。
>does を付けたら無駄に強調されてしまうだろ(強調の do + 動詞の原型)。
その通りですね。私があほでした。
通常のきちんとした英文だとdoesが必要という意味のわからない勘違いを
していました。すみません。。
718 :
594 :2012/07/23(月) 19:31:09.34
結構しっくり来るbool値での原形/三単現の選択法にたどり着いたように思うので書いておきます。 それは「しろ」を付けて命令文にして意味が通るか? ・通れば→原形 ・通らない→三単現 例えば use cache なら、cacheをuseしろ(=使え) → ○ → 原形 use ssl ならsslをuseしろ → ○ → 原形 show result ならresultをshowしろ → ○ → 原形 contain key ならkeyをcontainしろ → × → 三単現 delete node ならnodeをdeleteしろ → ○ → 原形 have childならchildをhaveしろ → × → 三単現 こんな感じです。どうでしょうか?
719 :
594 :2012/07/23(月) 19:36:06.62
なのでtrimやbeautifyといった動詞も原形になるっぽいですね。
これまで出た意見を無視して突然まとめに入りました 皆様、お疲れ様でした
ほうほう ところで、RPGのキャラクターを示すクラス「Character」のメソッドとして、そのキャラクターにアイテムを使わせるメソッドを用意したいんだが、 メソッドの名前はどうしたらいいんだ? 俺なら UseItem() と命名するだろうが、これはbool値を返すメソッドに見られてしまうのだろうかるのだろうか
>>721 そんなのシグニチャなりコメントなり見ればいいだろ
724 :
594 :2012/07/23(月) 19:57:27.58
>>720 気分を害したようなら謝りますが、無視しているつもりはないです。
まとめじゃなくてこうじゃないかなと思いついて検索してみたところ
こうじゃないかなと思って書きました。
何か気づいたような口振りだけど何も新しい事出て来てないよね。
>>718 contain は命令形としても使えますよ
730 :
594 :2012/07/23(月) 20:21:17.06
>>725-727 私が書いたのが正解なのかは分かりませんが同じ意見ということになりますね。
意味が通るかどうかじゃなくて意図と合致するかだね。
>>729 たしかにそうですね。
だけどcontain_keyっていう変数がキーを含めろって意味には
ならないと思いますがどうですか?
なるよ
734 :
594 :2012/07/23(月) 20:25:00.82
英語勉強したら?
>>728 useは原形でいいとして、動詞で始めるbool値を作るときに
どうするのかという指針に
>>718 はなり得るんじゃないかとおもうんですが。
>>732 変数なら命令ならないと思うが、関数ならなると思う。
同様に、use_cache という変数ならならないと思うが、関数ならなると思う。
738 :
594 :2012/07/23(月) 20:31:05.29
739 :
594 :2012/07/23(月) 20:35:44.80
>>737 変数でもuse_cacheという関数の引数などで
キャッシュを使えという意味でおかしくないと思うんですが、どうでしょう?
>>739 君がそれで納得するならそれでいいのでは。
>>739 日本語がやや曖昧だな。
その文で use_cache というのは変数だな?
その文の中の「関数」というのは例えばどういう関数だ?
その関数と use_cache 変数をどう組み合わせて使う事を想定している?
contain_key という変数がキーを含めろという意味で使える関数は作れないのか?
作れるけど違和感があるという意味か?
use_cache(bool)
>>742 は
>>594 ではないよな?
紛らわしいから、できる事なら他の人が勝手に答えないでほしいんだが
そいつはすまん
>>714 (というか594の人)
なんか話が通じてないと思うんだけど、俺がいいたいのは要するに変数名については
bool値を表すものであっても三単現を使う理由がないということ。
三単現を使う積極的な理由があるのはメソッド名のみ。
useCacheのヒット数がusesCacheより多いのは、useCacheという名前が変数名として
多く使われているからであって、必ずしもメソッド名としてusesCacheより好まれているからではなさそう。
>>628 変数名については三単現を使う積極的理由がないのは、メソッド名の場合は
hoge.usesCache()
は、
Hoge uses cache.
という命題(命題という表現を使った意味はよく考えて欲しい)を表す英文として読み下せるのに対し、
変数名の場合はそうはいかないから。
しつこいけど、習慣だって意見は眉唾だと俺は思うなやっぱり。
命令云々は正直もっと怪しい。
強制的な規則が無ければ自動的に習慣って事になる
>>741 >
>>739 >その文で use_cache というのは変数だな?
>その文の中の「関数」というのは例えばどういう関数だ?
>その関数と use_cache 変数をどう組み合わせて使う事を想定している?
ネット上からデータを取得する関数で、use_cacheがtrueの場合は
一度目はネットから、二度目以降はキャッシュから値を読むというような感じですかね。
>contain_key という変数がキーを含めろという意味で使える関数は作れないのか?
>作れるけど違和感があるという意味か?
作れると思います。
ただ実際のプログラムで使うときはキーを含んでいるかどうかというbool値として
contains_keyという名前になると私は思います。
日本語がおかしいですね、すみません。 作れると思います。 ただ実際のプログラムで使うときはキーを含んでいるかどうかというbool値として contains_keyという名前を使うんじゃないかと私は思います。
普通はcontainでなくadd、storeあたりを使うし。
キーを含んでますか?という問い合わせ用途ならcontains_keyでいいけど キーを持っとけ、というフラグ的な用途だったらcontain_keyだろ。
うん containsとは根本的に使いどころが違う
753 :
741 :2012/07/23(月) 22:03:42.29
>>748 関数と変数がどう繋がるのか意味が分らなかったが、今分った。
>>748 で言っている「変数」というのは関数の「仮引数」の事か。
それなら、contain も命令形で使えなくはないぞ。
例えば何か情報をパッキングする場合に、
ヘッダ情報も含めるかどうかを示す Boolean 型引数を持つ関数。
void packHoge (Hoge info, bool contain_header) { ・・・ }
プログラマから見て命令形というニュアンスを含むと考えて問題なくないか?
使えなくはないという煮え切らない態度なのは、自分自身は習慣で使わないからだ。
普段は
>>750 辺りを使う。
ただ、contain を使ったとしても違和感なく命令形として意味は通じる。
>>718 の理由ではやや曖昧さが残るのではないか。
755 :
741 :2012/07/23(月) 22:09:37.38
あぁ、すまん。 仮引数じゃなくても、メンバ変数の話でも通じるか。 というか終始メンバ変数の話だったか・・・ まぁそれでも同じ事で、contain を命令文にして意図と合致する場合もあり得ると思う。
booleanなら無条件で三単現を徹底するとシステムハンガリアンになるな。
>>745 だめだ、難しくて何度読んでもわからない。。。
>>753 曖昧さうんぬんは同意ですね。
>>731 のおっしゃるように意図と合致するかどうか、ではどうですか?
言葉を使うのに意図と合致してるか見定めるのは当たり前
762 :
741 :2012/07/23(月) 23:16:49.37
>>759 俺には、
>>748 > ネット上からデータを取得する関数で、use_cacheがtrueの場合は
> 一度目はネットから、二度目以降はキャッシュから値を読むというような感じですかね。
これが意図と合致していて、
>>753 > 例えば何か情報をパッキングする場合に、
> ヘッダ情報も含めるかどうかを示す Boolean 型引数
> contain_header
これが意図と合致していない、とはっきり言える根拠が見当たらない。
>>753 > ヘッダ情報も含めるかどうかを示す Boolean 型引数を持つ関数。
> void packHoge (Hoge info, bool contain_header) { ・・・ }
つbool with_header
言い換えができる事は問題じゃない
>>758 単純な話だと思うけど俺の説明が悪いのかなw
The skly is blue. (true)
The sea is purple. (false)
A turtle flies. (false)
こういう風に、それが正しいかどうか(true/false)言及できる文を命題と言うんだけど、
メソッドの場合は三単現を使うことでこのような命題を表す英文に読み替えができるようになる。
例えばif(hoge.usesCache())のhoge.usesCache()は"Hoge uses cache."
と読み替えが出来る。
変数名の場合、仮に三単現を使っても
if(usesCache)
これには主語にあたる部分がないからそういう読み替えはできない。
だから変数名の場合は三単現を使う積極的な理由がない。
a contains bがaを主語とした文章としてそのまま読めるのが肝なんだろうな。 変数名であったり、関数contains(a, b)じゃあうまみがゼロだな。
>>765 変数の場合に三単現にする積極的な理由はないけれど、
変数と関数で命名法則を変える理由もないってところかw
>>762 >
>>753 >> 例えば何か情報をパッキングする場合に、
>> ヘッダ情報も含めるかどうかを示す Boolean 型引数
>> contain_header
>
>これが意図と合致していない、とはっきり言える根拠が見当たらない。
うん、たしかにこれも合致してると思います。
やっぱり曖昧さが残るってことですねえ。
>>765 どうも丁寧に説明頂きありがとうございます。
なんとなく理解できました。
どういたしまして。
なんとなくだけど、何かをする系のメソッドを使った文、例えばparentNode.appendChild(newChild)だったら、これに対応する英文というのは Hey, you "parentNode"! Append "newChild" to yourself as a child! みたいな「命令文」で、
<続き> 状態を尋ねる系のメソッドを使った文、例えばsomeNode.hasChildNodes()だったら、対応する英文は He "someNode" has some child nodes. みたいな「普通の文」なんじゃないのかなー、と思ってる。
<続き> 逆に言うと、これらの英文を思い浮かべてコードを書くと、自然に、普通のメソッドは原形で状態を尋ねる系のメソッドは三人称単数形になるんじゃないのか、と。He "someNode" have some child nodes. とは書かないし。
引用は以上です。規制により分割しました、読みにくくてすみません。
命令文による解釈: Hey, Satshi! Get a pokemon! Satoshi { void getPokemon(); } あるいは戻り値はゲットできたかどうかのbooleanか
Aクラス内で利用している Player クラスのインスタンス名は player で、 Player クラス内には isRunning という player が走っているかどうかの Boolean 値を調査するメソッドがあります。 例えば A クラスでは以下のように記述して調査します。 if(player.isRunning()){ … } ここで、A クラスを利用する Bクラスから、 A クラス内 player が走っているかどうかの調査を行いたいとします。 A クラスにはなんという名前のメソッド名を用意するのがよいでしょうか。 現在は checkPlayerIsRunning というメソッド名にとりあえずしています。 function checkPlayerIsRunning():Boolean{ return player.isRunning(); } 英語難しいです。
素直にisPlayerRunningで良いのでは? っていうか、それ以前にBからもplayerの存在を意識する必要があるのなら playerそのものを晒せば話が早いかと
>>778 ありがとうございます。
メソッド名は言われてみるとなるほど!と思いました。
player を晒す、という方法も、確かにその通りだと気づけました。
どうもありがとうございました!
A.isPlayerRunning
ただの煽りたいだけのアホはスルーで
get player is running getPlayer().isRunning(); getPlayerIsRunning();
なつだねえ
if( A._no_pureiyaa_ga_ranningu()) {...}
確かに意味がとりにくい文章ではあるが、理解できないのはさすがに馬鹿すぎ。。
馬鹿なのでまったく分からなかったね
A.IsPlayerRunning()で合ってるよ
A_PlayerIsRunning( ) だと思うが…
791 :
790 :2012/07/28(土) 18:32:53.45
もしくは PlayerAIsRunning( ) の方がいいかな。
A.player.isRunning();
あぁ、そういう時期だったか
>>777 〜しているかどうかを示す関数の命名規則として「Is なんたら」を採用しているのであれば、「A.IsPlayerRunning」で正しい
if文の意味が通るようにしたいのであれば「if (A.PlayerIsRunning)」にすればいい
英語のコードではどちらも見かけるが、俺なら前者を使用する
一応書いておくけど、
>>791 は意味が通っていないからな
A.getPrayerStatus() == RUNNING
短めに A.getActivity()
>>796 一晩たったらコードが完成しているという救済(?)があるとかw
ささやき-詠唱-祈り-念じろ! *player は まいそうされます*
>>797 >一晩たったらコードが完成しているという救済(?)があるとかw
そんなご利益があるなら、毎日でも祈りますがな (w
春だなぁ
いや冬だ
ビットパターンを操作するときの定数名をお願いします。C系の列挙型とかは使わずに 完全にビット演算子だけを使う場合の。 例えば、1バイトのbit7-5がxxx、bit4-0がyyyを表すとき、 yyyは a & 0x1f xxxは (a & 0xe0) >> 5 ?で取れますが、マジックナンバーに定数をつけたいのです。
え?
(a & XXX_MASK) >> XXX_SHIFT みたいな?
>>803 俺なら「そのビットは何に使うのか」の用途から名付ける。
まあ、本当にマジでビットの位置以外の意味が全くもってないのなら
(例えば「ビット操作」という演算そのもののテストプログラムとかならそうだろう)
BITMASK_7_5とか付けちゃうだろうけどさ。
>>803 ケースバイケースじゃないでしょうか。
可読性を重視するなら、
RGB_RED, RGB_GREEN, RGB_BLUE 方式
十分小さなプログラムで簡潔さを優先しても問題が小さいのなら
RED, GREEN, BLUE 方式
ただのリテラルではなく、ビットマスクであることを名前に盛り込みたい欲求に駆られるかもしれないが、
それは諦めた方がいいと思う。
っていうか、ビットフィールドを使うのが一番簡単。
C言語じゃないのでビットフィールドないんですよね。
>>806 名前はあるフォーマットのファイルを読むので、既にその仕様書で決まってます。
>>805 のXXXMask,XXXShift方式でいこうかな。
mask, shift だと位置情報が重複してるから、汎用処理を作るなら width, shift ってのもアリ。
ちなみに、1bit幅ようはフラグもまじってたり、いやーーー。
>>808 C じゃないらしいのでマクロもないのかな。
マクロとかインラインあるなら (無くても、処理速度が問題にならないなら普通の関数で)
/* XXX の取得 */
#define XXX(x) (((x) & 0xe0) >> 5)
みたいにすればいいかも。
>>810 参考にLinuxのファイルシステムのヘッダファイルより
/*
* Mount flags
*/
#define EXT4_MOUNT_GRPID 0x00004 /* Create files with directory's group */
#define EXT4_MOUNT_DEBUG 0x00008 /* Some debugging messages */
#define EXT4_MOUNT_ERRORS_CONT 0x00010 /* Continue on errors */
#define EXT4_MOUNT_ERRORS_RO 0x00020 /* Remount fs ro on errors */
#define EXT4_MOUNT_ERRORS_PANIC 0x00040 /* Panic on errors */
#define EXT4_MOUNT_ERRORS_MASK 0x00070
マスクの組み立てもいくつかあった
#define BTRFS_BACKREF_REV_MAX 256
#define BTRFS_BACKREF_REV_SHIFT 56
#define BTRFS_BACKREF_REV_MASK (((u64)BTRFS_BACKREF_REV_MAX - 1) << BTRFS_BACKREF_REV_SHIFT)
#define EXT4_EPOCH_BITS 2
#define EXT4_EPOCH_MASK ((1 << EXT4_EPOCH_BITS) - 1)
#define EXT4_NSEC_MASK (~0UL << EXT4_EPOCH_BITS)
他の表現もあるかも知れない
>>811 インラインはありますので、定数名をつけないで、マジックナンバーを
インラインに閉じ込めるのも手ですね。
>>812 おお、ありがとうございます。参考になります
どなたか、「環境マップ用の頂点シェーダ」の命令を格納する文字列へのポインタの変数名をお願い致します
>>814 vsprogEnvMap
vscodeEnvMap
vsEnvMap
横向きなら0縦向きなら1という変数はなんて名前がいいでしょうか? 画像の横か縦かで処理を変えるもので 横向きなら横のピクセルを元にある計算を行い 縦向きなら縦のピクセルを元にある計算を行うというようなものです
818 :
817 :2012/08/02(木) 22:42:18.67
一応age
isVertical
androidではportrait
821 :
817 :2012/08/02(木) 22:51:13.19
ありがとうございます 確かに0と1ならisVerticalでよさそうですね 後学のために1と2ではどうでしょうか?
822 :
817 :2012/08/02(木) 22:52:36.19
ありがとうございます portraitに縦なんて意味があったとは知りませんでした 参考になります
>>821 むしろ、可能なら列挙型を使え。
C++11なら
enum class orientation_t { PORTRAIT, LANDSCAPE };
orientation_t orientation = ( width > height )? orientation_t::LANDSCAPE: orientation_t::PORTRAIT;
あたりだな。
824 :
817 :2012/08/02(木) 23:28:35.61
>>823 言葉は知ってますが列挙型のない言語で概念はわかりません
C言語も触ったことがないので
昔オブジェクトのようなものとチラっと言われたような気がしますがよく覚えてなかったり・・・
後で詳しく調べてみます
他にdirectionとかaxisとか思い浮かびましたがセンスないですかね
大昔のBASICじゃないんだからマジックナンバーとか勘弁して欲しいねw
命名以前の問題だよ
あと一応言っとくけど、
>>820 のいうportrait/landscapeは長方形の向きという
感じの意味なので、スキャンの方向みたいなことを表現するのには使えないよ。
1と2にする目的は何?
そのうち斜めとか色々増えるのを考慮してみたいな
肖像画と風景画だもんな。
複数の状態を持たせるなら、directionでも良い気がするな。
最初はどうかと思ったが、axisもアリだな
>>830 >>817 のニュアンスを込めるなら、axis は良くないと思う。
ODE で axis を調べてみると、向きや方向といった意味は一切ない。
何かを測るための「軸となる直線」とか、
何かを分ける「軸となる直線」などの意味しかない。
ちょっぴりエスパーすると rotateQlockwise (変数の値×90度回転する)
Qlockwise?
834 :
832 :2012/08/04(土) 13:01:45.05
clockwiseだったw いや、それでもおかしいか。rotationでもいいかも。
じゃさらにエスパーすると vectorとかacceleratorがきっといいよ
long yoko0tate1;
.netで変数名やメソッド名に アンダーバーを途中につけてもいい? ManyUnko_MasiMasi()みたいな
コード規約の問題
だめ
>>837 クラスもenumも名前空間も使える言語でそんなことをする必要性がむしろないと思うけど。
最近はあんまり見かけないけど、get_wild_and_tough( ) みたいな名前の場合もあるしなあ。
懐かしいな
でも自動生成されるメソッドについてるよね。 Button1_Clickみたいな
C#のイベントハンドラは"コントロール_イベント名"という命名規則がある
ソースは?
オリバー!
ごめん、aspの話だったわ
ofだったかをアンダースコアに置き換えてる例を見たことがあるなあ。 確かにスッキリはしてたんだけど、どうなんだろう。
スッキリしてたのなら、何も問題ないのでは?
別の意味でスッキリはしてなさそうだが
どんな意味?
853 :
デフォルトの名無しさん :2012/08/09(木) 01:38:25.68
テーブルのカラム名で何かいいのをお願いします。 データを文字順(国語辞典方式)で並び替えるための文字列の名前を考えてください。 一応今まで使ってたのは、 string_for_order とかですが、いまいちしっくりこないです。
「何の」順か書いてないせいじゃないかね。 dictOrderString ってのは...何か垢抜けない感じがする
読みの順ってことじゃないかな yomi で
>データを文字順(国語辞典方式)で並び替えるための文字列 この文字列ってデータそのものとは別に存在するのか データそのものからも順番は決定できるけど 並べ替えはそっちの文字列をもとにするって事?
sortTableInDictionaryOrder
sortByKana
859 :
853 :2012/08/09(木) 10:50:24.55
>>854 そうですね。
その、「何の」っていうのが「国語辞典の順番にレコードをソートするための」
になってしまうので、なかなかしっくりする言葉が見つからないんです。
>>855 読みのデータはすでにご指摘の通り、yomi というフィールドがあります。
>>856 データの代表的なラベルとして name があって、これは日本語と英数字、一部記号で構成されています。
そのデータを、英数字とカタカナのみで表現したのが yomi です。
国語辞典順に並べるためには、 yomi をさらに別の変換を施して保存したものを使います。
変換方式は割愛させていただきますが、とにかく yomi とは別の文字列で通常はユーザーには見せないデータです。
>>857-858 ありがとうございます、参考にさせて頂きます。
>>853 lexicographical key
あ、 lexicographic key か。
862 :
832 :2012/08/09(木) 11:25:36.15
>>859 何重にも用意せず比較関数書けばいいだけじゃん
864 :
859 :2012/08/09(木) 14:23:51.66
>>861 素晴らしい!!!!!
まさにこれです!!!!!
ありがたく使わせていただきます。
本当にありがとうございました m(__)m
>>862 ありがとうございます、参考にさせて頂きます。
>>863 濁点を取り除いたり、長音を削除したり、拗音を直音になおしたり
データは100万とかのオーダーになる予定で、
検索のたびに比較関数を呼び出しても大丈夫でしょうか?
データベースはMySQLでMyISAMエンジンです。
ソートルール変更の可能性が今後ゼロとは言い切れないので、
もし何かいい方法があればとも思いますが。。。
とにかくこれから lexicographic_key にコードを変更していきます。
まだ、始まったばっかりなのでよかった(^^;
みなさんどうもありがとうございました。m(__)m
今だってソートしてるんだから比較してるんでしょ
リファクタリングツール使わないのか
今回の例はMFCなんですが、MFCに限った問題というわけではないです。 あるクラスに独自の機能を追加した派生クラスの名前として、 ****Ex以外にどのような末尾語がよく使われますでしょうか。 今までは****Exとしていたのですが、最近のMFCは、 CDialogExやCWinAppExなど、初めからExが付いたものが存在し、 それらの派生クラスをどのように命名するか考えています。
>>867 Ex2ndEdition,ExCustomTurbo,ExDangerousAttack
もっと意味考えてつけようよ。
package違いなら同じ名前にすることもある。
>>867 結論から言えばEx2みたいな感じの投げやりな名前で良いのでは?
Exとかサフィックスする時点で名前で機能を表現することを諦めてるわけだから
サフィックスにこだわっても無意味だよね。
>>867 ExEx
WEx
SuperEx…は、意味がわからんな。thisじゃん。
>>869 Exまでは許せるがEx2はさすがに引け目を感じるw
My****
Myonnaise?
俺は平気でExExとかCoreCoreと付けるけどなぁ これが一番分かり易いし
下手に付ける名前は要らないからな 複数の関数または複数のクラスの、共通部分を抜き出したものはHogeCommon 長い関数の一部を抜き出したものはHogeCore、そのまた一部はHogeCoreCore ある関数やクラスを拡張したものはHogeEx、その(略)HogeExEx ある関数やクラスの、バージョンが違う有象無象をHoge2、Hoge3 って感じで付けてる コメントで分かり易く説明しておけばいい
Packet PPacket
そうか。設計しないと実装してから名前つけるのか。
設計がある場合には、設計する人はコーディングしないで好き勝手やれるやつ?
>>879 俺は自分で設計して自分でプログラミングしてるぞ。
高級言語での実装は設計の一部。
商品テーブル 商品id、商品名、値段、説明 例えば上のテーブルに残数項目等の複数項目追加を頼まれたのですが これからもそういう要求があると思うのでALTERでテーブルの変更はせず 別テーブルを作ってユーザ側で追加してもらうことにしました 項目テーブル 項目id、項目名 項目値テーブル 項目値id、商品id、項目id、項目値 そこでこういう風に関連付けようと思っています 項目テーブルと項目値テーブルの名前つけに困ってるのですが 商品テーブルをitemという名前にした場合どんな感じの名前がいいでしょうか?
information
DirectXで2次元での当たり判定の関数を作りたいと思ってます。 2つのOBJ(ポリゴン)のXYを引数にすればいいと思うのですが、 「当たる方のOBJ」と「当たられる方のOBJ」という意味の変数名でいいものはないでしょうか? ポリゴンの各頂点のXY成分は構造体で作っています。
bool hitTest(Object obj0, Object obj1)
当てる方 hitter 当てられる方 hittee
当たり判定に当たる方と当たられる方の区別は不要
設計の善し悪しの議論すんなよ
889 :
882 :2012/08/19(日) 18:51:53.70
>>883 ありがとうございます
項目テーブルはitem_informationですね?
項目値テーブルはどうしましょう?
>>887 例えば一部スクリプト言語を挟むときとか、場合によっては区別が必要かも。
>>882 項目テーブル: attribute_type
項目値テーブル: attribute
>>884 当てる方: attacker
当てられる方: defender
スクリプト言語云々はよく分からんけど、例えば攻撃側のみ運動量も評価されるとか、 可能性としてはなくはないとは思う。 もっともそれって既にただの当たり判定じゃないような気がするが。
そんなの当たり判定後に考慮すれば済む話
いやいや、例えば攻撃側の実効的な「当たり」の範囲が運動量に依存するとかいう 設定はありうるでしょ。 もっと単純な可能性として、単純な位置じゃなくて冲の間の軌跡で当たり判定を 行うということもありうる。
じゃあ当たり判定前に考慮すれば済む話
だから、ここで設計の善し悪しの議論すんなって
私の当たり判定についてのレスでだいぶ盛り上がっているようで・・・
単純な当たり判定を作るつもりなので、確かに当たる方当たられる方の区別はいりませんが、
>>885 のようにObj0とObj1にすると殴られそうな気もします。
返信して下さったattackerとdefenderを採用しようと思います。
ありがとうございました。
どういたしまして。
ちょっと待て
>>886 は眼中にないのか
悲しいじゃないか
読み飛ばしてましたすいません・・・。 hitterは分かるんですが、hitteeはどういう意味なのでしょうか?
>>901 区別する必要がないのならそんなミスリーディグな引数を採用しちゃダメでしょ。
普通にtarget1, target2とか同じ扱いをされるだろうと想像できるような名前を付けるべき。
俺が以前作った時はa, bだったな 理由は同じく区別が不要だったから
>>904 フランチャイザー/フランチャイジー
とか知らない?
あとdefenderだと当たられる(受動的)つーより防ぐ(能動的)になっちゃうんだが
909 :
デフォルトの名無しさん :2012/08/19(日) 23:43:13.44
hee
おお・・・たくさんのレスありがとうございます。 やはり変数名を考えるのは大事なことなのですね。 皆さんのレスを参考に、もう一度考えなおして見ることにします。 ありがとうございました。
どういたしまして。
順番に意味があるばあい→ Object1, Object2 順番に意味がないばあい→ ObjectA, ObjectB ちなみに、大抵の物理エンジンでは衝突ペアを後者の方法で命名している
そういえば変数名をa, bにすると内部名か何かと衝突する言語があったな…
衝突するかどうかは知らないけど、perl のソートの比較ブロックで $a, $b を決め打ちで 使う仕様を見て、その設計はないだろ…、と思ったことはある。
変なことを訊いているかも、という自覚は多少あるが・・・ 倉庫番に似たルール(一部違うが)のゲームを作ることになった。 自キャラを操作して、荷物を後ろから押して、目的地へ運ぶ、 という遊び方は倉庫番を踏襲している。 (運び方を色々工夫をしていて、後ろから押すだけではない) で、ゲームの目的とルールと遊び方は決めたが、 ストーリーはまだ決まっていない。 だから、荷物を押すのが人型キャラであることも、 そもそも押すのが荷物であることすら決まっていない。 ただ制作期間の関係から、ストーリーが決まるまで待つのではなく、 メインの部分だけでもプログラムして、さっさと遊べる状態にしなくてはならない。 (プログラミング言語はC) そこで、倉庫番であれば「壁」「移動できる空間」「荷物」「目的地」「自キャラ」 これらに相当するオブジェクトの情報を保存する構造体の名前を決めたい。 後に決めるストーリーによっては、荷物はハートになるかもしれない。 だから、例えば Cargo なんて名前はつけられない。 他にも、壁は電磁バリアになるかもしれない。 このように、ストーリーに合った、グラフィックに合った名前がつけられない場合、 どのような名前をつけると良いでしょうか。
tile
>>915 壁 wall
移動できる空間 plane
荷物 treasure
目的地 goal
自キャラ player
field object
>>915 倉庫番に限らないが、最初から「倉庫番アレンジ」としてゲームが作られているなら
素直に倉庫番の名前で作ってしまうべきだと思う。
多分それが一番抽象的かつ分かりやすい名付け方。
例えばいくら荷物→ハートだからと言って下手にHeart等と付けてしまうと、
「荷物をハートに置き換える予定だったけど、最終的に星になりました」と言われたら対応できない。
あ、移動対象の内部名をCargoと名付けたら、主人公がカーゴ君になりました!なんて事になったらゴメン
所有権を表すsってつける? たとえば、隣接するノードに割り当てられてるインデックスを取得、なら GetAdjacentNodeIndex GetAdjacentNodesIndex どっちが一般的かな
>>920 付けない。
OOPできるなら
GetAdjacentNode.GetIndex
付けないのが一般的
>>920 複数形と混同するしね。
所有権を強調するなら GetIndexOfAjacentNode かな。
>>921 AdjacentNode.GetIndex じゃないの?
>>915 [選択肢1]
抽象水準の高い名前を付ける。
例えば荷物じゃなくて「押して移動できる物体」(Pushable)
[選択肢2]
後でリファクタリングする前提で暫定的な名前を付ける
>>916 壁 wall
移動できる空間 space
荷物 load, cargo
目的地 goal_location
自キャラ player
積荷がハートか星か分からないのであれば、それら2つを表せるようにすればいい
AppleクラスとOrangeクラスを抽象化して、Fluitクラスを作るのと一緒
そももも、俺なら現時点で積荷がハード型だからという理由で、積荷を表すクラスにHeartなんて付けない
外見の違いでプログラムに影響するワケじゃないし、正直どうでもいいからな
昔、アクションゲームの変数名で、無敵モードを表すフラグが isStarMarioだかisStarModeだかになってたのを見たことがあるなあ。 確かisInvincibleより具体的な効果が想像できるからって話だった。
素直にローマ字使えばいいねん SUSHI TSUNAMI MUTEKI
>>915 ハードコートの定数なんて使わないよ
すべて外部ファイルから指定する
名前で悩む以前の問題
>>927 Undefined name 'SUSI'
930 :
915 :2012/08/24(金) 19:03:20.60
レスありがとうございます。 私も何人かの人と同意見で、具体的なモノを表す抽象度の低い名前は付けられない、 という
931 :
915 :2012/08/24(金) 19:05:48.44
レスありがとうございます。 私も何人かの人と同意見で、具体的なモノを表す抽象度の低い名前は付けられない、 という立場です。 皆さんの意見を参考に、また自分で色々考えた結果、 次のような名前にしました。 壁 : Wall 移動できる空間 : Space 荷物 : Object 目的地 : Gall 自キャラ : PC
932 :
915 :2012/08/24(金) 19:07:23.70
間違えました 目的地 : Goal
荷物のObjectって釣り?
↑アホは消えろ
アホ以外は帰ってくれないか
936 :
915 :2012/08/24(金) 22:00:08.28
>>933 いえ、至極まじめです。
>>918 さんのレスを見てなるほどと思いました。
最終的には荷物になるとは限らないので、
何になってもそれほど的外れにはならない名前がいいです。
ODE で object を調べましたが、
今回の件になかなか合っているのではないかと思います。
objectはないわ 物体の種類増えたらどうすんの?
938 :
915 :2012/08/24(金) 22:36:20.77
Object1、Object2、Object3 ・・・と増えていきます。 壁の種類が増えても Wall1、Wall2、Wall3 ・・・と増えます。
もうvoid*でいいよ
typoでもすればいいよ
>>941 設計に不備があると名前でも悩むのは常識
だからまず設計を見なおせと忠告したんだが?
↑やっぱアホ
>>942 お前は
>>1 を100回音読するべき
>>938 釣りなんじゃねぇの?と思ってしまうようなレスなんだが・・・
絵柄の違い程度であれば、そのObjectクラス1クラス内で処理できる。他のクラスを用意する必要はない
ただの壁とは動作が違うもの、例えばスイッチで現れたり消えたりするような壁が必要になったら、別のクラスを作成するべき
そしてそのばあい、Object1じゃなくてWall、Object2じゃなくてSwitchingWallのように、意味がある命名ができるはず
というかObjectという基本クラスを作成して、それを継承したWall・SwitchingWallクラスを作れるはずだ
名前をハードコートする必要はない 外部ファイルから与えればいつでも変更できる したがってコード内での名前はすべてTileあるいはCell、Boxなどのマップ上の1マスを示すもので十分
↑理解しろよアホ
理解してないのはお前だ ObjectとかWallとかくだらない名称は必要ないんだよ 必要ないものにわざわざ頭を悩ませるのは馬鹿だろ
俺にはそもそも「外部ファイル」自体の理解ができない 何で外部ファイルを利用するとプログラム上の名前が必要なくなるんだ?
Wallは別にいいけど
Larry「呼んだ?」
>>949 やってみればわかる
// hoge.dat
// ゲームオブジェクトのデータ
nanimonai = { name = "space", nakani_haireruka = true,
osaretatoki_no_ugoki = nanimo_sinai , tatakaretatoki_no_ugoki = nanimo_sinai }
kabe = { name = "wall", nakani_haireruka = false,
osaretatoki_no_ugoki = idou, tatakaretatoki_no_ugoki = kowareru }
omokute_katai_kabe = { name = "superWall", nakani_haireruka = false,
osaretatoki_no_ugoki = nanimo_sinai, tatakaretatoki_no_ugoki = nanimo_sinai }
// マップデータ
table[0] = nanimonai; table[1] = kabe; table[2] = omokute_katai_kabe
map[][] = {
{2,2,2,2,2,2,2,2},
{2,0,1,0,1,0,0,2},
{2,0,1,0,1,0,1,2},
{2,0,0,0,0,0,1,2},
{2,2,2,2,2,2,2,2}
}
map = transform(map, table)
これだけでいい
プログラム側では
Ary2D<Object> map = CreateMapFromFile("hoge.dat");
と書くだけだからハードコートも列挙型定数の名前もクソもない
プログラム中にあるのはObject型と処理と処理名(nanimo_sinai関数、idou関数など)だけ
>>953 switchばっかりのコードになりそうw
まだこういう思考回路の人っているんだね
957 :
915 :2012/08/25(土) 14:04:07.89
質問は、
>>953 における変数 nanimonai、kabe、omokute_katai_kabe、
これらの名前をどのようにしようかという趣旨のものでした。
つまり、Cargo や Heart などのような具体的なものを表す名前ではなく、
omokute_katai_kabe のような(ある性質を表す)抽象的な名前を求めていました。
その案の一つとしての Object です。
せっかくの案なのに大変申し訳ないのですが、
nanimonai や kabe、omokute_katai_kabe、この
958 :
915 :2012/08/25(土) 14:06:31.92
質問は、
>>953 における変数 nanimonai、kabe、omokute_katai_kabe、
これらの名前をどのようにしようかという趣旨のものでした。
つまり、Cargo や Heart などのような具体的なものを表す名前ではなく、
omokute_katai_kabe のような(ある性質を表す)抽象的な名前を求めていました。
その案の一つとしての Object です。
せっかくの案なのに大変申し訳ないのですが、
nanimonai や kabe、omokute_katai_kabe、この案は2つの理由で受け入れられません。
まずひとつは日本語のローマ字表記であること。
もうひとつは表記が長いこと。
どちらもソースが読みにくくなるという理由で避けています。
最初に質問した時にしっかりと言っておくべきでした。
その点に関してこちらに落ち度があります。
すいませんでした。
ハードコート君はやっぱアホだな
ハードコート君は普段CDとかレンズでも作ってんのか
テニスプレーヤーだとオモタが
>>959 実際switchばっかりにならざるを得ないでしょ?違うの?
>>958 「倉庫番風ゲーム」において、Cargoは十分に抽象的だと思うんだ
965 :
915 :2012/08/25(土) 16:59:09.18
>>964 そうですね。
たぶん、どの辺りから十分抽象的に感じるかは人によって違うのだと思いました。
私は個人的には、Cargo ではちょっと具体的かなという気がしましたので、質問した次第です。
>>953 いや、結局外部ファイルで name = "superWall" といったように名前を指定しているじゃないか
変数 omokute_katai_kabe の正式名称をどうするかと尋ねられたらどうするんだ?
twitterのapiにstatusと出てくるのは、今何してるかを書くサービスだったからなのかな。今ならtweetだろうけど。 あまりメタにしたら本末転倒だし、どうしてそうなったのかがコメントからわかれば良いんじゃないかな。 アプリの使われ方はどうなるかわからないので、プロジェクト名はコードネームとしてまったく関係ない名前にしてます。外で話してても安心だしね。
外部ファイルだからプログラム作成時は決める必要ないって言いたいんだろ。 何でこんなバカなこと考え付くのかは知らないけど。
あんま悩むなら後でリファクタリングツールで直す気でいた方がいいな。
ワロタwww
>>963 switchなんて一つもでてこないが?
>>967 nameプロパティはプログラミング上での識別子ではなくただの1データでしかない
このケースで問題にしている「名前」とは意味合いが異なる
つーか正式名称どうする?って聞かれてもな
俺のやってる外部ファイル形式ならファイル内で完結してるから正式名称なんてどうでもいい
もしデータ上でもどうしても正式名称に合わせて変更したいなら適当に書き換えれば済む話
逆にハードコートされた定数に対しても同じことが言えるがどうするんだ
定数をすべて置き換えて整合性がとれてるか確認してコンパイルしなおしてってめんどくさくないか?
外部ファイルにすれば1ファイルの1単語を編集すればそれで終わるんだぜ
>>968 定数埋め込みのほうがはるかに馬鹿だろ
パラメーターや挙動をスクリプトなどで外部ファイル化すんのはゲーム作りの常識だ
ハードコートって面白いギャグのつもりか、マジなのか
定数埋め込み?
>>1 と
>>915 をよく見てこいよ、お前以外は誰もそんな話してない。
>>972 スレチ。誰も定数やデータの話はしてない。
>>972 の人は(オブジェクト脳をもじって言えば)手続き脳なんだろうね。
構造体 + 関数のフレームから外に出られない人。
しかもswitchなんて一つも出てこないなんて言っていることから伺えるのは、
恐らくその手続き指向的なプログラミングの経験も浅いとしか。
>>976 とんちんかんなこといってるんじゃないよ
腋臭とか口臭と同じで、本人は気が付いてないんだろうねこういうの。 俺は幸か不幸か仕事でこういう人と付き合ったことがないけど。 もっと酷い人は何人か知ってるけどw
>>978 お前が消えればお前から見て俺が消えることになるから解決するのでお前が消えろ
とりあえず次スレよろしくね
>>972 > 俺のやってる外部ファイル形式ならファイル内で完結してるから正式名称なんてどうでもいい
いや、正式名称についてお前がどうでも良くてもお前意外は良くない
spaceなりwallなりsuperWallなり、その部分のネーミングの話をしているんだぞ?
いいか?質問内容は「こういうばあい、どういった命名をしたらいいですか?」だ
二度手間以上の無駄 あほらし
>>983 お前もう・・・いいわ
なんかこう、リア♀脳と話すのは疲れる
>>984 素人はだまってろよ
拡張性考えたら俺のやり方がベストだから
無駄なんて一つもない
>>982 本当に哀れだな現実が全く見えてない
俺以外でもまともな奴はコーディングレベルで正式名称なんてどうでもいいんだよ
逆にコーディングレベルで正式名称にこだわる奴はまともじゃないといえる
普通はゲーム仕様上の正式名称が仮に決まっててもコード中にはまず書かないのよ
例えとしてジャンプキャラクターオールスターの格闘ゲームを作っているとしよう。その時に
サタンミラクルスペシャルウルトラスーパーメガトンパンチ、とか、バオーシューティングビースススティンガーフェノメノン
などの必殺技のくっそ長い正式名称のゲーム単語用意されて馬鹿正直に
enum SkilID { kSatanMiracleSpecialUltraSuperMegatonPunch = 1, …… };
って書いた奴がいたらそれはそいつが限りなく頭がおかしい証拠
変更や追加に対する耐性が著しく下がり、さらにコードを書く方の手間も無限に膨れ上がり生産性には結びつかない
普通はモーションデータ、当たり判定データなどのその技に関するデータと共に付属するパラメーターのうちの一つとして技名を関連する外部ファイルに書き出す(そしてそれを書き換えるのはプログラマではない)
プログラムを書く上でそんな「技の名前」なんてものを気にしたりあまつさえコードに直接書く奴は完全に無能であることを自ら宣言してるに等しい
まともな設計をしているならばこのようにデータを外部に持ちプログラムコードの上では「技データのコレクション」という形で扱う
いちいち個別の技(ただのデータ)にプログラミング上での特別な名前を与えるなんて素人くさいことはしないんだよ
それと同じで質問者がいうような個別の物体にわざわざプログラミング上での名前は与えないのが普通
気分屋のデータ製作者がなんとなく技名変えたいな〜物体の名前を"ハ〜ト"に変えたいな〜ってその日の気分で書き換えても問題がないように作るのが普通のプログラマね
まあ、変数名ってそういうものだしな。
なんかブロントみたい奴だな・・・ 北向きのベクトルで話しをしているのに、お前は南、西、東向きのベクトルで話をしているんだよ ベクトルの 長さ=100 の話をしているのに、お前は 長さ=10^-3 とか 長さ= 10^100 の話をしているんだよ リアルでも情報系の話が通じないタイプの人間だろ
>>989 そういう君は変な例えでなんか言ったつもりになる文系くんタイプだね
もういいって 役立たず
>>990 理系の俺がそっち系の会社に入って自己評価したことだけど、
文系を馬鹿にするのは、コメントを分かりやすく書けるようになってからにしろ
こういう奴がイミフなコメントと謎の関数でメンテナンス性を下げるんだわ
>>992 でました
レッテル貼りくん(^^;
つかコメントの話してねーから君は帰ってイイよ
名前ばかりに気を取られて他の仕事をおろそかにしてクソみたいなコードを量産する それがお前らだ 名前に悩んだらまずは設計を見直せ それが一番の正解だよ
>>992 メンテナンス性を下げるのはコメントや個別の関数ではなく全体設計
これ基本事項ね
>>963 ちなみに、map テーブルをファイルに保存するようになったらどうだろうか?
ロードする時にどうせswitchは出てくるでしょ。ここだけはどうやっても無理
>>996 いやあ必要ないでしょ
どんなコードを想定してるのよ?
if使うからswitchは要らない
>>996 なんだ何もわかってない連中がいたのね
まともに伝わらないわけだわ
1001 :
1001 :
Over 1000 Thread このスレッドは1000を超えました。 もう書けないので、新しいスレッドを立ててくださいです。。。