トップページ⇒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/
0153デフォルトの名無しさん2016/02/15(月) 05:58:16.57ID:Y2R/v65U
>>152
getter(int)
int setter()
てことか?

クラスが変数の値をget
クラスが変数にsetって思ってるんじゃね?
0154デフォルトの名無しさん2016/02/15(月) 08:59:39.03ID:CoPBLH5e
そんなのあるんか
みたことなかった
0155デフォルトの名無しさん2016/02/15(月) 09:49:53.19ID:fo9bZXsh
これはさすがに見たことないな
0156デフォルトの名無しさん2016/02/16(火) 08:27:38.38ID:55V2OvFf
そう言うアホな職場でなくて本当によかった
0157デフォルトの名無しさん2016/02/16(火) 17:58:23.74ID:b0fHFSg3
プロフェッショナルな現場では
Hoge hoge = foo.EchoHoge();
foo.ChangeHoge(hoge);
この書き方が好まれるね
0158デフォルトの名無しさん2016/02/16(火) 23:56:23.58ID:bGf55uSQ
ゲッタをFoo()、セッタをFoo(x)にするのが好きです。
オススメはしませんけど。
0159デフォルトの名無しさん2016/02/17(水) 06:53:01.54ID:RPnYlR/v
install+initialize+start=deployですか?
0160デフォルトの名無しさん2016/02/17(水) 06:55:44.87ID:ERNpErt9
blueback
0161デフォルトの名無しさん2016/02/18(木) 06:37:07.78ID:bLvFeMpB
xxx(123, 20)としたら123の20%の値を返す関数はどうしたらいいですか?
0162デフォルトの名無しさん2016/02/18(木) 07:24:28.89ID:+dFL+sBf
ああしたらいいです
0163デフォルトの名無しさん2016/02/19(金) 03:35:24.86ID:E/z1CaIk
その程度の計算式で、かつ単純に計算結果を出すだけなら、
素直に (123*0.2) とでも書いたほうが分かりやすいと思う。

税金やら利益やらを求める関数なら別だけどね
0164デフォルトの名無しさん2016/02/19(金) 06:49:45.80ID:UoTVqCBs
>>161
基本的には >>163 だけど、なにかわけあってそうせざるを得ないなら、そのまんま percent( ) でいいんじゃね?
0165デフォルトの名無しさん2016/02/19(金) 17:58:17.20ID:1lUaZ+Ou
>>163-164
簡単な計算ですが入出力が整数型なので型キャストの手間を惜しんで関数化することにしました
percentで問題なさそうです。ありがとうございました
0166デフォルトの名無しさん2016/02/19(金) 18:04:34.89ID:I8opp71u
よくないだろ
0167デフォルトの名無しさん2016/02/19(金) 18:17:07.22ID:E/z1CaIk
自分もよく、2行くらいで住むやつを関数化したりするから
人のことはあんまり言えない
0168デフォルトの名無しさん2016/02/19(金) 18:26:44.87ID:d7xGYMnr
行数じゃなく出現回数が2回以上になったり使い回せそうならもう関数化してる
0169デフォルトの名無しさん2016/02/19(金) 18:37:10.15ID:kkBXxxPl
ただ数学的に計算したいのか?
例えば所得税額を求めたいとかならそれなりの名前をつけるべきじゃないか?
0170デフォルトの名無しさん2016/02/19(金) 18:37:25.02ID:ihr5FFJ3
コメントの代わりにメソッドを書くという事はあるね
1行でも意図が不明瞭なら明瞭な名前のメソッドにしたほうが見易い
当然として意図が明瞭ならメソッドにするのは後回しだ
0171デフォルトの名無しさん2016/02/19(金) 18:48:16.32ID:E/z1CaIk
標準ライブラリ関数みたいに、意図を含めらんない場合も多いよねぇ
0172デフォルトの名無しさん2016/02/19(金) 18:56:21.43ID:V63XPKdS
そういうのはそのままでいい
使う側でビジネス上意味のある名前でラップすればいい
0173デフォルトの名無しさん2016/02/26(金) 02:54:51.19ID:GV2TZ5LX
「データシートを開く」という関数名を OpenSeet()としています。
追加機能で「過去(昨日から過去一ヶ月間)に記入し忘れていたデータシートを開く」という関数が必要となりました。

この関数名をお願いします。
0174デフォルトの名無しさん2016/02/26(金) 03:06:26.39ID:4hFyrq56
OpenSheetOmittedToRecord
0175デフォルトの名無しさん2016/02/26(金) 07:15:29.83ID:PCB0D50w
OpenIncompletePastSheet
0176デフォルトの名無しさん2016/02/26(金) 09:29:35.46ID:M9/6SaSd
OpenEmptySeet
0177デフォルトの名無しさん2016/02/26(金) 16:57:51.85ID:GV2TZ5LX
>>174-176
ありがとうございます。どれも参考になりました。
0178デフォルトの名無しさん2016/03/01(火) 23:40:13.57ID:eUlvy8a8
単に「過去のデータシートを開く」ことがその関数の機能なんだとしたら、
「記入し忘れ」とか、そんな言葉を入れない方がいいと思う。
OpenHistorySheetとか
0179デフォルトの名無しさん2016/03/02(水) 09:32:45.64ID:I9Z0Lvrz
記入し忘れていないのは開かないんだろ
0180デフォルトの名無しさん2016/03/02(水) 13:55:10.11ID:U8gNKAYq
つか、記入し忘れるなよ



てのはともかく、なんか設計をリファクタリングしたくなる案件
0181デフォルトの名無しさん2016/03/02(水) 14:15:29.41ID:g40oqbYL
historysheetって意味がおかしい
0182デフォルトの名無しさん2016/03/02(水) 17:18:43.32ID:O9A5cfyu
>>180
記入途中で操作を放棄されたら設計もク(ここで書き込み放棄
0183デフォルトの名無しさん2016/03/04(金) 18:32:17.14ID:oFqD6l4V
履歴ではなく過去に入力した別の情報なら、historyではないか。pastの方がいいな。
0184デフォルトの名無しさん2016/03/04(金) 18:43:17.69ID:JDwO95i7
・記入しようともしてない
・途中で記入を放棄した

どちらもあり得るわけで、
つまり記入が完成(complete)してないのだから、
OpenUncompletedSheetsがいいと思います。つか複数形だよな。
0185デフォルトの名無しさん2016/03/04(金) 20:08:25.20ID:0uXJtrdR
Incompleteとどっちがいいのかなと思って
http://thegrammarexchange.infopop.cc/eve/forums/a/tpc/f/340600179/m/8281030354
見たが、やり残しがあるんならUncompletedでよさそう
0186デフォルトの名無しさん2016/03/04(金) 22:29:43.14ID:oFqD6l4V
正常に完了している過去のデータシートを参照することはないのかな。

ないとしても、とりあえず過去のデータシートを開く部分は切り出しといた方がいいな。
0187デフォルトの名無しさん2016/03/21(月) 00:44:19.40ID:KQkKBKcO
設計工程があれば、命名に迷うことなどほとんどない。
0188デフォルトの名無しさん2016/03/21(月) 00:59:21.13ID:x3G04NP+
それはすごい
0189デフォルトの名無しさん2016/03/21(月) 01:05:48.48ID:Y+CQ6vla
名前とかあまり気にする方じゃないのでほとんど迷わない
0190デフォルトの名無しさん2016/03/21(月) 01:52:33.37ID:u1jn1EMe
だったら設計書作る段階で迷うんだろうが
0191デフォルトの名無しさん2016/03/21(月) 11:39:06.38ID:Q2tTgw28
ドメインエキスパートと議論して名前を引き出すだけ
こちらが勝手に名前を考える必要は無い
すでに名前はあるのだから
0192デフォルトの名無しさん2016/03/21(月) 14:08:21.28ID:1Injx5U4
変数名とかそんなんいちいち相談すんの?
自分がその立場だったら迷わないの?
0193デフォルトの名無しさん2016/03/21(月) 14:33:57.22ID:Q2tTgw28
そうだよ
そもそもビジネスに関係無い言葉なんてコードに現れない
0194デフォルトの名無しさん2016/03/22(火) 00:12:48.03ID:dJvZYtfq
ウソつけ、お前のコードなんかhageとかusugeとかばかりだろ
0195デフォルトの名無しさん2016/03/22(火) 00:13:46.52ID:StsLEOpD
ビジネスモデルの人だろw
0196デフォルトの名無しさん2016/03/22(火) 15:09:09.39ID:6KPFBZ6M
オブジェクト指向だとあまり迷わないだろ。

迷うのはクラス設計がおかしいんじゃないか?
0197デフォルトの名無しさん2016/03/22(火) 15:32:47.88ID:NtsRzX3M
ドヤ顔してるところ悪いが、それを理解どころか想像すらできない頭がすごいな
0198デフォルトの名無しさん2016/03/22(火) 22:28:49.70ID:UN51cu0Y
というかビジネス上存在しない概念を作ろうとするから名前がわからないなんて事になるんだよ
ドメインエキスパートとの対話を重ねてドメインモデルを適切に抽出する
それだけでクラス名もメソッド名も何もかもが確固として定る
逆に言えば名前で悩んでるって事はドメインモデルの抽出に失敗しているってこと
名前が決まらないなら設計からやり直せってのはそういう意味ね
0199デフォルトの名無しさん2016/03/22(火) 22:36:39.69ID:Es8MF1jL
請け負いビジネス限定の話だね。
0200デフォルトの名無しさん2016/03/22(火) 22:43:07.67ID:dJvZYtfq
ビジネス上名前のついてない概念や事象なんていくらでもあるのにね
むしろ殆ど名前がないと言ってもいいくらい
この人はどこの世界に住んでいるのだろうか?
0201デフォルトの名無しさん2016/03/22(火) 22:48:42.98ID:UN51cu0Y
>>199
むしろ新しいビジネスに強い
ドメインモデルの構築を通してそのビジネスを深く正確に分析できる
改善点も容易に発見できるし拡張も容易い

>>200
それはモデラーが手を抜いてるだけ
0202デフォルトの名無しさん2016/03/22(火) 22:57:48.84ID:dJvZYtfq
>>201
つまりドメインモデルの構築に際して深く命名に悩んでいるんじゃないか
どうしてウソつくの?
0203デフォルトの名無しさん2016/03/22(火) 23:02:18.04ID:Es8MF1jL
そう、この人は新しい概念を創造・定義するという視点が欠けてる。
「研究」というものを知ってるのか。
0204デフォルトの名無しさん2016/03/22(火) 23:05:31.79ID:WjKYcifB
この人何言っても無駄でしょ
つーかこのスレに何しに来てんのよ
0205デフォルトの名無しさん2016/03/22(火) 23:22:27.28ID:UN51cu0Y
やれやれ
ど素人しかいないのかここは
0206デフォルトの名無しさん2016/03/23(水) 00:19:15.27ID:I2lzCjKa
この一連の流れに名前を付けてください
0207デフォルトの名無しさん2016/03/23(水) 00:33:05.10ID:fpM1ZpsA
NeverCrossingArgument
0208デフォルトの名無しさん2016/03/23(水) 00:33:31.62ID:U+mfgt1q
ショーンKくずれ
0209デフォルトの名無しさん2016/03/23(水) 07:13:33.46ID:feV3EELl
語彙が乏しいやつらなんだろうな。
0210デフォルトの名無しさん2016/03/23(水) 07:14:27.80ID:feV3EELl
どうやって言葉で会話しているのか不思議だわ。
0211デフォルトの名無しさん2016/03/23(水) 14:33:46.66ID:ip94bAwI
その理解力で人と会話できているとは思えませんね
0212デフォルトの名無しさん2016/03/24(木) 00:20:10.04ID:Rsn4b0UM
何かに例えるとか、擬人化してしまうとかいくらでもあるだろ。
0213デフォルトの名無しさん2016/03/24(木) 01:37:39.87ID:Q63x5G+R
誰と会話してるんです?
0214デフォルトの名無しさん2016/03/24(木) 05:09:23.79ID:UGB9JfN9
walls
0215デフォルトの名無しさん2016/03/24(木) 12:36:15.07ID:X7xUAPCX
デバッグ手法のひとつとして、
「淫乱テディベアに語りかける」というのがあったね
0216デフォルトの名無しさん2016/03/24(木) 15:08:51.64ID:aFiY6vgp
淫乱を付けるなw
0217デフォルトの名無しさん2016/03/25(金) 15:02:41.12ID:Ej/BIb4o
手バックの手法?
0218デフォルトの名無しさん2016/04/06(水) 23:24:22.38ID:SBdxQZ05
日付を調整する関数の名前でいいのないですか
inputが日付で平日ならそのまま、土日祝日なら次の平日を返す関数
inputが日付で平日ならそのまま、土日祝日なら前の平日を返す関数
平日ならそのままっていうニュアンスがいれづらい…
0219デフォルトの名無しさん2016/04/06(水) 23:30:48.34ID:04zWF3AE
>>218
そもそもその関数はよくない。

平日かどうか判定する関数と、次の平日、前の平日を求める関数は、別の関数にすべき。
0220デフォルトの名無しさん2016/04/06(水) 23:48:45.77ID:Rshrw1nx
前日の翌営業日
翌日の前営業日
を訳せばいいかも
0221デフォルトの名無しさん2016/04/06(水) 23:51:19.69ID:Rshrw1nx
>>219
それは違うと思う
例えば月末払いだけど、休日なら翌営業日みたいなのいっぱいあるじゃん
0222デフォルトの名無しさん2016/04/07(木) 00:00:43.18ID:jAeadzdP
よそで使わないならいいけど十分汎用性ありそうだしわけても損はないとおもうが
0223デフォルトの名無しさん2016/04/07(木) 00:10:18.37ID:aGcTjS1o
こういうのはステップバイステップで考えよう
先ずは最も適切と思われる名前を日本語で決める
次にそれをそのままコードに書くんだ
簡単だろ
0224デフォルトの名無しさん2016/04/07(木) 00:20:28.94ID:cIX55k3q
>>218
ExcelにはWORKDAY()という関数があるな

>inputが日付で平日ならそのまま、土日祝日なら次の平日を返す関数
=WORKDAY(input, +1)
>inputが日付で平日ならそのまま、土日祝日なら前の平日を返す関数
=WORKDAY(input, -1)
0225デフォルトの名無しさん2016/04/07(木) 00:30:26.74ID:bJ8hF4FM
翌営業日と前営業日を組み合わせて使う方がシンプルじゃね?
0226デフォルトの名無しさん2016/04/07(木) 00:33:17.16ID:cIX55k3q
ミスってる気がする

>>220の考えでいけば
WORKDAY(input-1, +1)
WORKDAY(input+1, -1)
かな
0227デフォルトの名無しさん2016/04/07(木) 00:35:40.34ID:XWAdlud5
>>219
おっしゃるとおりでis_businessdayとadd_dayにしてあるんですが、>>221のような用途で頻繁に使うので関数としてまとめてしまいたいんですよね
0228デフォルトの名無しさん2016/04/07(木) 07:24:25.59ID:cMwaSKeB
ならworkdayでいいだろ
+1/-1は分かりにくいからnext_workdayにするか列挙値にすべきだけど
0229デフォルトの名無しさん2016/04/07(木) 08:54:30.90ID:m/gfZuFN
isWorkday()とnextWorkday()を作って、
nextWorkday(yesterday)と使えば?
nextWorkday内部でisWorkdayを呼ぶとか。
0230デフォルトの名無しさん2016/04/07(木) 09:26:48.28ID:r1JxjqMx
NextWorkdayOfPreviousDay
NextWorkdayOfPreviousWorkday
どっちも可
0231デフォルトの名無しさん2016/04/07(木) 09:31:12.58ID:l/IcW8J2
どっちもクソッタレすぎんだろなんだそりゃ
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
■ このスレッドは過去ログ倉庫に格納されています