クラス名・変数名に迷 ..
159:デフォルトの名無しさん
09/02/03 22:27:42
>>154
C++もマクロで即値定義なんてことはやらないよ。
やってると思った?
160:デフォルトの名無しさん
09/02/03 22:46:24
>>154
やっぱり期待通りに笑わせてくれるのなw
date part of today w
作為的なT.O.N.でもない例えでフイタw
161:デフォルトの名無しさん
09/02/03 23:19:52
>>154
馬鹿か。
慣習は情報伝達コストを大幅に下げる。
命名に拘る理由の大部分が伝わり易さを求めている以上、基本的に意味ない習慣とか厨二馬鹿にしか言えないわ。
お前が慣習に従うかなんて誰も興味ないっつーの。
お前の狭量自慢もいい加減にしてくれ。
そして自分だけで完結しないこのスレで俺ルールを撒き散らすな。
162:デフォルトの名無しさん
09/02/03 23:20:07
こうしてTONさんは芸風を磨いていくんだな。
エールをおくらせてもらうよ!!!
T.O.N!!! T.O.N!!!
163:デフォルトの名無しさん
09/02/03 23:29:43
>>157-161
自演乙
164:デフォルトの名無しさん
09/02/03 23:32:37
奥義!敵は全て一人の自演発動!
165:デフォルトの名無しさん
09/02/04 00:00:57
久しぶりにわろたw
これは真性w
166:デフォルトの名無しさん
09/02/04 00:13:24
自演って。言葉の意味を気にする割には、これを見て自演って。
167:デフォルトの名無しさん
09/02/04 00:19:45
また神が降臨したよね!ね!
168:デフォルトの名無しさん
09/02/04 00:30:37
>>154
>>156
すごい・・・粘着質です・・・
169:デフォルトの名無しさん
09/02/04 00:44:38
なにかホッとした。
170:デフォルトの名無しさん
09/02/04 01:07:17
>>161
君それに後続する人の話をちゃんと読んで突っかかってる?
俺は、キャメルとかアンダースコア区切りとか、その種のスタイルの違いは命名の本質と
関係がないから(つまりスレの趣旨に従えばどうでもいいことだから)自分の好きなスタイルで
書いただけで、別に「アンダースコアで区切る書き方をするのは無意味だから止めるべき」などとは
いってないから。
わけのわからんことで突っかからないでくれる?
こんな頭悪い奴に馬鹿呼ばわりされたくないよまったくw
まあ、言いがかりに目をつぶってあえて君の話にのっかかると、
>慣習は情報伝達コストを大幅に下げる。
これはまったく同意なんだが、件の即値を大文字でアンダースコア区切りで
表現する慣習に関して言えば、これによって伝達される情報が本当に
必要不可欠な情報かどうかは俺は大いに疑問を持ってる。
他人が書いたコードを読むとき、たいがいの場合は「それ」が即値か定数か変更可能な変数か、
なんてことはどうでもいい場合が多いからね。
システムハンガリアン的な無意味で時代遅れな偏執に過ぎないでしょ。
171:デフォルトの名無しさん
09/02/04 01:11:04
言い合いは英語でお願いします
加えて簡潔な単語でお願いします
172:デフォルトの名無しさん
09/02/04 02:04:47
>>171
ゴミはゴミ箱に入ってろ
173:デフォルトの名無しさん
09/02/04 02:18:06
誰だよ召還したやつは
174:デフォルトの名無しさん
09/02/04 02:26:25
煽ると必ず面白い反応するから癖になる
175:デフォルトの名無しさん
09/02/04 03:01:34
くど過ぎワロタ
TONでもなくウザい人種だなw
176:デフォルトの名無しさん
09/02/04 03:02:18
>>170
で、C++でも#define HOGE 5とか書いちゃうの?
177:デフォルトの名無しさん
09/02/04 03:02:53
まだまだいくよー!
178:デフォルトの名無しさん
09/02/04 03:11:21
>>176
余り虐めるなよw
Java以外の経験があるわけが無い
179:デフォルトの名無しさん
09/02/04 04:28:49
#define FiveOfNumbers 5
180:デフォルトの名無しさん
09/02/04 08:25:29
FiveOfNumだな
181:デフォルトの名無しさん
09/02/04 12:46:16
ちょっとかっこよくFifthNumberにしようぜ!
182:デフォルトの名無しさん
09/02/04 16:01:51
それって4?
183:デフォルトの名無しさん
09/02/04 17:26:46
>>170
このスレで最上級に偉そうな君の言語経験を教えては貰えまいか?
それぞれ実務何年で頼みます。
184:デフォルトの名無しさん
09/02/04 20:28:56
そんなの知りたくないし
185:デフォルトの名無しさん
09/02/05 00:42:29
もうお前ら大好きw
186:デフォルトの名無しさん
09/02/05 00:45:48
俺はお前が嫌いだ
187:デフォルトの名無しさん
09/02/05 23:36:03
TimeOfNowって何?
ぐぐっても、2chのスレくらいいしか見つからないけど、それって面白い話題?
188:デフォルトの名無しさん
09/02/05 23:45:49
実をいうと馬鹿馬鹿しくて真面目に読んでなかったので
どんなネタなのか俺にも分からない
189:デフォルトの名無しさん
09/02/05 23:45:54
時々現れるアホのニックネーム
190:デフォルトの名無しさん
09/02/06 00:28:13
訳してみるか
まさに今の時間 みたいな強調表現かもな
191:デフォルトの名無しさん
09/02/06 00:37:39
凡人並の知能は持ち合わせている様なんだけど
何故かとても
あたまがわるい
それがTimeOfNow
192:デフォルトの名無しさん
09/02/06 02:54:36
セカイ系とか自演とかに特殊な俺定義を行っているのも特徴
簡潔に表すなら、重度の中二病患者
193:デフォルトの名無しさん
09/02/06 08:03:28
今進行中の世界の時間っても訳せる
194:デフォルトの名無しさん
09/02/06 16:18:56
301リダイレクトされた場合に、正しいURLを求める関数名は何がいいかな?
暫定的に、getResolvedURLとしているけど、これは相対パスから絶対URLを
作成するときに使うような名前だよね?
195:デフォルトの名無しさん
09/02/06 16:20:27
getRedirectedURL
196:デフォルトの名無しさん
09/02/06 16:30:32
>>195
ありがとん
197:デフォルトの名無しさん
09/02/07 15:44:51
質問です。
いわゆるフラグという言葉は、本来は2値のみを意味するときに使う言葉でしょうか。
例えば1変数のビットごとに定数を当ててオプション指定するなんて例があったとして
ビットごとに見れば(アリかナシかの)フラグだし、変数としてみれば2値ではないし
こういう場合に変数名にフラグと入れるのは変でしょうか
198:デフォルトの名無しさん
09/02/07 15:46:44
flagsにすればいいじゃん。
199:デフォルトの名無しさん
09/02/07 15:51:07
>>197
ありがとうございます。
こういうビット演算によって複数のオプション指定したりする手法にあつらえ向きの名前なんてのはないんでしょうか。
200:デフォルトの名無しさん
09/02/07 15:51:32
>>198の間違えです
201:デフォルトの名無しさん
09/02/07 16:02:28
ビットフィールド?
202:デフォルトの名無しさん
09/02/07 16:14:48
なんか検索したらビットフラグとかビット配列(これは多分違うかも)とか出てきました。
>>201
ビットフィールドはC/C++のイメージがあるのでニュアンスが違う気もします・・・
203:デフォルトの名無しさん
09/02/07 16:19:07
>>199
普通は「その値の特殊な扱い方」、つまりビットマスクを使ってビットごとに
情報を格納したり取得したりする必要がある、なんてことを変数の名前に
盛り込む必要はないはずだと思う。
そんなことより、そのビットごとの値の集合であるその変数の「意味」に注目して名前をつけるべき。
hogeOptionsとかhogeMethodとかhogeModeとかhogeSettingsでいいじゃん。
204:デフォルトの名無しさん
09/02/07 16:23:16
>>203
なるほど!確かにそうですね・・・
変なところにこだわっておりました。どうも。
205:デフォルトの名無しさん
09/02/07 17:56:44
__
, ‐' ´ ``‐、 / ̄:三}
. /,. -─‐- 、. ヽ / ,.=j
_,.:_'______ヽ、 .! ./ _,ノ
`‐、{ へ '゙⌒ `!~ヽ. ! /{. /
`! し゚ ( ゚j `v‐冫 , '::::::::ヽ、/
. {.l '⌒ ゙ 6',! / :::::::::::::::/ __ そんなことよりTimeOfNowの話しようぜ!
. 〈 < ´ ̄,フ .ノー'_ , ‐'´::::::::::::::;/ (_ノ)‐-、
. ヽ.、 ` ‐", ‐´‐:ラ ':::::::::::::::: ;∠. ヽ_} ゙ヽ
,.r` "´ /:::::::::::::::::::ィ´ `ゝ !、 /
/ / :::::::::::::::: ; '´ /´\ / r'\
. i ! ::::::::::::::/ 墨 | .!::::::::/ヽ、.._!ヽ. ヽ、
{ {:::::::::::;:イ / ‖i:::::::/:::::::::::::/ \
. ヽ ヽ,.ァ‐'´ /ヽ 二 ,/`ヽ、::::::::: / ヽ
ヽ、 ,. ‐'" .ノ ,〈 > `'‐- '
> _,. ‐'´ / / `)
,ゝ _.⊥.-r┬:/
ヽ_,. -‐i"!´「L.=!┘ ヽ
< / / |
/ 、i / __ ./
206:デフォルトの名無しさん
09/02/07 19:42:42
爽やかだなw
207:デフォルトの名無しさん
09/02/08 06:01:57
フラグと聞いて真っ先に頭に浮かんだのがツンデレ
オレって…
208:デフォルトの名無しさん
09/02/08 12:51:28
死亡フラグ
209:デフォルトの名無しさん
09/02/10 00:03:15
画像のサイズを2のn乗にするプログラムを書いてるのですが、
int xを与えられたときに、xより小さくない2の乗数を返す関数の名前はどういうのがよいでしょうか。
自分で考えたのはint up_to_pow2(int x);といった具合ですが、WEB辞書を見てみると、up to というのが
どうやら思っていたのと違う意味のようでした。
210:デフォルトの名無しさん
09/02/10 00:11:33
? 条件をもっとはっきり。
x以下の2の乗数のうち最大のものを返すのか、x以上の2の乗数のうち最小のものを返すのか、
どっちだ?
211:デフォルトの名無しさん
09/02/10 00:12:47
ceil
212:デフォルトの名無しさん
09/02/10 00:13:35
逃げのような気もするが、normalize_image_sizeとか。
213:デフォルトの名無しさん
09/02/10 00:14:11
すいません。xより小さくない、最小の2の乗数 です。
214:デフォルトの名無しさん
09/02/10 00:15:06
up to じゃなくて、round up to じゃないかね?
215:デフォルトの名無しさん
09/02/10 00:19:03
いろいろ出してくれてありがとうございます。
cの数学関数にちなんでceilにしようかとも思いましたが、
ceil_pow2, ceil_to_pow2で意図した意味を成すのか不安なのでround_up_to_pow2にします。
216:デフォルトの名無しさん
09/02/10 00:19:37
汎用的に使う関数なら、round_up_to_power_of_2()かなあ。
画像サイズの正規化にしか使わないと決まっているものなら、>>212でいいんじゃね。
217:デフォルトの名無しさん
09/02/10 00:20:27
ぐぐると、 power of two round up とか
rounding up an int to a power of two とか
出てくるからそれでいいとおもう。
218:デフォルトの名無しさん
09/02/10 01:10:25
実験屋さんとかが使うMATLABだとnextpow2らしい。
俺ならとりあえずGetMinPowerOf2()とかGetMinPow2()とかしておいて、
必要ならオプションでFloorかCeilingを指定できるオーバーロードを追加するとかすると思う。
というか、過去にそんなの作った気がする。
219:デフォルトの名無しさん
09/02/10 01:16:32
まてよfloor指定するのなら名前にMinとか入ってると矛盾するのか。。
220:デフォルトの名無しさん
09/02/10 05:10:13
この際func001()で
221:デフォルトの名無しさん
09/02/10 08:25:21
1度になぜ2つのことをする
222:デフォルトの名無しさん
09/02/10 08:27:59
はぁ???????・・・・・・
223:デフォルトの名無しさん
09/02/10 11:10:40
Part11にて。
265 :デフォルトの名無しさん[sage]:2007/11/22(木) 17:48:28
ある整数値を引数として与えて、その値以上の2のべき乗の数のうち、
最小のものを返す関数の名前は何が相応しいですか?
266 :デフォルトの名無しさん[sage]:2007/11/22(木) 17:52:58
least2PowerGreaterThan(int i)
267 :デフォルトの名無しさん[sage]:2007/11/22(木) 18:03:56
>>265
clp2
268 :デフォルトの名無しさん[sage]:2007/11/22(木) 18:29:21
2Power よりは Power2 の方がいい気が。
power of 2 の of を省略したもの。
昔、自分が使ったのは、CeilPower2 と FloorPower2 でそれぞれ
「x 以上の最小の2のべき」、「x 未満の最大の2のべき」にした。
>>267 も、ceiling power of 2 の略よね?
269 :デフォルトの名無しさん[sage]:2007/11/22(木) 19:02:30
>> >>267 も、ceiling power of 2 の略よね?
Exactly.
See Hacker's Delight
URLリンク(www.informit.com)
270 :265[sage]:2007/11/22(木) 21:09:54
どうもありがとうございました。
CeilPowerOf2にします。
224:デフォルトの名無しさん
09/02/11 01:36:48
質問です。
3Dモデルのボーンマトリクス等で親を継承する前のマトリクスをLocalMatrix、
継承後のマトリクスをGlobalMatrixと表していますが、
頂点カラー等はライトが当たる前の元の色をLocalColor、ライトの色を適応した
最終的なカラーを保持するメンバ名をGlobalColorと言うものなんでしょうか?
より適切な名前があるような気がしてなりません。
どなたかより良い名前があればご指摘お願いします。
225:224
09/02/11 01:44:12
すいません、質問を変更します。
上記の、元データLocalに対して親を継承したものをGlobalとつけていますが、
マトリクス以外の親を継承したデータの名前に対してGlobal〜とつけるのは適切でしょうか?
継承したデータ、の内容は、色加算等の描画フラグ、ソートの補正値等が含まれます。
226:デフォルトの名無しさん
09/02/11 20:57:36
>>225
るーとまとりくす(ry
227:デフォルトの名無しさん
09/02/11 23:01:41
ロシアンパブはパブから派生だお( ^ω^)おっおっ
228:デフォルトの名無しさん
09/02/12 03:59:03
「TimeOfNow」って命名がセンスないっていうのが、
正直理解できてない…。
もしかしたら言葉にしづらい感覚的なことなのかもしれないが、
そこんところ、教えてもらえないかな
229:デフォルトの名無しさん
09/02/12 04:30:27
前置詞っツーのは、前置詞っツーのは
230:デフォルトの名無しさん
09/02/12 18:03:17
よろしくおねがいします
「入力必須であることを設定、取得するプロバティ名」と、
「入力必須なのに入力されていない事を示すプロパティ名」に悩んでいるんだが、
何かいいアイデアないかな?
例えば、Requireと、IsRequireとか付けてみたんだが、
これじゃどっちがどっちだかわからないので、他のを考えてるんだけど思いつかない。
231:デフォルトの名無しさん
09/02/12 18:17:56
Required
Missing
232:デフォルトの名無しさん
09/02/12 18:28:07
SetRequired
IsRequired
IsRequiredButNotFilledIn
233:デフォルトの名無しさん
09/02/12 18:33:04
IsRequired
IsMissing
234:デフォルトの名無しさん
09/02/12 18:39:25
なるほど参考させてもらって
IsRequiredとIsFilledがわかりやすそうなので、これにしました。
ありがとうございました
235:デフォルトの名無しさん
09/02/12 18:59:44
In...
236:デフォルトの名無しさん
09/02/12 19:14:00
(・∀・)インポ!!
237:デフォルトの名無しさん
09/02/12 19:21:58
それは Im... ぢゃ
238:デフォルトの名無しさん
09/02/12 20:53:05
しかし、「入力必須であることを設定、取得するプロバティ名」ってのはどういうことかのう。。
そのクラスは、文字列か何かの別のプロパティを一つだけ持っていて、
そのプロパティが必須かどうかを表すプロパティ、って意味なのか?
だとしたらなんだか無駄な気がするんだけどな。
「それ」が必須かどうかを表現するためだけに、ただの文字列をラップするのか。
「それ」が必須かどうかなんてことは、そのデータを持つクラスが知ってればいいことだと思うけど。
239:デフォルトの名無しさん
09/02/12 21:03:22
入力で未入力を許容するかどうかを確認する例はよくあるだろ
240:デフォルトの名無しさん
09/02/12 21:06:16
ToNじゃ!ToNがでたぞ!
ま、開発経験の無いでっかちド馬鹿に一つだけ教えてやるけど
よくある入力フォームでの話だろ
お前は何の経験も無いから知らないだろうけど
そんな理想論掲げるだけ無駄だし無意味だし金にもならないし社会活動として破綻してる
241:デフォルトの名無しさん
09/02/12 21:34:51
>>239
それはそうなんだが、俺(>>238)の言ってる意味わかってる?
普通は>>230みたいな変な実装しないと思うよ。
これじゃたわざわざ述する手間を増やして可読性を落としてるだけじゃん。
242:デフォルトの名無しさん
09/02/12 21:38:07
だからバリデータを自分で実装するからだろ
243:デフォルトの名無しさん
09/02/12 21:46:09
必須は、mandatoryともいうな。
244:デフォルトの名無しさん
09/02/12 21:46:47
設定するのが義務的な意味で。
245:デフォルトの名無しさん
09/02/12 21:48:31
>>241
例えばTextBoxの派生クラスを作るのに、
Require属性がなかったら、いちいち項目ごとに異なる派生クラスを作って、
いちいち入力必須かどうか記述しなくちゃいけないじゃん。
そのほうが手間だし可読性は最悪だろ
Require属性があればプロパティを設定するだけですべてに応用ができる。
246:デフォルトの名無しさん
09/02/12 21:51:16
UserやらNameから派生したテキストボックスとかあったら爆笑しちゃう
247:デフォルトの名無しさん
09/02/12 21:55:44
>>246
バリデートもそれぞれ別にやらなきゃいけないしな
User.IsMissing
Name.IsMissing
MailAddress.IsMissing
・・・・・
Address.IsMissing
とか、いちいち全部チェックするのかしら。
手間だし可読性も最悪。
248:デフォルトの名無しさん
09/02/12 22:01:03
>>245
その入力欄が必須かどうかを表す値をGUI部品に持たせるって
普通は変な設計だと思うけどなw
もちろん必須かどうかをユーザーに対して表示する機能を持たせるため、
というような事情はありうるだろうけど。
それ以前に、それって>>230の話と違うことない?
>>230はGUI部品の話をしてたんだろうか?
249:デフォルトの名無しさん
09/02/12 22:01:56
>>241
ごめん、変じゃない実装って何?
>>238だけじゃいまいち分からん。
250:デフォルトの名無しさん
09/02/12 22:06:03
>>230は「入力」の話をしてるのに
GUIで入力しないで何で入力するんだ?念力?
ユーザーオブジェクトの必須フィールドについてとかなら
全然違う書き方で質問してくると思うが
251:デフォルトの名無しさん
09/02/12 22:08:25
>>248
インターフェースでIsRequire属性を、それぞれのクラスに継承させ、
ファクトリークラスからインスタンスを生成する。
ファクトリークラスでは
foreach(IInterface object in ObjectList)
boolValue = boolValue & Object.IsMissing;
これだけですべての項目のバリデートができる
user、name、mailAddress、birthDay、age等すべてでValidateするのとどちらが可読性が上かい?
そして、こんな設計は変なのかい?
なんか書いていてむなしいぜ。
252:デフォルトの名無しさん
09/02/12 22:17:29
>>249
例えば、Customerクラスに氏を表すFamilyNameというメンバがあるとする。
そのFamilyNameが「入力必須」であることを表現するためだけに、
IsMissingをプロパティに持つ新たな型を導入するのは無駄だということ。
素直にFamilyNameは単純に文字列で持てばいい。
それが必須かどうかの情報はCustomerが持っている方が直感的だ。
253:デフォルトの名無しさん
09/02/12 22:17:39
>>248
だからバリデータを自分で実装するからだろ
俺(>>242)の言ってる意味わかってる?
254:デフォルトの名無しさん
09/02/12 22:21:38
>>252
そりゃ無駄だわw
そして、当たり前の事だわw
最後に、ただのお前の勘違いだわw
255:デフォルトの名無しさん
09/02/12 22:24:43
>>252
逆
その理屈だと、どんな属性もそれを抱えるクラスが持てばいいことになる。
Formに貼り付けたUI部品のVisibleをすべてFormで管理するなんて煩雑過ぎる
そのオブジェクトの属性は、そのオブジェクトが持つのが常識
かつ>>251の書いているとおりインターフェースを利用した場合のほうが、
拡張すべき実装(例えば誰が入力したか)がでた場合に簡単に拡張できる。
インターフェースにUserを追加するだけだからな。
256:デフォルトの名無しさん
09/02/12 22:33:57
>>254
そうでもないよ。
例えばnullを許容するかどうかの場合を考えるとわかりやすいよ。
これは空文字とは別にnullなんだという情報をCustomerクラスに持つなんてしないでしょ。
その属性は、そのオブジェクトに持たせるのが常識。
257:デフォルトの名無しさん
09/02/12 22:43:20
そのCustomerオブジェクトがValidであるかどうかのチェックが必要な場合はCustomerクラスに記述すべきじゃない?
今回のお題とは全く別件だけどさ
258:デフォルトの名無しさん
09/02/12 23:08:54
>>255
>その理屈だと、どんな属性もそれを抱えるクラスが持てばいいことになる。
いや、そうは言ってないよ。
「そのオブジェクトの属性は、そのオブジェクトが持つのが常識」には完全に同意するけど、
FamilyNameが入力必須かどうかは普通に考えれば「Customerクラスの都合」であって
FamilyNameの属性ではない。
ただ、>>251の言うことが正しい(少なくとも一理ある)のは理解した。
>>251の言う利点は正直あまり同意できないけど、確かに、例えば
ある値に「不正な入力がされている」ことをUIに反映するようなことを考えるときには
プロパティから取得したデータ自身が「自分が不正な値かどうか」を知っている方が便利だ。
言い訳がましいけど、俺は普段(「入力」ボタンが押されたときまとめて、ではなく)
個別のコントロールに入力された時点でプロパティの値を設定して、プロパティのセッタの中で
バリデーションを行って結果はイベントで通知してUIに反映する、というコードを書く場合が多いので
>>251の発想はなかった。
「変」とか言ったのが気に障ったらそれは謝る。
259:デフォルトの名無しさん
09/02/12 23:13:20
ここは属性プログラミングの出番だと思うね。
まあ、
>命名規則や設計の善し悪しについて議論するのは基本的に禁止。
なんで、ほどほどに。
260:デフォルトの名無しさん
09/02/13 00:10:01
>>258
Webアプリじゃそんな贅沢な事出来ないしな
261:デフォルトの名無しさん
09/02/13 00:12:16
TONさんさー
今回は出なくていいよ。
正直これはどうでもいい。
262:デフォルトの名無しさん
09/02/13 00:15:26
>>258
それだとコントロールが追加されるごとに、
・新たなプロパティ値を設定する部分
・バリデーションをする部分
・イベント通知をする部分
・そのコントロールが未入力を許容するかどうか
という項目をCustomerクラスに追加していかなきゃいけなくなるでしょ
ファクトリークラスとインターフェースを利用すれば、
インスタンスを生成するだけで、それが自動的にできる。
そのためには、それぞれのコントロールにRequired属性が必要になるってこと。
>>259
これで最後にするよ。
263:デフォルトの名無しさん
09/02/13 00:26:49
T.O.N.さんは質問者が解決って言った後に愚痴り出すのが趣味だから、しょうがないよ
264:デフォルトの名無しさん
09/02/13 01:20:04
>>262
>インスタンスを生成するだけで、それが自動的にできる。
それはちょっとミスリードな言い方だな。
単にそれらの処理が書かれる場所がデータを所有するクラスからデータ自身のクラスに
変わるだけ、でしょ?
もちろん、>>251のコードのように列挙してチェックする必要がある項目が
多数になる可能性があるのなら、(1)データ自身に、(2)同じインターフェイスとして実装する
ことによるポリモーフィズムの利点が利いてくるのは確か。
でも>>230のような用途でそんな可能性があるのかなあ。
やっぱり正直、一見エレガントに見えて「策士策に溺れる」的に思える。
>そのためには、それぞれのコントロールにRequired属性が必要になるってこと。
ごめんこれは何を言っているのかよくわからん。
最後に、確かにこれはスレ違いと言われても仕方がない話題だねすまんかった。
265:デフォルトの名無しさん
09/02/13 01:21:52
>>258
解決済みの件を無駄だの変だのと蒸し返した挙句、
今日一番の長文が殆ど全部言い訳で占められてるってどうよ?
本当に性格悪いな、あんた。
266:デフォルトの名無しさん
09/02/13 01:29:07
>>264
何で質問者がいるうちに言わないの?
何で質問者が居なくなった頃を見計らって「ぼくのかんがえたしつもんしゃがいいたかったこと」を語りだすの?
何で質問者がそこまで間抜けな質問をしていると仮定するの?
267:デフォルトの名無しさん
09/02/13 01:47:57
>>264
>単にそれらの処理が書かれる場所がデータを所有するクラスからデータ自身のクラスに変わるだけ、でしょ?
「単に」ではなく、それが最も重要な利点。
Validateする内容が文字列だけだと勝手に決めてないか?
stringだけなら、配列にいれた文字をstring == ""ですべてチェックできるが、
intやstringが混在する場合だと、その都度、異なるメソッドに割り振ってチェックしなきゃいけないから効率が悪い。
データ自身が処理を持っていれば、インターフェースで指定したValidateの返値を得るだけでチェックできる。
そしてユーザ指定型を追加して拡張したい場合でも、インターフェースさえ設定すれば、
所有クラスは何も変えずに使い続けることができる。
>でも>>230のような用途でそんな可能性があるのかなあ。
十分にある。
・Webアプリのコントロール→ボタン押下時に一斉にチェックする必要がある
・入力をチェックする再利用可能なValidationクラスの設計→メアド、数値など、
入力値をチェックするコントロールを再利用可能なクラスとして設計し、一斉にチェックする場合
・データベースへInsertするための汎用クラスの設計→DateTime値、int値、nullかどうかなど、
それぞれの入力値を一斉にチェックする場合
>ごめんこれは何を言っているのかよくわからん。
これを理解できないのに、なんでインターフェースを語れるんだ?
268:デフォルトの名無しさん
09/02/13 02:09:32
経験値不足な彼相手によくそこまで付き合ってあげられるなぁ。
ちょっと涙が出てきた。
269:デフォルトの名無しさん
09/02/13 02:55:17
>>264
>それはちょっとミスリードな言い方だな。
いや自動にできる
>単にそれらの処理が書かれる場所がデータを所有するクラスからデータ自身のクラスに
>変わるだけ、でしょ?
データ自身のクラスに、そんな処理を書くわけないだろ
処理はデータ自身の基底クラスに記述
データ自身はそれを継承しているだけ
だから自動でできる
270:デフォルトの名無しさん
09/02/13 02:58:57
案の定いつも通りの流れでワロタ
271:デフォルトの名無しさん
09/02/13 03:01:59
そろそろTONさんバックレます
また2週間くらい
272:デフォルトの名無しさん
09/02/13 03:10:32
>>230読んでクラスのメンバフィールドの話をしてると思った人ってTimeOfNowの人意外にいるの?
273:デフォルトの名無しさん
09/02/13 03:34:59
俺は入力フォームみたいのを作って実行する、データ自体には依存しない一般的な仕掛けを実装したいのかなと思った。
274:デフォルトの名無しさん
09/02/13 05:23:45
とりあえずTONのひとはコテハンかトリップでもつけてくれねぇかなぁ。
275:TimeOfNow ◆g72UvIyAhI
09/02/13 05:41:07
トリ付けました。
276:デフォルトの名無しさん
09/02/13 05:42:01
>>274
フルボッコされると自演乙とか言っちゃう人だから、まぁ無理でしょ
277:デフォルトの名無しさん
09/02/13 05:44:00
TONが「ました」
なんて言う訳が無い
278:デフォルトの名無しさん
09/02/13 09:00:15
>>273
「普通」はそうとしか取れないよな
279:デフォルトの名無しさん
09/02/13 13:48:04
年度末、年度初めって何かある?
startNendoOfYearとかベタなのしかおもいつかんw
280:279
09/02/13 13:49:40
ああ、ごめん年度開始月と、年度末月でした。
startMonthOfNendoとか、endMonthOfNendoとかしか思い浮かばない・・
281:デフォルトの名無しさん
09/02/13 14:02:28
>>280
それでいいじゃん。何か不満なの?
282:デフォルトの名無しさん
09/02/13 16:04:55
Nendo -> FiscalYear (会計年度)
Nendo -> BusinessYear (事業年度)
Nendo -> AcademicYear, SchoolYear (学校年度)
283:デフォルトの名無しさん
09/02/13 18:59:25
of yearっているの?
ToN!
284:デフォルトの名無しさん
09/02/13 20:13:55
>>267
いや、「<コントロールに>Required属性が必要」というのはやはり意味不明に聞こえる。
コントロール、に?
前半の話は理念的に美しいのは認めるが、現実解としてはやはり間違いだと思う。
>>230のような話は、ベタにやった方がずっと早くわかりやすく書ける。
>>269
それ自分で言ってることの意味がわかって言ってるの?
285:デフォルトの名無しさん
09/02/13 20:22:21
>>284
スレ違いの話題いいかげんにしろや池沼
286:デフォルトの名無しさん
09/02/13 20:25:25
>>284
>前半の話は理念的に美しいのは認めるが、現実解としてはやはり間違いだと思う。
なら汚いスパゲッティコードしか書けてないんだろ
object指向ならあらゆる処理を行うコードが、それぞれまとまっているわけだが?
int.ToString();
string.Substring(0, 0);
datetime.AddDays(0);
そしてintなどには未入力であることを示すプロパティが無いから、
自前で実装しておきたい需要は普通にあるだろ。
それこそ機能を作っておいて>>269の言うとおり継承するだけでいいんだから
そのほうが簡単で確実だし可読性も良い。
お前の言う方法だと、いちいちその都度、Customerクラスを専用に作り直さなければ
ならないので遅いし、クラスによって実装が異なるから分かりにくく可動性に欠ける。
287:デフォルトの名無しさん
09/02/13 20:44:50
>>286
いきなりお前呼ばわり?
まあいいけど、既に書いたとおり、>>230のような情報は本来「データを所有しているクラス」
が知っているべきことであって、データそのものに属する情報じゃない。
OOP云々いうのなら、こういう「意味論的なおかしさ」にも敏感になってよ。
それだけでなく、年齢(普通ただの数値であることを期待するだろう)が、「必須項目かどうか」
を年齢自体に持たせるために、本来ただの数値で済むものに専用型を導入するわけ?
int age = Customer.Age.Value;
みたいなまどろっこしいことを強制されるわけ?
策に溺れてるじゃん。
それと、その継承の使い方はおかしいと思うよ。
継承って「見たくないコード」を隠すために使うものなの?
違うと思うけど。
288:デフォルトの名無しさん
09/02/13 20:47:41
>>287
暗黙の型変換ができればいい。
289:デフォルトの名無しさん
09/02/14 01:22:06
>287
継承の使われ方は結果論であって、
親クラスがその責務をもつのが妥当かって話で
その観点からは個人的にはアリだと思うけど。
まどろっこしいかどうかは言語によっても変わるだろうし。
でもお二人ともスレ違いだしそろそろやめたら?
290:デフォルトの名無しさん
09/02/14 02:04:47
>>287
そこで暗黙の型変換使わないでどうするの?
もう少し知識を揃えようね。
それにオブジェクト指向の根本が見たくないものを隠すからなってるだろが。
291:デフォルトの名無しさん
09/02/14 02:12:27
o(・_・= ・_・)o キョロキョロ
292:デフォルトの名無しさん
09/02/14 02:18:46
Webアプリだと普通にベストプラクティスの一つだと思うけどな。
それを「少なくとも一理ある」だの「正直あまり同意できない」だの、どんだけ言い訳まみれの人生なんですかw
293:デフォルトの名無しさん
09/02/14 02:44:55
>>1
>命名規則や設計の善し悪しについて議論するのは基本的に禁止。
294:デフォルトの名無しさん
09/02/14 06:12:10
>>238の時点でブッチギリにスレ違いなのに、何をいまさらw
295:デフォルトの名無しさん
09/02/14 11:35:18
所持数とか使用数みたいな
変数名はいまだに悩む
296:デフォルトの名無しさん
09/02/14 19:23:01
結局残るのはTimeOfNowを肯定する人間は一人も現れないと言う事実のみ
297:デフォルトの名無しさん
09/02/14 21:41:34
いまはこーのばしょで〜TimeOf Now〜
298:デフォルトの名無しさん
09/02/14 21:45:21
>>287
>OOP云々いうのなら、こういう「意味論的なおかしさ」にも敏感になってよ。
なるほど組み込み型の変数以外は、どんなクラスであれ、データそのものでなく、
データを所有するクラスだから、未入力属性が存在することは認めるということね。
つまり、バリデーションを受け持つクラスや、GUI部品が
未入力であることを示すプロパティを持ってる事には納得したってことだな。
じゃなんで、>>238のような質問をするんだ?
>>230はどう考えても、お前の言うところのデータを所有しているクラスのプロパティだろ。
>int age = Customer.Age.Value; みたいなまどろっこしいことを強制されるわけ?
暗黙の型変換、拡張メソッドがあるじゃん
>継承って「見たくないコード」を隠すために使うものなの?
すべてではないが、一つの機能だろ。
継承とカプセル化が無縁のものなら、なんでprivateとprotectedの違いがそもそもあるんだ?
299:デフォルトの名無しさん
09/02/14 22:38:32
>>298
だからいきなり人をお前呼ばわりするなって。
最低限の礼儀も弁えない糞ガキなの?(まあ、やってることは疑念の余地なくそう。)
悪いけど前半は何を言ってるのかさっぱり理解できん。
最後の三行について言えば、>>269,>>286が言っているような目的、
つまり、例えばEMailAddrクラスがあるとして、そのクラスの中に直接Validateメソッドを
書くことを避けるためだけに無理に(つまり何の「汎化」にもなってない!)
ベースクラスEMailAddrBaseクラスを作る、なんていう継承の使い方を良しとする
まともなプログラマって見たことないよ。
それって、例えばCで、「関数の行数が長すぎるからもっと短くしろ」と叱られた
馬鹿な新米プログラマが、
int hogeFunc(int x, int y)
{
#include "hogeFuncの中身.h"
}
とやってるのと何が違うの?
ついでに言えば、こういう愚行を「カプセル化」と呼ぶ人間も見たことない。
(まあこれは普通そんな頭の悪いことはしないから当たり前だけど。)
300:デフォルトの名無しさん
09/02/14 22:57:46
俺が設計してやろうか?
301:デフォルトの名無しさん
09/02/14 22:58:36
2chでお前って言われてブチ切れるやつ始めて見たwwww
302:デフォルトの名無しさん
09/02/14 23:04:15
ひょっとして40過ぎのおっちゃん?
303:デフォルトの名無しさん
09/02/14 23:09:47
>298,299
お前らもう最低だな。早く死ねや
304:デフォルトの名無しさん
09/02/14 23:34:55
老害すぎる
305:デフォルトの名無しさん
09/02/15 02:37:36
つかNullable型のような物を自前で実装するってだけだろ
何そのEMailAddrBaseってw
ダサすぎw
306:デフォルトの名無しさん
09/02/15 02:43:12
つまりやっぱりTONの人なの?
307:デフォルトの名無しさん
09/02/15 02:45:37
>>299は総称型も暗黙の型変換もない言語を使ってるんだよ…
308:デフォルトの名無しさん
09/02/15 02:51:28
IsMissingだけをサポートするMyStringって型作ってEMailAddrやらFirstNameやらPostalCodeやらがそれを継承するだけじゃん
なんでEMailAddrBaseやらFirstNameBaseやらPostalCodeBaseまでつくらにゃならんの?
309:デフォルトの名無しさん
09/02/15 03:09:49
EMailAddrBaseさん、落ち着いてくださいよ
糞ガキ呼ばわりも十分に無礼っすよ
無礼者同士、仲良くしたらいいじゃないっすか
310:デフォルトの名無しさん
09/02/15 10:50:13
議論も仲良くもここでやんな。
311:デフォルトの名無しさん
09/02/15 15:37:35
荒らしにはスルーが基本。読む価値なし
312:デフォルトの名無しさん
09/02/15 19:54:42
だれかToNさんに鏡を渡してあげないと
313:デフォルトの名無しさん
09/02/15 21:40:08
質問ですが、ToNとTONとT.O.Nとどれが一番いいと思いますか?
314:デフォルトの名無しさん
09/02/15 21:45:57
ToNがいいと思うけど顔文字に見えてしまう
315:デフォルトの名無しさん
09/02/15 21:54:14
>>313
もういっこピリオドを付けてT.O.N.にする
316:デフォルトの名無しさん
09/02/16 00:22:31
>>299
>クラスの中に直接Validateメソッドを書くことを避けるためだけに無理にベースクラスEMailAddrBaseクラスを作る
お前バカだろ。電子メールアドレスの基底クラスを作って、それを派生させるのはメアド入力だけかよw
個々のオブジェクトに普遍、共通な機能をクラスに記述し、それを継承できるとこにobject指向の意味があるんだよ。
例えばメアドでも住所でも、バリデートが必要なデータは、すべて使用者が入力するデータなんだから、
入力値とIsMissiongプロパティを所有するValidateStringとか言う自作クラスを作って、それを継承するだけだろ。
ついでに入力値を設やりとりするプロパティとか、文字数とか、nullかどうかをチェックする機能も
基底クラスに記述すればいいわけだ。
>(つまり何の「汎化」にもなってない!)
お前の脳内で汎化してないだけだろ。
EMailAddressでも、ZipCodeでも、Addressでも、FaxNumberでも、
すべて未入力を許容する可能性があるんだからValidateStringを継承すればいいだけ。
いちいち未入力であるかどうかを個々に記述してたらばからしいだろ。
>こういう愚行を「カプセル化」と呼ぶ人間も見たことない。
お前、継承の機能を全然理解してないだろ。
customerクラスが、未入力を許可するかどうかを所持していたら、
項目が増えるごとにメンバを増やさなければいけないから、
入力するフォームが増えるだけ異なる別個のクラスができて非効率的だろ。
データが所有クラスが、自分自身に未入力を許容するかどうかを持っていれば
Customerクラスを改変せずに利用できるから非常に便利。
317:デフォルトの名無しさん
09/02/16 00:44:03
>>299
もう面倒だから俺が設計してやんよ
public class MyString //入力関連の基底クラス
private string mData = "";
private bool mIsRequire = false;
public string Data //入力データを格納するプロパティ
public bool IsRequire //入力必須かどうか
public bool IsMissing //入力必須であるのに入力がない
public interface ICheck
public virtual bool IsCheck() //入力データをチェックするメソッド
public class MailAddress : MyString, ICheck //メアドチェック
public bool IsCheck()
return IsMissing && IsMailAddress
public bool IsMailAddress //メアドかどうか
public class PostalCode : MyString, ICheck //メアドチェック
public bool IsCheck()
return IsMissing && IsPostalCode
public bool IsPostalCode //郵便番号かどうか
public class Tel : MyString, ICheck //電話番号チェック
public bool IsCheck()
return IsMissing && IsTel;
public bool IsTel //電話番号かどうか
汎用化できるじゃん。しかも継承させたほうがすっきりして可読性が良い。
318:デフォルトの名無しさん
09/02/16 00:46:53
>>316
ここでもいつも言ってることだが、人が言ったことに反論してもらえるかな?
人が言ってもいない、ただの君自身の被害妄想的な妄想に対して一生懸命反論して
何か意味あるの?
いつも思うんだが、こういう人間ってどういう思考回路してんだろ意味がわからない。
319:デフォルトの名無しさん
09/02/16 01:24:14
>>317
一応反論(と言っていいかわからんが…)しとくけど、俺が使った言葉は「汎化」ね。
>>269,>>286が言っているような継承の使い方は、なんの汎化にもなってない愚行だ、
と言ったんだよ俺は。
しかし、君に言ってもしょうがないけど>>269がどういう意味で自動って言ってるのか
さっぱり意味がわからんな。
この人継承って魔法か何かとでも思ってるのかしらん。
まあIsRequiredのようにメンバ変数の値を返すだけプロパティやメソッドなら
コンストラクタでメンバ変数に適切な値を入れるとかで見かけ上「自動」にできるけど
(でも普通はそんなことせず、素直に派生クラスでオーバライドする作りにした方が早いよな)
Validateのようなメソッドがどう「自動」にできるのか聞いてみたいもんだ。
コンパイラの中の小人さんが適当にValidateの中身を書いてくれるのかw
320:デフォルトの名無しさん
09/02/16 01:47:04
>>313
1番目のToNがお気に入りです
321:デフォルトの名無しさん
09/02/16 01:49:25
あと、一つ思ったんだが、>>230がいうような情報をデータ自身に持たせることが
意味論的におかしいことは既に書いたけど、そのことの帰結として、
例えば同じ型のデータが2つ以上必要で、それぞれ入力必須かどうかが
違ってたらどうするの?
もちろん、例えば入力必須かどうかで別の型にするとか、いろいろ技巧的に解決法があろうとは
思うけど、それって本当に直感的と言える?
むしろそんな技巧を凝らさなければならなくなるのは、最初の考え方に無理があるからじゃないの?
もちろん物事何でもトレードオフだから、多少意味的におかしくてもコードが簡潔になるとか、
それ以上のメリットがあれば良いとは思うんだけど、>>251が提案しているような方法は
ある種エレガントではあっても冗長なだけにしかならんよ。
まるで庭の焚き火用の穴を掘るのにユンボ使ってるようだ。
322:デフォルトの名無しさん
09/02/16 01:59:24
>ある種エレガントではあっても冗長なだけにしかならんよ。
323:デフォルトの名無しさん
09/02/16 04:19:31
設計の話か。俺になんか聞きたいことある?
324:デフォルトの名無しさん
09/02/16 05:23:07
\(ToN)/設計オワタ
325:デフォルトの名無しさん
09/02/17 01:22:01
>>264でスレ違いを謝罪してるのに何故未だに続けてるの?
326:デフォルトの名無しさん
09/02/17 01:37:10
「確かにこれはスレ違いと言われても仕方がない話題」であり、
「紛らわしい事については認めるが、スレ違いでは無い」からです。
「スレ違いな話題だと勘違いする馬鹿」に対して「お気の毒に」と言っているのが>>264です。
これを「TimeOfNowメソッド」と呼びます。
327:デフォルトの名無しさん
09/02/17 01:50:08
>>319
>>>269,>>286が言っているような継承の使い方は、なんの汎化にもなってない愚行だ、と言ったんだよ俺は。
>>317に書いてるじゃん
>しかし、君に言ってもしょうがないけど>>269がどういう意味で自動って言ってるのかさっぱり意味がわからんな。
MailAddress mailAddress = Factory.CreateMailAddress;
PostalCode postalCode = Factory.CreatePostalCode;
Tel tel = Factory.CreateTel;
foreach (ICheck object in Factory.ObjectList)
icCheck = isCheck && object.IsCheck;
いろんな手法はあるが、わかる安くかけば、こんなふうに自動でできたよ
>Validateのようなメソッドがどう「自動」にできるのか聞いてみたいもんだ。
>>317に書いてるじゃん
328:デフォルトの名無しさん
09/02/17 01:51:34
>>321
>>>230がいうような情報をデータ自身に持たせることが意味論的におかしい
おかしくないよ 例 JAVAのString.isEmpty()
>例えば同じ型のデータが2つ以上必要で、それぞれ入力必須かどうかが違ってたらどうするの?
その型を格納するクラスが二つになるだけだよ。
メールアドレスを格納するクラス
MailAddress mailAddress1 = new MailAddress();
MailAddress mailAddress2 = new MailAddress();
とするだけだよ。参照渡しと値渡し理解してる?
>例えば入力必須かどうかで別の型にするとか、いろいろ技巧的に解決法があろうとは
>思うけど、それって本当に直感的と言える?
オブジェクトにそのプロパティがあるほうが直感的だよ。
どんな入力内容にも、入力必須が入力必須でないかの二つしかないよ。
入力必須でなければ、入力必須をfalseにして普通に使えばいいだけだよ。
一般化できる昨日をスーパークラスに記述するobjectの仕組み理解してる?
329:デフォルトの名無しさん
09/02/17 02:02:00
>>321
>あと、一つ思ったんだが、>>230がいうような情報をデータ自身に持たせることが
>意味論的におかしいことは既に書いたけど、そのことの帰結として、
>例えば同じ型のデータが2つ以上必要で、それぞれ入力必須かどうかが
>違ってたらどうするの?
異なるインスタンスを生成するだけじゃねーか
なにいってんだ?
330:デフォルトの名無しさん
09/02/17 02:12:45
>>318
お前も人の言ったことに反論してねーじゃねーかw
331:デフォルトの名無しさん
09/02/17 02:16:45
>>324
ToN入ってたのかw
332:デフォルトの名無しさん
09/02/17 02:27:10
おかしくないよ 例 C#のNullable<string>
>>328
彼はそれだけじゃ理解できないからもう少し書いてあげないと
MailAddress mailAddress1 = new MailAddress();
MailAddress mailAddress2 = new MailAddress();
mailAddress1.IsRequire = true; //mailAddress1.IsMissing ⇒ true & mailAddress1.IsCheck ⇒ false
mailAddress2.IsRequire = false; //mailAddress2.IsMissing ⇒ false & mailAddress2.IsCheck ⇒ true
mailAddress1 = "hoge1"; //mailAddress1.IsMissing ⇒ false & mailAddress1.IsCheck ⇒ false
mailAddress2 = "hoge2"; //mailAddress2.IsMissing ⇒ false & mailAddress2.IsCheck ⇒ false
mailAddress1 = "hoge1@hogemail.hoge"; //mailAddress1.IsMissing ⇒ false & mailAddress1.IsCheck ⇒ true
mailAddress2 = "hoge2@hogemail.hoge"; //mailAddress2.IsMissing ⇒ false & mailAddress2.IsCheck ⇒ true
ほんと、書いててむなしくなるな・・・
333:デフォルトの名無しさん
09/02/17 02:31:49
>>330
>>318はどこかの誰かのアンカミスで、ToNに宛てて言ってるんだろ?
そうとしか思えない。いや、それ以外ありえない。
334:デフォルトの名無しさん
09/02/17 02:52:12
>>318
、ミ川川川彡 ,ィr彡'";;;;;;;;;;;;;;;
ミ 彡 ,.ィi彡',.=从i、;;;;;;;;;;;;
三 ギ そ 三 ,ィ/イ,r'" .i!li,il i、ミ',:;;;;
三. ャ れ 三 ,. -‐==- 、, /!li/'/ l'' l', ',ヾ,ヽ;
三 グ は 三 ,,__-=ニ三三ニヾヽl!/,_ ,_i 、,,.ィ'=-、_ヾヾ
三 で 三,. ‐ニ三=,==‐ ''' `‐゛j,ェツ''''ー=5r‐ォ、, ヽ
三. 言 ひ 三 .,,__/ . ,' ン′  ̄
三 っ ょ 三 / i l,
三. て っ 三 ノ ..::.:... ,_ i ! `´' J
三 る と 三 iェァメ`'7rェ、,ー' i }エ=、
三 の し 三 ノ "'  ̄ ! '';;;;;;;
三 か て 三. iヽ,_ン J l
三 !? 三 !し=、 ヽ i ,.
彡 ミ ! "'' `'′ ヽ、,,__,,..,_ィ,..r,',",
彡川川川ミ. l _, , | ` ー、≡=,ン _,,,
ヽ、 _,,,,,ィニ三"'" ,,.'ヘ rー‐ ''''''"
`, i'''ニ'" ,. -‐'" `/
ヽ ! i´ /
ノレ'ー'! / O
次ページ最新レス表示スレッドの検索類似スレ一覧話題のニュースおまかせリスト▼オプションを表示暇つぶし2ch
5378日前に更新/165 KB
担当:undef