クラス名、変数名のつけ方に悩んだら書き込むスレです。
命名規則や設計の善し悪しについて議論するのは基本的に禁止。
前スレ
クラス名・変数名に迷ったら書き込むスレ。Part27
http://echo.2ch.net/test/read.cgi/tech/1476572490/
探検
クラス名・変数名に迷ったら書き込むスレ。Part28 [無断転載禁止]©2ch.net
■ このスレッドは過去ログ倉庫に格納されています
1ネミ子
2017/05/07(日) 18:01:52.03ID:akuyRduv2ネミ子
2017/05/07(日) 18:03:36.48ID:akuyRduv 無関係スレ
設計・命名スレ
http://echo.2ch.net/test/read.cgi/tech/1477368563/
設計から喧々諤々されたい殿方は別スレがございますので、そちらをご利用ください。
設計・命名スレ
http://echo.2ch.net/test/read.cgi/tech/1477368563/
設計から喧々諤々されたい殿方は別スレがございますので、そちらをご利用ください。
2017/05/07(日) 18:17:56.16ID:/2PQHse0
乙
2017/05/10(水) 02:45:04.00ID:YgxPtTuh
データベース的なものを想像して欲しい。
あるデータ群(オブジェクトの配列)を画面出力するとき、出力イベントをフックして
・「表示/非表示」を切り替える(単純にreturn falseだけで済むような処理ではない)
・「見た目」を切り替える(色変更や予め用意した画像に変更など)
の2つが必要なとき、それぞれどんな単語を使えばいい?
紛らわしくなく、かつ統一感のある関数名にしたい。
上記2つは呼び出すタイミングが微妙に異なるため、一括にはしにくい。
また、出力を切り替えると言っても、実際には個々のオブジェクトに含まれている値やメンバ変数を読み込み、
その設定を適用させるといった内容になる。
あるデータ群(オブジェクトの配列)を画面出力するとき、出力イベントをフックして
・「表示/非表示」を切り替える(単純にreturn falseだけで済むような処理ではない)
・「見た目」を切り替える(色変更や予め用意した画像に変更など)
の2つが必要なとき、それぞれどんな単語を使えばいい?
紛らわしくなく、かつ統一感のある関数名にしたい。
上記2つは呼び出すタイミングが微妙に異なるため、一括にはしにくい。
また、出力を切り替えると言っても、実際には個々のオブジェクトに含まれている値やメンバ変数を読み込み、
その設定を適用させるといった内容になる。
2017/05/10(水) 07:56:10.53ID:oAoKVhQv
visibityとstyle
2017/05/10(水) 08:06:31.31ID:YgxPtTuh
ありがとう、それでいく
出社前にスレ確認できてよかった
出社前にスレ確認できてよかった
2017/05/16(火) 21:12:59.38ID:5gubPtqb
通信やファイルへ書込を伴う処理で
一旦変数に代入(書き込み予約)してから、任意のタイミングで確定させて処理したい
確定処理ってupdate? apply? commit? finalize? save?
それとこの場合の代入ってsetでいい?
一旦変数に代入(書き込み予約)してから、任意のタイミングで確定させて処理したい
確定処理ってupdate? apply? commit? finalize? save?
それとこの場合の代入ってsetでいい?
2017/05/16(火) 21:43:09.50ID:AGzM1pll
もう少し詳しく書かないと何とも状況が分からんね
2017/05/16(火) 22:08:11.06ID:5HaY8++G
むしろ確定の方をsetにした方がいいような…
を確定するの英訳|英辞郎 on the WEB:アルク
https://eow.alc.co.jp/search?q=%E3%82%92%E7%A2%BA%E5%AE%9A%E3%81%99%E3%82%8B
予約、だと自分はreserveをよく使うな…
を確定するの英訳|英辞郎 on the WEB:アルク
https://eow.alc.co.jp/search?q=%E3%82%92%E7%A2%BA%E5%AE%9A%E3%81%99%E3%82%8B
予約、だと自分はreserveをよく使うな…
2017/05/16(火) 22:12:30.84ID:64KrDfHK
stageとcommitかな
でもwriteやsendといった実際の物理的な動作をイメージさせる名前を差し置いてまで強調するようなことだとは俺は思わないけどな
抽象的な名前は基本的に糞
でもwriteやsendといった実際の物理的な動作をイメージさせる名前を差し置いてまで強調するようなことだとは俺は思わないけどな
抽象的な名前は基本的に糞
2017/05/16(火) 23:16:14.08ID:5gubPtqb
2017/05/17(水) 10:22:15.30ID:vwwaD4yq
2017/05/17(水) 10:24:01.10ID:vwwaD4yq
setかどうかはmodelかviewかによるかな
modelならset
modelならset
2017/05/17(水) 11:04:25.83ID:GJ9WSlKV
>>7
BufferedFile f;
f.write(data);
f.flush();
BufferedConnection c;
c.write(data); // or c.send(data)
c.flush();
BufferedFile f;
f.write(data);
f.flush();
BufferedConnection c;
c.write(data); // or c.send(data)
c.flush();
2017/05/18(木) 12:25:59.00ID:xXCtzo0J
Series を列挙する型と、それを格納する変数。
C# だと
enum Series {
A,
B
}
Series Series;
とできなくはないけど、別にしたい。
たいていは列挙の方を複数、変数を単数にするんだけど、複数と単数で変化がないものはどうしたもんか。
C# だと
enum Series {
A,
B
}
Series Series;
とできなくはないけど、別にしたい。
たいていは列挙の方を複数、変数を単数にするんだけど、複数と単数で変化がないものはどうしたもんか。
2017/05/18(木) 12:39:39.31ID:eX+vCwZM
2017/05/18(木) 13:22:41.48ID:nmM7QGeO
>>15
型名は大文字から、変数名は小文字から始めればよい
型名は大文字から、変数名は小文字から始めればよい
2017/05/18(木) 21:24:31.73ID:3g1FRJ8u
十分にスコープが狭いならsでも別にいいや感
2017/05/19(金) 01:40:19.91ID:4aXBqFa1
1年後に1画面に入らないくらいまで広がっててsってなんだっけー
2017/05/19(金) 02:53:52.81ID:mnhKNMJ9
1画面くらいならそこまで問題にならんだろw
2115
2017/05/19(金) 08:38:09.61ID:mmCvLNpl んー、時代遅れか。
C# の例は挙げたけど、できない言語の場合にどうしようかってのもあったんだがな。
大文字小文字の場合も。
これといった案はなさそうだね。
いろいろ意見ありがとう。
C# の例は挙げたけど、できない言語の場合にどうしようかってのもあったんだがな。
大文字小文字の場合も。
これといった案はなさそうだね。
いろいろ意見ありがとう。
2017/05/19(金) 15:07:17.02ID:/r/R+k8J
2017/05/20(土) 03:47:13.80ID:zc92SfK6
最初の質問で「できなくはないけど」と言いつつ
「できない言語の場合」って追記するの、ちょっとずるくない?
「できない言語の場合」って追記するの、ちょっとずるくない?
2017/05/20(土) 09:02:34.55ID:m4galLui
2017/05/20(土) 09:52:00.08ID:I6OViHCS
2017/05/20(土) 09:58:35.64ID:/WJez+wG
言語に関わらず共通のスタイルを使うという発想自体がそもそもの大間違い
郷に入れば郷に従え
C#では型名とプロパティ名に同じ名前を付けることが推奨されていてenumにXXEnumみたいなのは禁止されている
他の言語には違ったルールがある、それに従うだけ
その良し悪しを判断するのはお前でもこのスレでもない
郷に入れば郷に従え
C#では型名とプロパティ名に同じ名前を付けることが推奨されていてenumにXXEnumみたいなのは禁止されている
他の言語には違ったルールがある、それに従うだけ
その良し悪しを判断するのはお前でもこのスレでもない
2017/05/20(土) 10:00:30.34ID:/WJez+wG
あとC#ならenumの型名にs付けていいのはビットフラグの場合だけだ
2017/05/20(土) 15:02:41.50ID:zc92SfK6
>>27
そんな違いあるのか。ちょっと面白い
そんな違いあるのか。ちょっと面白い
2017/05/20(土) 16:07:08.58ID:LUvMfIz7
型の名前は型自身じゃなくてインスタンスの性質を表しているべきだって
発想かもしれんけど、拡張メソッドの入れ物の静的クラスにExtensionsなんてのもあったりして
ちょっと統一感ないね
発想かもしれんけど、拡張メソッドの入れ物の静的クラスにExtensionsなんてのもあったりして
ちょっと統一感ないね
2017/05/22(月) 08:56:31.87ID:zv0b6nGa
2017/05/22(月) 10:19:43.12ID:SMVCp6Um
The name of a type should express the charactor of not a type itself, but the instance
2017/05/22(月) 23:54:30.25ID:9Hmi5Lo6
確かに、やや低レベルな名前って気はするかな
具体的にどうすればいいかは分からんけど
具体的にどうすればいいかは分からんけど
2017/06/21(水) 16:36:34.47ID:dvfsnCQH
現時点ではスレチだけど、いずれ設定周りの名称に出没しそうなのでご容赦ください。
スタンドアロンのシステムが既に稼働していますが、一部機能をクラウド化して併用する計画があります。
クラウド化してもスタンドアロンの方もそのまま運用を続けます。
いわゆる半クラウド?とでも言うのでしょうか、このようなシステムの場合、
何と呼べばいいでしょうか?
スタンドアロンのシステムが既に稼働していますが、一部機能をクラウド化して併用する計画があります。
クラウド化してもスタンドアロンの方もそのまま運用を続けます。
いわゆる半クラウド?とでも言うのでしょうか、このようなシステムの場合、
何と呼べばいいでしょうか?
2017/06/21(水) 16:54:36.57ID:kzV2so42
2017/06/21(水) 18:34:51.54ID:dvfsnCQH
>>34
ありがとうございます。
色々調べましたが、ハイブリッドクラウドとは
パブリッククラウドとプライベートクラウドなどの複数のインフラ周りを
組み合わせた場合に呼ぶようです。
サーバーデータの保全や負荷分散という説明も見ると、
今回のケースに該当するのかというと、う〜ん。。。
ありがとうございます。
色々調べましたが、ハイブリッドクラウドとは
パブリッククラウドとプライベートクラウドなどの複数のインフラ周りを
組み合わせた場合に呼ぶようです。
サーバーデータの保全や負荷分散という説明も見ると、
今回のケースに該当するのかというと、う〜ん。。。
2017/07/01(土) 12:23:57.34ID:41xGfxtK
単項検証: SingleFieldValidation
相関検証: MultiFieldsValidation
データベースで行と行を比較する検証や表を超えて検証する場合はなんと言いますか?
日本語と英語の両方ともわからない
相関検証: MultiFieldsValidation
データベースで行と行を比較する検証や表を超えて検証する場合はなんと言いますか?
日本語と英語の両方ともわからない
2017/07/08(土) 15:58:43.96ID:FfZt44/H
2017/07/15(土) 09:19:26.23ID:nrvPEg51
ちょっと物事を単純化して話しますが
オブジェクトの有効期間を変数として持たせたいんです
リストの中にぶっこんでいって
リストを触る奴がその値によってリストから削除したりをさせたい
このとき、有効期限をどう表現しますか?
色々考えた結果
long lifetime = now + duration;
と初期化しておいて
if (obj.lifetime < now) list.remove(obj);
というふにしました
もっと名前、初期化、運用に他のやり方があったかなと心配しています
名前は単にtime_to_removeでもよかったかなと思ってます
オブジェクトの有効期間を変数として持たせたいんです
リストの中にぶっこんでいって
リストを触る奴がその値によってリストから削除したりをさせたい
このとき、有効期限をどう表現しますか?
色々考えた結果
long lifetime = now + duration;
と初期化しておいて
if (obj.lifetime < now) list.remove(obj);
というふにしました
もっと名前、初期化、運用に他のやり方があったかなと心配しています
名前は単にtime_to_removeでもよかったかなと思ってます
2017/07/15(土) 10:13:38.40ID:qqsDF0t/
クッキーを参考にしたまえ
2017/07/15(土) 10:41:48.41ID:zuAt7dHe
expire
2017/07/15(土) 13:45:28.74ID:GNjnjteo
>>38
有効期限が本当にそのオブジェクトが管理すべき情報なのか、それともそのオブジェクトを使う側が
管理すべき情報なのか、それだけじゃ分からんけど、前者だとして
CreationTime(作られた時)
LifeSpan(寿命)
TimeToLive(余命 CreationTime + LIfeSpan - now)
IsAlive(TimeToLive > 0)
こんだけの情報を持たせた方が扱いやすいかも
有効期限が本当にそのオブジェクトが管理すべき情報なのか、それともそのオブジェクトを使う側が
管理すべき情報なのか、それだけじゃ分からんけど、前者だとして
CreationTime(作られた時)
LifeSpan(寿命)
TimeToLive(余命 CreationTime + LIfeSpan - now)
IsAlive(TimeToLive > 0)
こんだけの情報を持たせた方が扱いやすいかも
2017/07/15(土) 14:31:14.53ID:nrvPEg51
>>39 ありがとうございます見てみます
>>40 expireは既に別のとこで使っておりまして
>>41 もう少し正確にお話すると
class WithLifetime<T> {
public final T org;
public final long lifetime;
WithLifetime(T org, long duration) {
this.org = org;this.lifetime = System.currentTimeMillis() + duration;
}
}
こういうのを
list.add(new WithLifetime<Foo>(foo, TimeUnit.HOURS.toMillis(5)));
こう使ってますね
あくまでlistありきで
list中の生存期間を、listを使う側の都合で勝手に決めてるという
List<Foo> listのままで、Map<Foo, Long> lifetimeみたいなのを併用
っていうのも最初は考えたりもしたんですが、それでいくと
list0, map0, list1, map1, list2, map2みたいな煩雑さがチラついてきますんで
この形式にしました
>>40 expireは既に別のとこで使っておりまして
>>41 もう少し正確にお話すると
class WithLifetime<T> {
public final T org;
public final long lifetime;
WithLifetime(T org, long duration) {
this.org = org;this.lifetime = System.currentTimeMillis() + duration;
}
}
こういうのを
list.add(new WithLifetime<Foo>(foo, TimeUnit.HOURS.toMillis(5)));
こう使ってますね
あくまでlistありきで
list中の生存期間を、listを使う側の都合で勝手に決めてるという
List<Foo> listのままで、Map<Foo, Long> lifetimeみたいなのを併用
っていうのも最初は考えたりもしたんですが、それでいくと
list0, map0, list1, map1, list2, map2みたいな煩雑さがチラついてきますんで
この形式にしました
2017/07/16(日) 03:26:58.87ID:yo5XpH/o
2017/07/16(日) 12:39:20.68ID:Jr85n6Sz
>>43
ありがとうございます
とても有力な手だと思います
ただ、みなさんも覚えがあるかもしれませんが
こういうコンテナラッパーを気軽に書いても
意外とスッキリしていかねえな、ということです
1) 最初から十分なインタフェースをそろえるのはめんどい(主に指の疲労)
2) だから最初はsize, add, removeくらいで始めるのだが
あとで結局また加筆していくことになる
3) コンテナクラスの理想は中身を知らないこと
でもこういう作りにするとそこに想定が入ることになる
だからと言ってすぐ困りはしないが、そのことに小さい不満が残る
removeExpired()みたいなこともさせたいが、何か不満が残る
それに引数を与えてやりたいが、ここでその引数の名前が難しすぎる
何をどういう基準でremoveしてるかを表現しきるメソッド名も難しい
最後までぐだぐだ申しましてすみません
不満ばかりできりが無いのでこれにて閉じさせてくだしあ
ありがとうございます
とても有力な手だと思います
ただ、みなさんも覚えがあるかもしれませんが
こういうコンテナラッパーを気軽に書いても
意外とスッキリしていかねえな、ということです
1) 最初から十分なインタフェースをそろえるのはめんどい(主に指の疲労)
2) だから最初はsize, add, removeくらいで始めるのだが
あとで結局また加筆していくことになる
3) コンテナクラスの理想は中身を知らないこと
でもこういう作りにするとそこに想定が入ることになる
だからと言ってすぐ困りはしないが、そのことに小さい不満が残る
removeExpired()みたいなこともさせたいが、何か不満が残る
それに引数を与えてやりたいが、ここでその引数の名前が難しすぎる
何をどういう基準でremoveしてるかを表現しきるメソッド名も難しい
最後までぐだぐだ申しましてすみません
不満ばかりできりが無いのでこれにて閉じさせてくだしあ
2017/07/16(日) 16:29:38.83ID:yo5XpH/o
Listのextendできない環境なのか
2017/07/17(月) 08:04:36.40ID:dfDRQ3ag
>>44
remove_if(predicate)
remove_if(predicate)
2017/07/17(月) 10:09:00.03ID:U2FIHXXv
2017/07/18(火) 02:42:58.10ID:tovqy0R7
俺は同じような状況でexpires_onにしたことがある
49デフォルトの名無しさん
2017/08/31(木) 08:14:10.71ID:dCGUN1Rj Optionsみたいに複数形ってクラス名には不適切?
OptionBagか
OptionsBagにすべき?
OptionBagか
OptionsBagにすべき?
2017/08/31(木) 08:48:46.76ID:5u1Eta34
Containerとか
2017/08/31(木) 12:53:15.50ID:+8FXvQ6t
2017/08/31(木) 14:19:34.74ID:PxNjJG10
OptionSetとかOptionListでいいんでない
2017/08/31(木) 14:54:36.74ID:iGMaENMY
2017/08/31(木) 15:58:56.77ID:sCduGK6O
listはともかく、setはちょっときついだろ。
意味が多すぎる。
意味が多すぎる。
2017/08/31(木) 18:00:27.66ID:+8FXvQ6t
2017/08/31(木) 22:46:11.83ID:uNWxwE2R
2017/08/31(木) 22:54:08.86ID:PxNjJG10
>>53
継承したら
継承したら
2017/08/31(木) 23:53:16.30ID:J2aSRpVx
Optionの単数形でも別にいいと思うけどね
各オプションには具体名があるだろうし
責務によってはOptionManager/OptionHandler/OptionContainerみたいなer系も有り
オプションバッグ、オプションセット、オプションリストとかは普段からそういう名前で呼んでも問題ないかどうかに依る
あとは汎用コレクションクラスを使ってList<Option>みたいな選択肢も
各オプションには具体名があるだろうし
責務によってはOptionManager/OptionHandler/OptionContainerみたいなer系も有り
オプションバッグ、オプションセット、オプションリストとかは普段からそういう名前で呼んでも問題ないかどうかに依る
あとは汎用コレクションクラスを使ってList<Option>みたいな選択肢も
2017/09/01(金) 00:29:25.98ID:5FevI1x1
2017/09/01(金) 22:02:43.64ID:bkxV70/L
javaはPropertiesクラスがあるから複数でもいい気が
2017/09/20(水) 20:11:34.47ID:wQDPDBBK
ある値と、それに掛け合わされる係数fooがあります。
元の値が500、fooが30だとすると、500の30%アップで650といった具合です。
このとき以下の関数名をお願いします。
(a)そのまま30を返す
(b)0.3を返す(30%→0.3なので)
(c)130を返す(元の値を130%する)
(d)1.3を返す(元の値に1.3をかける)
関数を1つにまとめて、フラグなり呼び出し元で計算するなりしろよ思わないでもないですが、
名前変更以外の修正を伴うので避けたいところ。
ちなみに既存のコードはGetFoo1()、GetFoo2()…という命名になっているので
ちょっとキレそうです。
元の値が500、fooが30だとすると、500の30%アップで650といった具合です。
このとき以下の関数名をお願いします。
(a)そのまま30を返す
(b)0.3を返す(30%→0.3なので)
(c)130を返す(元の値を130%する)
(d)1.3を返す(元の値に1.3をかける)
関数を1つにまとめて、フラグなり呼び出し元で計算するなりしろよ思わないでもないですが、
名前変更以外の修正を伴うので避けたいところ。
ちなみに既存のコードはGetFoo1()、GetFoo2()…という命名になっているので
ちょっとキレそうです。
6261
2017/09/20(水) 20:18:55.20ID:wQDPDBBK >61に追記です。
圧倒的に使用頻度が高いのは(a)の「そのままの値を返す」でした。
ほかは同じくらい、
圧倒的に使用頻度が高いのは(a)の「そのままの値を返す」でした。
ほかは同じくらい、
2017/09/20(水) 21:27:00.99ID:joxmKzqL
2017/09/20(水) 21:35:02.04ID:0lMVwAWW
>>61
(a) deltaInPercent
(b) delta
(c) multiplier
(d) multiplierInPercent
スレ違いだしたぶん余計なお世話だと思うけど、可能なら「係数」自体を
クラス化した方がいいんだろうね
(a) deltaInPercent
(b) delta
(c) multiplier
(d) multiplierInPercent
スレ違いだしたぶん余計なお世話だと思うけど、可能なら「係数」自体を
クラス化した方がいいんだろうね
2017/09/20(水) 22:07:22.07ID:DOSxYj0U
税率、税抜き価格、税込価格、税額みたいに
文脈に応じた名前を付けたほうがいい気がするけど
“〇〇係数”みたいな名前がついてるんじゃないの?
文脈に応じた名前を付けたほうがいい気がするけど
“〇〇係数”みたいな名前がついてるんじゃないの?
2017/09/20(水) 23:55:11.31ID:Yucd9rMJ
2017/09/21(木) 00:05:51.85ID:3yD+3if8
>>61
(a) なし
(b) increase rate
(c) なし
(d) increase multiplier
パーセント版はいらんやろ。その場で100倍すればいいじゃん。
どうしてもというなら、末尾に_percentとかつければ。命名としては歪かもしらんけど、わかりやすかろう。
(a) なし
(b) increase rate
(c) なし
(d) increase multiplier
パーセント版はいらんやろ。その場で100倍すればいいじゃん。
どうしてもというなら、末尾に_percentとかつければ。命名としては歪かもしらんけど、わかりやすかろう。
2017/09/21(木) 00:08:16.78ID:3yD+3if8
>>64
deltaは増分であるべき。
deltaは増分であるべき。
2017/09/21(木) 00:33:44.66ID:ENxlmPyL
2017/09/21(木) 01:31:41.29ID:Y0fSMmUh
deltaは差分(足し算の増分)のイメージが強いなあ
x = 500
rate = foo/100 = 0.3 だとして、
delta = rate * x = 150
って感じ
x = 500
rate = foo/100 = 0.3 だとして、
delta = rate * x = 150
って感じ
2017/09/21(木) 02:14:32.44ID:ENxlmPyL
お買い物に例えないと算数理解できないデキの悪い小学生じゃないんだからw
正規化された増(減)分って考え方は普通だと思うよw
もともとパーセンテージ自体がそうなんだし
正規化された増(減)分って考え方は普通だと思うよw
もともとパーセンテージ自体がそうなんだし
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 高市首相答弁を“引き出した”立民・岡田克也氏が改めて説明「なぜ慎重な答弁をされなかったのか。非常に残念に思っている」 ★10 [ぐれ★]
- トランプ氏「台湾侵攻すれば北京爆撃」“過激予告発言”報道がXで再燃「高市氏の1億倍やばい」 [七波羅探題★]
- 【維新国会議員が800万円超の公金を使用】藤田文武共同代表が印刷代569万円を維新市議の「身内企業に支出」していた! [ぐれ★]
- 【ペルソナ・ノン・グラータ】中国総領事の早期国外退去を首相に要請へ 自民・保守系グループ「日本の尊厳と国益を護(まも)る会」 [ぐれ★]
- 「母の部屋に安倍氏が表紙の機関誌が」「(安倍氏が被害者なのは)不思議に思いませんでした」山上被告の妹が証言 ★2 [おっさん友の会★]
- 【(・(ェ)・)】収穫前のリンゴ2トン!丸々と太ったクマがリンゴ畑に連日現れ…一晩中居座る「こんなに食べられたのは初めて」長野・上田 [ぐれ★]
- 安倍晋三さん、完全にチェックアウトしてしまう…「母の部屋に安倍元首相が表紙の旧統一教会の機関誌があった」 [405019576]
- 中国報道、高市首相を「毒苗」と中傷😡 [399259198]
- 【高市悲報】🇨🇳中国「日本への報復措置? 他にいくらでも方法はある。 まだまだやめないよ」 😨😱 [485983549]
- 【悲報】日本、パンダ0にwwwwwwwwwwww高市さんありがとう🐼 [271912485]
- 高市早苗、約1ヶ月でドル円・10円円安を達成 [256556981]
- 高市さん「自賠責を勝手に他の財源に充てるな、返せ」財務省さん、しぶしぶ5700億円を返還 [881878332]
