トップページ⇒tech
1002コメント325KB

クラス名・変数名に迷ったら書き込むスレ。Part26 [無断転載禁止]©5ch.io

■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん2015/12/20(日) 23:36:31.74ID:uXFKqVsm
クラス名、変数名のつけ方に悩んだら書き込むスレです。

命名規則や設計の善し悪しについて議論するのは基本的に禁止。

前スレ
クラス名・変数名に迷ったら書き込むスレ。Part25
http://peace.2ch.net/test/read.cgi/tech/1416550677/
0232デフォルトの名無しさん2016/04/07(木) 10:34:14.65ID:r1JxjqMx
>>231
すばらしい「命名」案、よろしく
0233デフォルトの名無しさん2016/04/07(木) 14:13:07.95ID:vaOim5IM
逆切れする前にそれ訳してみろよ
0234デフォルトの名無しさん2016/04/07(木) 22:00:31.37ID:5mQTJZzR
FindNextWorkDayFrom(date)
指定した日付以降の最も近いWorkDayを検索

FindPrevWorkDayFrom(date)
指定した日付以前の最も近いWorkDayを検索

共に基準となる日付を含むからその日が日曜祭日なら次(前)を検索する
こんな感じかな?

正直なところ、>>229が分かり易いと思う
0235デフォルトの名無しさん2016/04/07(木) 23:20:39.90ID:bJ8hF4FM
AsIfOnWeekdaysReturnsTheWeekdayOfTheFollowingIfSaturdaysSundaysAndHolidays
0236デフォルトの名無しさん2016/04/08(金) 01:05:24.66ID:zB1D6Ii9
可変長引数を受け取って配列に詰めて返す関数名はハッカーの間では何と呼ばれてますか?
0237デフォルトの名無しさん2016/04/08(金) 04:02:08.97ID:gk2oHlfy
>>236
MakeArray
0238デフォルトの名無しさん2016/04/08(金) 13:35:57.08ID:bnzfTMXc
Pack
0239デフォルトの名無しさん2016/04/08(金) 14:19:00.47ID:IaVwN+0C
言語によっては可変長引数がそもそも配列でしたってやつもあるからな
0240デフォルトの名無しさん2016/04/08(金) 21:42:03.30ID:P+N84sF8
IBecauseThereIsAlsoAGuyIVariableLengthArgumentWasOriginallyArrangedByLanguage
0241デフォルトの名無しさん2016/04/09(土) 23:04:34.73ID:8imgO17J
あるルールに則って記述された文字列を解釈し
HTMLタグを含む文字列に変換するプログラムを作っています。

順次処理していく中で、「現在xxxタグの内側にいるか」という判断をするのですが
タグの種類ごとにこのフラグを表す列挙型と、このフラグを格納する変数の名前をお願いします。


適当ですが、コードはこんな感じにする予定です。
enum class 列挙型名
{
 TABLE_TAG=1, P_TAG=2, DIV_TAG=4,
}
0242デフォルトの名無しさん2016/04/09(土) 23:11:31.45ID:VUvkdYpi
TagName currentTag;
0243デフォルトの名無しさん2016/04/09(土) 23:22:46.97ID:8imgO17J
ありがとうございます
実際に使うときは currentTag & TagName::TABLE みたいな感じですかね

「内部に居るか」というところにばかり意識してたせいで、すごくスッキリしました
0244デフォルトの名無しさん2016/04/10(日) 00:13:43.54ID:H/1qtGwu
タグはあくまで<から>までのことで
正式な用語を使いたいならelementじゃねぇか?
0245デフォルトの名無しさん2016/04/10(日) 00:33:04.32ID:R2GJbW+a
>正式な用語
ほー。知らんかったぜ
0246デフォルトの名無しさん2016/04/12(火) 01:37:58.25ID:yDxmjFGS
>>244
パースしてる段階では、タグはあってもエレメントはないんじゃね?
正式な用語は知らないけど。
0247デフォルトの名無しさん2016/04/17(日) 14:33:19.26ID:axDJp0PD
年を表す整数型の変数と、月を表す整数型の変数の2つのみを内部に持つ構造体があります。
この構造体の名前としてどのようなものが相応しいでしょうか。

ここに日を表す整数型の変数も加われば Date と名付けるところですが、
あいにくと年、月だけで良いのです。
0248デフォルトの名無しさん2016/04/17(日) 15:01:28.22ID:JjiAKXsf
struct 年月
0249デフォルトの名無しさん2016/04/17(日) 15:20:18.10ID:vPnt6ON3
YearMonthDateStruct
0250デフォルトの名無しさん2016/04/17(日) 15:29:20.09ID:JUdcx65W
>>247
month of date
qualified month
unique month
0251デフォルトの名無しさん2016/04/17(日) 15:31:40.25ID:Mh2vDnct
そのままandでつないじまえよそんなもん
0252デフォルトの名無しさん2016/04/17(日) 15:32:55.32ID:nwYll3yZ
ほかに紛らわしい名前がなくて
> あいにくと年、月だけで良いのです。
という理由だけなら Date
0253デフォルトの名無しさん2016/04/17(日) 15:34:38.31ID:JjiAKXsf
ドキュメントにはどうせ年月って書いてあるんだろう
だったら年月が最も正確な名前だよ
年月って書いてないなら書いてある単語をそのまま使いなさい
プログラマが無意味に翻訳して設計者の意図を歪めたらダメ
0254デフォルトの名無しさん2016/04/17(日) 16:07:42.61ID:axDJp0PD
ありがとうございました。
Dateにします。
0255デフォルトの名無しさん2016/04/21(木) 12:01:43.88ID:1tW+tZJE
iOS用のツイッタークライアントアプリつくってるんですけど、
1つのツイート情報(投稿テキスト、投稿画像、投稿したユーザー名など)を保持するクラスの名前は何がいいと思いますか?
ふつうにTweetクラスとかでいいですかね?
0256デフォルトの名無しさん2016/04/21(木) 14:13:32.33ID:QiEWg8a2
Twitterと用語合わせるとにはStatusじゃなかったけ?
0257デフォルトの名無しさん2016/04/21(木) 14:35:22.37ID:EopcTvEt
日本語で
0258デフォルトの名無しさん2016/04/21(木) 15:57:50.15ID:CeQQrfiu
twitter公開API参考に見てみたらStatusになってるんじゃなかったっけ?
かな?
0259デフォルトの名無しさん2016/04/21(木) 17:02:41.28ID:QiEWg8a2
正解
0260デフォルトの名無しさん2016/04/21(木) 17:24:57.92ID:CeQQrfiu
>>259
ご褒美よろ
0261デフォルトの名無しさん2016/04/24(日) 01:53:41.14ID:bi4aOyNo
アンケートやクイズの回答を集計するプログラムです。

ある設問の答えが「1.Suica」「2.リンゴ」「3.バナナ」だとして、
「1.Suica」が、全10回答中で9回答だったとします。

このとき、以下の変数名をお願いします


(a)その設問について、用意されている答えの数。この例で言えば3。
(b)全体の回答数。この例で言えば10。
(c)ある回答に対して、そう答えた数。この例で言えば9。
(d)上記(c)を求める際に、何番の答えについて言及しているのかを表すユニークな数字または文字列。
  この例で言えば「1」、または文字列なら例えば「ANSWER_SUICA」のようなコード。
0262デフォルトの名無しさん2016/04/24(日) 02:14:34.95ID:auQVBXDS
>>261 まずどんな名前で迷ってるのか書いてよ。
0263デフォルトの名無しさん2016/04/24(日) 02:34:39.17ID:bi4aOyNo
仮の名前では、順に answerSize、answerTotal、numAnswers、answerNo になってて
我ながらひどい
0264デフォルトの名無しさん2016/04/24(日) 02:41:03.66ID:nqxMGJv4
choice, resposes, chosen, referenceToChoice

我ながらなんか浮いてる気がする
0265デフォルトの名無しさん2016/04/24(日) 05:47:14.48ID:JdReb2F6
Suicaが9/10ってことはそのアンケート(クイズ)は回答者がSuicaと答えることを最初から期待というか想定して作られているのかな?
それとも偶然?

前者なら「想定された答え」
後者なら「最も頻出した答え」
をそれぞれ英語にした奴が良さそうだけど
0266デフォルトの名無しさん2016/04/24(日) 08:34:37.08ID:bi4aOyNo
>>264
ああ、「答え」じゃなくて「選択肢」という着目点なのか
英語よく分からんのだけど、choiceだけでそういう感じの意味になるものなのかな?

>>265
わかりにくくてごめん
どちらでもないです
0267デフォルトの名無しさん2016/04/24(日) 11:46:46.02ID:RNhCJQSk
まず日本語でいいから適切な識別子を考えて挙げてみてよ
0268デフォルトの名無しさん2016/04/24(日) 12:26:54.16ID:bi4aOyNo
261と263じゃダメ?
0269デフォルトの名無しさん2016/04/24(日) 14:43:06.00ID:mpYj2Do+
(a) choiceCount, (b) totalAnswerCount, (c) answerCount, (d) choiceIndex
用意されている「答え」は回答者が決めるまでは回答じゃないから別の言葉にした
0270デフォルトの名無しさん2016/04/24(日) 14:48:33.28ID:UKiBgwvV
>>267
それができたら>>263 のような酷いものにはならないと思う・・

それぞれ一言で説明するならどうするか考えてみるとか
例えば↓のような感じ
(a) 選択肢の数
(b) 回答の数
(c) その選択肢が選ばれた回答の数
(e) 選択肢の番号(選択肢のID)

どうせ自分だけしかソースコード見ないものなら
変数名は長くてもあとから見てわかる方が良いので
日本語でも良いよ
(上のをそのまま英語にしてもそんなに長くならないと思うけど)
0271デフォルトの名無しさん2016/04/24(日) 16:36:14.48ID:ixYgtVFc
変数を使わずに毎回
(a)設問[n].選択肢.length
(b)設問[n].解答.length
(c)設問[n].選択肢[m].length
のように取り出す
0272デフォルトの名無しさん2016/04/24(日) 18:45:12.90ID:ZMST/FTc
ウンコーダー乙
0273デフォルトの名無しさん2016/04/25(月) 21:35:44.65ID:9k2vKGXZ
報告が遅れたけど
numChoices、totalAnswers、numChosenAnswers、choiceIDにした。
みんなありがとう

>>269
言われてみれば確かにそうだ

>>270
日本語いいよね、ちょっと憧れる。
憧れるだけで、実際に日本名をつける勇気はないけど…

>>271
正直そういうのもアリだったんだけど、DBが絡んでくる関係で見送った。
0274デフォルトの名無しさん2016/04/25(月) 23:41:05.35ID:PqEeTEEM
日本語の可読性は驚くほど高いよね
顧客が使う用語〜設計書で使う用語〜コードに書く用語が混乱しないって素晴らしい
コンパイラが正式に国際化対応してるのだから日本語を使うべきだよ
0275デフォルトの名無しさん2016/04/25(月) 23:57:45.84ID:9k2vKGXZ
だがこの場合に使ったら
回答と解答でごっちゃになる未来しか見えない
0276デフォルトの名無しさん2016/04/26(火) 14:17:22.88ID:ZSimnd6R
>>274
下手に日本語を使うと正確な表現をしないといけなくなるデメリットがある。

このメソッド名、変数名の名前は日本語として変ですね、なんてことを議論することになる。

欧米人はいい加減だから、適当な名前でも寛容するが、日本人はそうはいかない。
0277デフォルトの名無しさん2016/04/26(火) 14:32:26.25ID:gGelNJu8
そんな人は英語なら適当でも許容するって訳でもあるまい
0278デフォルトの名無しさん2016/04/26(火) 14:39:11.98ID:ZSimnd6R
>>277
現実にプログラミング言語の標準ライブラリは、言葉足らずの変な英語のオンパレードだが?
0279デフォルトの名無しさん2016/04/26(火) 14:43:17.47ID:yXN9Cp4R
法律読んだ事ある?
なんでこんなわかりづらい書き方してんのかなって思った事ない?
それでもまだ解釈の余地があったりする。
0280デフォルトの名無しさん2016/04/26(火) 14:51:03.07ID:gGelNJu8
「そんな人」って書いてるじゃん。
え?これすら意味が通らないから日本語はダメだよって話?
0281デフォルトの名無しさん2016/04/26(火) 15:32:21.99ID:ZSimnd6R
>>280
そんな人ってどんな人だよ。

相手には理解が難しい表現で自分だって話しているじゃないか?
0282デフォルトの名無しさん2016/04/26(火) 15:35:28.59ID:ZSimnd6R
日本人は日本語にうるさいが、英語圏の人間は英語の間違いには寛容。

英語圏ではいちいち、英語の間違いを指摘してたら、きりがない。
0283デフォルトの名無しさん2016/04/26(火) 15:54:26.24ID:gGelNJu8
色んな現場に行ってると、そこで使われる用語(日本語)が統一されてなかったりするのはザラだけど、
あなたみたいに日本人は〜英語圏の人間は〜なんて一括りにして結論づけ、日本語はダメダメという人(「そんな人」=あなたのことだ)なら、
英語で関数メソッド名を適当に付けても細かく異論を挟んだりするんじゃないかな?

ということなんだけど、どうでもいいよ。君と仕事してる訳じゃないし。
0284デフォルトの名無しさん2016/04/26(火) 16:10:13.00ID:ZSimnd6R
>>283 のようなになんで自分に言われていると思い込むかな。

最近、SNSと2chの区別が付かない人間が増えた気がする。
0285デフォルトの名無しさん2016/04/26(火) 16:19:17.71ID:gGelNJu8
>>278
>>281
ここでアンカーを俺に打ち込んどいて何を言い出してるのかな。
アンカーとIDで会話がなり立ってると思ったけど、SNSとか言い出しちゃってるんだからどうしようもないな。

たしかにあなたには日本語も通じないわ。
0286デフォルトの名無しさん2016/04/26(火) 16:45:47.05ID:ZSimnd6R
また自分に言われていると思ってるw

2ch初心者か。
0287デフォルトの名無しさん2016/04/26(火) 17:46:16.11ID:CSyNQe5A
懐かしいなこの一方的な勝利宣言
0288デフォルトの名無しさん2016/04/26(火) 17:47:46.38ID:gGelNJu8
その論法だと、むしろ俺の方がアンカー打ってないんだよなあ。
いつお前を相手にしたと思っていた?といつでも言えることになるわ。
0289デフォルトの名無しさん2016/04/26(火) 17:49:56.75ID:ZSimnd6R
言ってることが矛盾してる。
0290デフォルトの名無しさん2016/04/26(火) 17:59:16.74ID:v6PhffQO
矛盾してるって言うのは簡単だよね、うんわかるよ
0291デフォルトの名無しさん2016/04/26(火) 18:06:43.15ID:ZSimnd6R
2chなんて適当に書いて、適当にレスするところだぞ。

わざとウソ書いたり、わざと変なこと言ってみたりする輩も多い。

2chはそういうところ。

学生、初心者、無職ばっかりなんだから、仕方ない。
0292デフォルトの名無しさん2016/04/26(火) 18:07:46.36ID:LGdk9fYg
解釈が分かれるとか曖昧さがあるって言う人は識別子を自然言語から切り離す事に失敗しているんだよね
アメリカ人はわかってるから自然言語として見てちょっとおかしくてもモデルと識別子が正確にマップされているなら気にしない
0293デフォルトの名無しさん2016/04/26(火) 18:17:01.94ID:ZSimnd6R
>>292
だから日本は成功している。

日本語と日本語みたいな識別子で混乱しなくて済んでいるのだから。

プログラムでも日本語推奨なんて言ってるのは、実務、経験が足りないだけ。

日本語でやっても、日本語風の識別子と日本語のマッピングには多少の作業、定義ドキュメントが必要になる。
0294デフォルトの名無しさん2016/04/26(火) 18:21:43.77ID:ZSimnd6R
ちなみに英語だって、ロジカル、フィジカルと用語を分けていて、英語でも別物として扱っている。

日本は初めから別物なので、用語の区別がはっきりしていて、無用な混乱が起きない。
0295デフォルトの名無しさん2016/04/26(火) 18:26:20.68ID:ZSimnd6R
結局、ドキュメンテーションの仕事をしない人間は、中途半端な日本語がかえって説明時に扱いにくい用語になることに気づかない。

テストコードを日本語にしろと言う人間がいるか、テスト結果の報告では、説明不足、情報不足でたいしたメリットはない。
0296デフォルトの名無しさん2016/04/26(火) 18:30:57.99ID:vXyYwgDg
なんでここでロジカルとかフィジカルとかという話になるのか想像もつかん

> ロジカル、フィジカルと用語を分けていて、英語でも別物として扱っている

それは、何をどういうふうに分けてるの?
0297デフォルトの名無しさん2016/04/26(火) 18:53:00.76ID:/rb4y06j
2ちゃんで句読点打ちまくるやつは大抵アレだから
ちょっとでもその気配感じたらスルーするということを覚えろ
0298デフォルトの名無しさん2016/04/26(火) 19:08:36.29ID:KyGt67/n
不吉な臭いの発生源がおるな
0299デフォルトの名無しさん2016/04/26(火) 21:11:57.40ID:W7z9JXIi
識別子は日本語でも英語でもいいけど内容はUMLで説明してください
0300デフォルトの名無しさん2016/04/26(火) 21:33:23.01ID:LJB+utxb
メンバやクラスの説明を全てUMLで記述したら
COBOL全盛期さながらの厖大な量のフローチャートが出来上がるわけだが
0301デフォルトの名無しさん2016/04/26(火) 21:44:32.29ID:W7z9JXIi
個人的にフローチャートはドメインイベントとかユースケースレベルのコマンドを単位に書くからそこまで爆発的に増えないけど
0302デフォルトの名無しさん2016/04/26(火) 23:00:51.85ID:ZSimnd6R
いまどきUMLはないわ。

UMLの大半の図は失敗だった。
0303デフォルトの名無しさん2016/04/26(火) 23:06:17.71ID:ZSimnd6R
>>296
おまえは設計書もコメントも書かないのか?

ロジカル、フィジカルは論理、物理だろ。

物理名だけで仕事をするのか?
0304デフォルトの名無しさん2016/04/26(火) 23:10:35.98ID:LJB+utxb
>>301
その個別のコマンドの説明どうすんのかという話だよ
全部UMLで書くんだろ?
0305デフォルトの名無しさん2016/04/26(火) 23:11:38.88ID:ZSimnd6R
まあそもそも物理名に迷ったときのスレで、論理名が決まっているのに迷うのは、本人の語彙に問題があるだけ。

それか変な物をひとくくりにしようとしているから、命名が難しくなる。

要するに設計がおかしい。
0306デフォルトの名無しさん2016/04/26(火) 23:55:34.73ID:Mtfnl+Bq
>>303
質問に質問で返すマヌケw
0307デフォルトの名無しさん2016/04/27(水) 01:49:51.63ID:DIeRo8dz
ボクは他人の悪口しか言えないの。
0308デフォルトの名無しさん2016/04/27(水) 08:46:50.65ID:Qfg6RrFc
物理名と論理名が分かれてる時点でモデリングが破綻してる
同じ概念に別の名前をつけるなよ
0309デフォルトの名無しさん2016/04/27(水) 10:05:26.47ID:oKFywJW0
しかしタヌキをムジナと呼ぶ人もあれば
サルをエテと呼ぶ人もある
でもそのせいでモデリングは破綻しないかw
0310デフォルトの名無しさん2016/04/27(水) 11:59:38.79ID:+cERYc9k
文字列をtextとするかstringとするか定期
0311デフォルトの名無しさん2016/04/27(水) 18:39:28.59ID:Qfg6RrFc
殿をエテ呼ばわりとは不敬なやつめ切腹じゃ!

このように識別子の混同は時に人命を左右します
間違いがないように1つの概念には1つの識別子を割り当てましょう
0312デフォルトの名無しさん2016/04/27(水) 19:09:23.05ID:KbkM9snj
だから日本語で書けっていってるだろ
よめねえのはこいつらみたいなバカだけだからよ
0313デフォルトの名無しさん2016/04/28(木) 09:40:18.60ID:c/7AsRbP
IsXXXX()
HasXXXXX()
みたいな関数は多いですが、存在確認は
ExistXXXX()
なのが多いと思いますが、これだけ疑問形じゃないので違和感あります。
どうしたら良いですか?
0314デフォルトの名無しさん2016/04/28(木) 09:50:28.26ID:0YjJiZ00
>>313
疑問文という認識を変えたほうがいいんじゃないかね?
obj.IsXXXX() が英語として自然な言明に見えるようにしていると考えれば obj.Exits() が自然。
英文で if の後ろに疑問文なんて書かないからね。
0315デフォルトの名無しさん2016/04/28(木) 09:53:31.23ID:wc4ljUlt
英語を勉強してください
0316デフォルトの名無しさん2016/04/29(金) 20:23:58.65ID:AWs6LkoN
関数名に主語を入れたくなるときとか
ちょっと悩むよね
0317デフォルトの名無しさん2016/04/30(土) 13:51:59.43ID:WILOMmUT
>>316
主語がいる関数名なんてあるかよ。

目的語なら分かるが。
0318デフォルトの名無しさん2016/04/30(土) 14:09:26.61ID:kBEc2ffr
bool Foo::Exists()という関数で、例えばこれを非オブジェクト指向で書くと、
主語としてFooを出すのが素直じゃない?
0319デフォルトの名無しさん2016/04/30(土) 14:22:58.16ID:WILOMmUT
>>318
「Fooが存在する」という名の関数か?

FooとExistだけで命名しようとするからおかしくなる。

その bool Foo::Exists() だって細かいこと言えば、変な名前だよ。
0320デフォルトの名無しさん2016/04/30(土) 14:29:54.38ID:WILOMmUT
アメリカ人のいい加減さが分かる。
0321デフォルトの名無しさん2016/04/30(土) 14:33:13.90ID:lGZUcRoI
>>319 「細かいこと」をくわしく
0322デフォルトの名無しさん2016/04/30(土) 14:59:42.47ID:WILOMmUT
>>321
プロパティをメソッドとして実装してるから違和感がある。
0323デフォルトの名無しさん2016/04/30(土) 15:17:02.56ID:kBEc2ffr
ああ、状態を返すような関数そのものに否定的なのか
その考え方自体は分からんでもない
0324デフォルトの名無しさん2016/04/30(土) 16:25:01.76ID:WILOMmUT
関数名だったら和製英語風にExistCheckFoo()かCheckExistFoo()でいいんじゃない。
0325デフォルトの名無しさん2016/04/30(土) 16:27:42.56ID:T6vNQ9r+
こないだの日本語ダメダメくんでしょ?
和製英語とか言わず、純粋に英語で頼むよ。
0326デフォルトの名無しさん2016/04/30(土) 16:31:12.19ID:PNZBHOdI
>>324
それで言うならCheckFooExistにするかな
0327デフォルトの名無しさん2016/04/30(土) 16:58:02.53ID:f7aH8+B9
つーか >>313 は hasXXX は受け入れてるんだから existsXXX も受け入れろよ、とは思うな
hasXXX だって疑問形ではないんだし
0328デフォルトの名無しさん2016/04/30(土) 16:59:26.96ID:kBEc2ffr
existを名詞か形容詞にしたいなそれ
0329デフォルトの名無しさん2016/04/30(土) 17:02:40.65ID:ZYtSxRdz
真偽でcheckとか使うやつはマジで最悪
チェックしてどうすんの?チェックして終わりですか?ん?
0330デフォルトの名無しさん2016/04/30(土) 17:03:09.57ID:WILOMmUT
>>327
どうでもいいけど、疑問形ではないぞ。
0331デフォルトの名無しさん2016/04/30(土) 17:03:41.48ID:WILOMmUT
>>329
関数だって言ってるだろ。
■ このスレッドは過去ログ倉庫に格納されています