X



クラス名・変数名に迷ったら書き込むスレ。Part28 [無断転載禁止]©2ch.net
■ このスレッドは過去ログ倉庫に格納されています
0001ネミ子
垢版 |
2017/05/07(日) 18:01:52.03ID:akuyRduv
クラス名、変数名のつけ方に悩んだら書き込むスレです。

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

前スレ
クラス名・変数名に迷ったら書き込むスレ。Part27
http://echo.2ch.net/test/read.cgi/tech/1476572490/
0225デフォルトの名無しさん
垢版 |
2018/05/23(水) 19:36:24.40ID:Au5e7VGg
僕の知り合いの知り合いができたパソコン一台でお金持ちになれるやり方
役に立つかもしれません
グーグルで検索するといいかも『ネットで稼ぐ方法 モニアレフヌノ』

RUCPE
0227デフォルトの名無しさん
垢版 |
2018/05/28(月) 06:35:00.86ID:kyqpWJOZ
Lookfor みたいに1語としてしまう方法もあるかな
自分も含めて英語が苦手な人間だと、確認が大変なのは同意する
0228デフォルトの名無しさん
垢版 |
2018/06/05(火) 16:29:36.05ID:rxd5N2KO
とある制御用プログラムの話です
例えるならスクリーンショットのように、ある瞬間の現場の状態を記録する処理をCaptureと命名しています

今回悩んでいるのはその逆で、記録されたキャプチャデータから可能な限り現場を再現する処理の命名に悩んでいます
何か名案ありますか?
0229デフォルトの名無しさん
垢版 |
2018/06/05(火) 17:35:39.82ID:vCTdp4Eh
>>228
restore?
decapture?

まあ、話が抽象的過ぎw
再現する対象によるんじゃないかと
絵画ならreadrawだろうしボードゲームならreplayだろうし構造物を再建するならrebuildだろうし

そもそも再現というニュアンスが本当に必要かもよくわからん
キャプチャーされたデータだろうとゼロベースで作ったデータだろうとdrawはdrawだろうって考え方もありうるかと
0232デフォルトの名無しさん
垢版 |
2018/06/05(火) 20:44:13.65ID:rxd5N2KO
>>229
工作機械の制御プログラムなので構造物が近いです
rebuildにしようと思います
ありがとうございました
0234デフォルトの名無しさん
垢版 |
2018/06/05(火) 22:49:02.18ID:m8mVVRTq
もし工作機械というのが削る系なら、rebuildには超違和感。。。
組み立て系なら超納得だけど。
0235デフォルトの名無しさん
垢版 |
2018/06/05(火) 23:39:15.31ID:yC4OyvIK
"restore a snapshot" は割と使われる表現みたいね
あとはimport/export とかも思いついたけど、
captureよりはもうちょっと上の処理のイメージになっちゃうかな
0236デフォルトの名無しさん
垢版 |
2018/06/06(水) 00:06:11.59ID:QCe3vYvo
純粋なデータを保存するわけではなく、実物の加工品(加工途中?)をスキャンして再現を試みる…と言う話みたいだから、save/loadやexport/importは違和感があるかなあ
それだと100%同じものが復元されるイメージがある
0237デフォルトの名無しさん
垢版 |
2018/06/06(水) 07:59:52.74ID:AFggJmmf
snapshotみたいな名詞らしい語を処理名(関数名)にするのには躊躇いを感じる
動詞用法あるけど基本はtake a snapshotだしこれチェキるみたいなくだけた表現だよな
SnapshotクラスやStateHistoryクラスのreplayやrestoreメソッドなら好き
0239デフォルトの名無しさん
垢版 |
2018/07/04(水) 22:31:14.31ID:gFgZc5FG
IKD
0241デフォルトの名無しさん
垢版 |
2018/07/31(火) 18:16:10.08ID:BaQoKVST
毎日データを作成して保存しているのですが、x日間保存・残しておくという仕様です。(現状5日)
このx日をdefineで名前を付けておきたいのですが、この名前をお願いします。
0244デフォルトの名無しさん
垢版 |
2018/07/31(火) 18:54:31.67ID:BaQoKVST
なるほど、TTLというのがありましたね。
それで行きます。
どうもありがとうございました。
0247デフォルトの名無しさん
垢版 |
2018/08/11(土) 11:27:51.21ID:D0St3L3h
スレ立てるまでもない質問のスレ見てて、ここでもたまに同じ話になるが
このスレタイや>1だと、クラス名と変数名以外の質問はできないと勘違いしちゃう人も多いのかね
0258デフォルトの名無しさん
垢版 |
2018/08/12(日) 09:55:15.16ID:2ilyV10f
昔は、板名を見ずに検索で飛んできて
頓珍漢な質問する人って結構いたなあと思いだした
0259デフォルトの名無しさん
垢版 |
2018/08/14(火) 08:05:50.65ID:c1VO1O/p
メソッド名について相談です。
c#ですが、
public static Func<SqlConnection> CreatSqlConnection{xxxx}(string connectionString)

みたいな、「インスタンスを作るメソッド」を作るメソッドの場合、{xxxx}には何をいれたら良いでしょうか?
また、もっとより良い名前があれば教えてください。
0260デフォルトの名無しさん
垢版 |
2018/08/14(火) 11:44:03.89ID:45jA2HfC
素直にこうすれば無理名前考えずに済むんじゃないのかなと...

public static SqlConnection CreateSqlConnection(string connectionString){ ... }

....

Func<SqlConnection > creator = CreateSqlConnection;
0262デフォルトの名無しさん
垢版 |
2018/08/14(火) 13:27:03.62ID:iUeERglu
getSqlConnectionSupplier
頭と末尾の動詞はニュアンスに応じてお好みで

変数名をフルスペルで書いたときこうなる感じ

Func<SqlConnection> sqlConnectionSupplier = getSqlConnectionSupplier("debu");

関数型の変数についての良い命名ガイドラインって無いのかな
SupplierはJava8から拝借した
0263デフォルトの名無しさん
垢版 |
2018/08/14(火) 15:17:53.59ID:c1VO1O/p
>>260 261
ありがとうございます。
例に出したものに限らず、
「インスタンスを作るメソッド」を作る(返す)メソッド郡を作っているので、何かしら定型的なものがあればと思っています。

>>262
ありがとうございます。
creator,maker等は思い付いたのですが、supplierってのもあるのですね。
勉強になります。
0264デフォルトの名無しさん
垢版 |
2018/08/14(火) 16:57:24.97ID:45jA2HfC
>>263
「Func<T>を返すメソッド」自体が抽象的で分かりづらい。
どうしてもGetFuncToCreateSqlConnectionみたいに長くなると思う

例外は
static class SqlConnectionHelper
{
  public static Func<SqlConnection> GetCreator(string connectionString) { ... }
  ...
}

みたいにメソッドが置かれた文脈が十分に明示的な場合だけ


しつこくて申し訳ないけど、そもそも本当に「Func<T>を返すメソッド」に
固執する必要があるのか再考した方が俺はいいんじゃないかと思うけどなあ。

ラムダ式で簡単にTを返すメソッドからFunc<T>を作れるんだから
0265デフォルトの名無しさん
垢版 |
2018/08/14(火) 20:15:21.22ID:I6V3xwhV
>>264
抽象的でわかりにくいとおまえが思うのは、おまえが質問者の状況を想像できてないから。
質問者がいいと言っているのだから、それでいいのだ。
0266デフォルトの名無しさん
垢版 |
2018/08/14(火) 20:23:17.89ID:I6V3xwhV
>>263
create factory predicate

○なにかをつくるなにかはやはりfactoryだろう。FactoryパターンとかFactoryメソッドとかいうしね。
○個人的に、Action/Funcには総称してpredicateと名付けることにしている。
0269デフォルトの名無しさん
垢版 |
2018/08/14(火) 20:47:13.97ID:/EKv3YIo
昔、関数ポを返すのを書いたときは
GetFooFunctionだったかGetBarMethodだったか、そんな感じにしたなあ
今考えるとちょっと野暮ったい
0270デフォルトの名無しさん
垢版 |
2018/08/14(火) 20:57:39.85ID:45jA2HfC
仮に運よく>>264みたいに簡潔なメソッド名が使えるとしても、
var creator = SqlConnectionHelper.GetCreator("Hage");
こう書けるだけ。

これが、
Func<SqlConnection > creator = () => CreateSqlConnection("debu");

より簡潔でより読みやすいと言えるか、かなり微妙だと思うけどね。
むしろ後者の方が可読的と思うけどなあ
0271デフォルトの名無しさん
垢版 |
2018/08/14(火) 21:02:43.21ID:kXwDSKTz
>>264
提案ありがとう。
都度都度ラムダで作れるのはそうだけどConnectionは1つの例で、(disposeの有無に関わらず)他にもラップしたいのはいくつかあるんですよ。
今は「インスタンスを作るメソッド」を作る(返す)メソッドってテーマで色々やってるんで。

他皆様もありがとうございます。
0274デフォルトの名無しさん
垢版 |
2018/08/16(木) 17:17:21.85ID:FfzoHzI3
predicateって1つ以上の引数を取ってbool型を返す関数(関数オブジェクト)じゃねーの?
関数名が断定する名称でさ、例えば、Equal(A, B) → bool
0276デフォルトの名無しさん
垢版 |
2018/08/17(金) 05:57:44.08ID:kUuVSKQh
>>273
案をありがとう。
これだと、C#にすでにはActionって名前のデリゲートがあるから、そっちに意味を取られないかね?
これは各々の認識の話になるけれども。
だったらサフィックスをFuncにしろよって話だけど、
なんかね、、、カッコ悪いしね
0277デフォルトの名無しさん
垢版 |
2018/08/17(金) 07:26:31.99ID:V/i+u2Gb
>>276
C#にはPredicateというさらに別の意味のデリゲートもあって、Predicateと言いつつActionという名前が付いたFuncですよね!いい加減にしてください!
と言われたいだけのネタだったんだ…
0278デフォルトの名無しさん
垢版 |
2018/08/17(金) 07:28:20.40ID:V/i+u2Gb
お詫びに案を挙げますね

//取得
Func<SqlConnection> createSqlConnection = x.GetCreatingSqlConnection("debu");

// 実行
createSqlConnection();
0279デフォルトの名無しさん
垢版 |
2018/08/17(金) 13:08:13.08ID:7gyaHV45
>>274
C#とかJavaでそういうデリケート/インターフェイスが定義されてるとしても、「predicate」の本来の意味は「述部」だから。

C#の場合は、comparerとかの名前を先にインターフェイスとして使ってしまってるから、ヤケクソ的にpredicateを使ったのでは?w
単体では意味が広すぎると思う。
0281デフォルトの名無しさん
垢版 |
2018/08/17(金) 13:20:48.82ID:rrElr8rg
classの本来の意味が「部類・種類」だからと言ってenumに付けてまわったら紛らわしいことこの上ないじゃん
JavaやC#といったメジャーな言語で定義されてるもんを勝手に使うのは良くない
しかも今回はActionやFuncが登場する言語での話だし

たまたま知ってたじゃなくて>>280が無知なだけ
0282デフォルトの名無しさん
垢版 |
2018/08/17(金) 13:33:11.89ID:fY7CNqGl
>>279
少なくともプログラミングの世界のpredicateの普通の用法はこれw
https://en.wikipedia.org/wiki/Predicate_(mathematical_logic)

仮に君の言う「述部」とやらの意味だったとして、
そんな意味の用語がプログラミングの世界で必要とされる余地が果たして存在するかねw
0283デフォルトの名無しさん
垢版 |
2018/08/17(金) 13:37:28.17ID:E8kXAg+Z
>>279
命名ってのは英和辞書で引いてみて意味があってりゃいいってもんじゃねえだろ。
例えば「モノを作るなにか」でもcreaterやfactory、maker、manufacturerなどなど似たような単語はいっぱいあるが、その中でも最も適切な単語を選ぶのが命名だ。

「述語=predicate」と言うたまたま知ってた1つの単語に固執してるのは君だろう
初めて英単語を覚えた中学生じゃあるまいし
0285デフォルトの名無しさん
垢版 |
2018/08/17(金) 14:58:06.31ID:KaaDwp63
まあ業界用語はテキトーに決められてる奴もあるから元の意味ガーとか言ってもしょうがないわな
ネットワーク用語のpromiscuousなんて元の意味は人前でつかうのを憚られるし w
0286デフォルトの名無しさん
垢版 |
2018/08/17(金) 16:19:33.11ID:7gyaHV45
>>281
言語要素といっしょくたにする意味がわからん。
名前空間のどこかにある名前とかぶってはイカンとか現実的じゃないし。

>>282
それは「プログラミングの世界」じゃなくて、数理論理学や一階述語論理における用法。

>>283
じゃあ「述語」に相当する英語は?
0288デフォルトの名無しさん
垢版 |
2018/08/17(金) 16:25:58.31ID:FrC0luOi
>>286
>言語要素といっしょくたにする意味がわからん。

言語要素よりは、そりゃ回避優先度は高いだろうが
次元としては同じじゃないかなあ
0289デフォルトの名無しさん
垢版 |
2018/08/17(金) 16:27:08.26ID:FrC0luOi
すまん、>288の日本語がおかしい

誤:回避優先度は高いだろうが
正:回避優先度は低いだろうが
0290デフォルトの名無しさん
垢版 |
2018/08/17(金) 16:37:36.53ID:E8kXAg+Z
>>286
一連の処理の総称を言いたいならmethodやfuncと名付けるのが一般的だわな
ガキンチョはちょっと周りと違う言葉を使おうとしてトンチンカンなチョイスをするから困る
0291デフォルトの名無しさん
垢版 |
2018/08/17(金) 16:44:51.48ID:5lcaj0TK
そもそも質問者がC#を使ってるのに、そのC#で多用するPredicateを別の意味で再定義しようとしてる時点でアホやろ
そんなアホ新人がいたら試用期間で切るわ
0293デフォルトの名無しさん
垢版 |
2018/08/17(金) 18:35:11.36ID:V/i+u2Gb
predicateの名詞用法のうち最も代表的なものは「述語」だから広義に用いても間違いという訳ではないんだけど、英英辞典を引くと動詞の「断定する」や「命題の述部」というニュアンスも色濃く現れてきて無視できない
https://www.dictionary.com/browse/predicate
語源としてもその辺から由来し、広義の述語へと転じた経緯がある模様
特にプログラミングや論理学の分野でどう用いられているかを見れば答えは自ずと決まる
0294デフォルトの名無しさん
垢版 |
2018/08/17(金) 19:08:31.34ID:nnyWdGJK
C#(特にLINQ)を触り始めたばかりの初心者だとPredicateとラムダ式を混同してることが多いからその類じゃないかね?
Predicateを引数にとる各種メソッド群も、一定の規則を守ったラムダ式ならコンパイラが自動的に解釈・変換してくれるもんだから勘違いしがち
0295デフォルトの名無しさん
垢版 |
2018/08/17(金) 19:30:14.24ID:zD2h2oDf
>>294
何を言いたいのかよくわからん
この際、おまえがしてた、若しくは現在進行形でしている勘違いを
洗いざらい吐き出しちまえよ
0296デフォルトの名無しさん
垢版 |
2018/08/17(金) 19:33:30.25ID:nnyWdGJK
>>295
「FuncにもActionにも何でもかんでもPredicateと名付けてしまうのはこれら全てがラムダ式と同一のものだと勘違いしてるんじゃないの?」ってこと
俺じゃなくて今春の新米PGにいたんだわ
0297デフォルトの名無しさん
垢版 |
2018/08/17(金) 20:02:32.47ID:zD2h2oDf
>>296
ラムダ式と同一のものというのがよく分からんが
ラムダ式ならLambdaでええやん
それがなぜPredicateになるんや?
0298デフォルトの名無しさん
垢版 |
2018/08/17(金) 20:39:16.72ID:nnyWdGJK
>>297
同じ意味をもつ別名ぐらいに考えてたらしい
そこで謎の選択をした理由はそんなの本人にしかわからんがな
カッコいいとでも思ったんじゃね?
0299デフォルトの名無しさん
垢版 |
2018/08/17(金) 21:36:39.65ID:zD2h2oDf
なんや結局謎のままやんけw
0302デフォルトの名無しさん
垢版 |
2018/08/17(金) 23:27:59.94ID:QIXEpzAH
>>300
最後の3文字しかあってないじゃないかwww
そんなバカがいるわけが…いや、そんな、まさか、ねえ?
0303デフォルトの名無しさん
垢版 |
2018/08/17(金) 23:33:12.06ID:7gyaHV45
>>300
いいだしっぺ本人だが、混同はしていないつもり。
C#ではdelegateは言語機能だけど、あくまでpredicateは一般名詞。数理論理なんかを記述してるわけではないし。
lambdaは抽象的な機能とか無名関数とかをあらわす印象。

>>293
英語は同じ単語を別の用途に使い回すことはよくあるからね。
あんまり気にしない。w
0305デフォルトの名無しさん
垢版 |
2018/08/17(金) 23:48:25.74ID:w9bXgbFB
>>303
このスレでも何度も書いたことだが、
英語という言語は日本語のように新しい概念に対して語彙を増やして対応する言語じゃない。

同じ言葉を文脈によってまったく別の意味に使い分ける傾向が強い言語だ。

だから、
>あくまでpredicateは一般名詞
これナンセンス。

だから何度も言ってるだろう。
プログラミングの分野では(数学と同じく)boolで評価する関数のことをpredicateを言うの。

いい加減恥を知った方がいいよ。
0308デフォルトの名無しさん
垢版 |
2018/08/18(土) 00:08:59.00ID:LOkpLZfD
だいたいコードの中の普通の日本語でいう述語なんか出てこないだろうってw

お前はコードの中に、

(空は)青い
(地球ま)回る

とか書くのかとw
ダイクストラ先生の時代からコードってのはデータと手続きで出来てるんだよw
それは宣言型の言語だろうが同じこと
0309デフォルトの名無しさん
垢版 |
2018/08/18(土) 00:13:12.08ID:QJ6qXFdU
なんやまたどえらいアホが現れたなあw結構結構wwww
0311デフォルトの名無しさん
垢版 |
2018/08/18(土) 01:00:41.41ID:MgtGkUH1
混同というのはID:nnyWdGJKに対して言ったんだけどな
余計な飛び火をさせてしまった
0312デフォルトの名無しさん
垢版 |
2018/08/18(土) 01:06:13.96ID:MgtGkUH1
>>305
英語にも外来語は多いよね
新しい概念に対して語彙を増やさないというのが何を指してるのか詳しく知りたい
漢字がない分、同音異義語が多いという話なら分かる
0315デフォルトの名無しさん
垢版 |
2018/08/18(土) 01:14:41.34ID:QJ6qXFdU
あらゆるメソッド名、クラス名にSentenceと名付けたらコンパイル通らんやんwwww
アホしかおらんのかここはwwww
0317デフォルトの名無しさん
垢版 |
2018/08/18(土) 01:18:38.83ID:QJ6qXFdU
>>316
スコープ内で一意なら普通にコンパイル通るわw
おまえプログラミングしたことあるんかwwwww
0318デフォルトの名無しさん
垢版 |
2018/08/18(土) 01:25:33.36ID:tAHy4SpI
>>317
その理屈で言えばSentenceも通るやろ

マジレスするとプレフィックスないしサフィックスの話やろ
0319デフォルトの名無しさん
垢版 |
2018/08/18(土) 01:27:40.92ID:QJ6qXFdU
>>318
どの理屈やねんwwww
言い訳すんなアホw
0320デフォルトの名無しさん
垢版 |
2018/08/18(土) 01:28:57.12ID:N7wT67Om
つーか何度も言ってるが、C#で多用されるLINQの引数型としてPredicateはあちらこちらで使われるんだから
それに別の意味を持たせて再定義してる時点で脳味噌スッカスカだろと
0321デフォルトの名無しさん
垢版 |
2018/08/18(土) 01:30:10.58ID:tAHy4SpI
>>319
スコープ内でSentenceが一意ならコンパイルが通ることも知らんのかいな(呆れ)
プログラミングしたことあるか?
0322デフォルトの名無しさん
垢版 |
2018/08/18(土) 01:44:39.95ID:X2Z3Uu8P
delegate(委任、委譲)とpredicate(断定)の区別すら出来ない子がいるとは…一般名詞とか言語仕様以前の問題だろう
中学生ぐらいで英語力が止まってるのか?
0323デフォルトの名無しさん
垢版 |
2018/08/18(土) 01:56:59.73ID:LOkpLZfD
>>312
何を指すも英語はそんな文脈に依存して意味が変わる単語だらけ
atomic, bit, function

日本語は英語より文脈に依存する表現を好まない傾向が強い

分割不可能性みたいに明示的な漢語を作り出すか、ビットのようにカタカナ表記にするか
(日本語でビットといえば普通文脈に関係なくそのビットしかない)関数のように音訳する
0324デフォルトの名無しさん
垢版 |
2018/08/18(土) 02:12:07.58ID:LOkpLZfD
電動ドライバーのビットはあるかw
でも日本語が同じ言葉より語彙を増やすことを好む言語なのはちょっと考えれば
大方同意するよね

スレ違いなのでこれで終わりで
■ このスレッドは過去ログ倉庫に格納されています

ニューススポーツなんでも実況