1 名前:デフォルトの名無しさん mailto:sage [2008/12/29(月) 00:20:32 ] クラス名、変数名のつけ方に悩んだら書き込むスレです。 質問する人は、その変数に何を格納するのか(クラスだったらその役割) プログラミング言語は何なのかを、それぞれ書いて、 いい変数名を思いついた人は、それに答えてあげましょう。 命名規則や設計の善し悪しについて議論するのは基本的に禁止。 >>2 英和・和英・英英など各国語辞書と翻訳サイト。 >>3 類義語(シソーラス)辞書、図形・数式・数学用語の英単語。 >>4 関連スレと、いろいろな言語規約。 >>2-10 諸事情によりリンクがずれた場合。 前スレ。 ◆ネーミング倶楽部◆: pc3.2ch.net/tech/kako/1035/10353/1035362308.html Part1: pc5.2ch.net/tech/kako/1046/10465/1046541730.html Part2: pc5.2ch.net/tech/kako/1058/10582/1058213523.html Part3: pc5.2ch.net/test/read.cgi/tech/1067171530/ Part4: pc5.2ch.net/test/read.cgi/tech/1087209526/ Part5: pc8.2ch.net/test/read.cgi/tech/1109330204/ Part6: pc8.2ch.net/test/read.cgi/tech/1128266018/ Part7: pc8.2ch.net/test/read.cgi/tech/1144978008/ Part8: pc10.2ch.net/test/read.cgi/tech/1154448184/ Part9: pc11.2ch.net/test/read.cgi/tech/1168356029/ Part10: pc11.2ch.net/test/read.cgi/tech/1180146315/ Part11: pc11.2ch.net/test/read.cgi/tech/1191250784/ Part12: pc11.2ch.net/test/read.cgi/tech/1206118762/ Part13: pc11.2ch.net/test/read.cgi/tech/1222661623/
313 名前:デフォルトの名無しさん mailto:sage [2009/02/15(日) 21:40:08 ] 質問ですが、ToNとTONとT.O.Nとどれが一番いいと思いますか?
314 名前:デフォルトの名無しさん mailto:sage [2009/02/15(日) 21:45:57 ] ToNがいいと思うけど顔文字に見えてしまう
315 名前:デフォルトの名無しさん mailto:sage [2009/02/15(日) 21:54:14 ] >>313 もういっこピリオドを付けてT.O.N.にする
316 名前:デフォルトの名無しさん mailto:sage [2009/02/16(月) 00:22:31 ] >>299 >クラスの中に直接Validateメソッドを書くことを避けるためだけに無理にベースクラスEMailAddrBaseクラスを作る お前バカだろ。電子メールアドレスの基底クラスを作って、それを派生させるのはメアド入力だけかよw 個々のオブジェクトに普遍、共通な機能をクラスに記述し、それを継承できるとこにobject指向の意味があるんだよ。 例えばメアドでも住所でも、バリデートが必要なデータは、すべて使用者が入力するデータなんだから、 入力値とIsMissiongプロパティを所有するValidateStringとか言う自作クラスを作って、それを継承するだけだろ。 ついでに入力値を設やりとりするプロパティとか、文字数とか、nullかどうかをチェックする機能も 基底クラスに記述すればいいわけだ。 >(つまり何の「汎化」にもなってない!) お前の脳内で汎化してないだけだろ。 EMailAddressでも、ZipCodeでも、Addressでも、FaxNumberでも、 すべて未入力を許容する可能性があるんだからValidateStringを継承すればいいだけ。 いちいち未入力であるかどうかを個々に記述してたらばからしいだろ。 >こういう愚行を「カプセル化」と呼ぶ人間も見たことない。 お前、継承の機能を全然理解してないだろ。 customerクラスが、未入力を許可するかどうかを所持していたら、 項目が増えるごとにメンバを増やさなければいけないから、 入力するフォームが増えるだけ異なる別個のクラスができて非効率的だろ。 データが所有クラスが、自分自身に未入力を許容するかどうかを持っていれば Customerクラスを改変せずに利用できるから非常に便利。
317 名前:デフォルトの名無しさん [2009/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 名前:デフォルトの名無しさん mailto:sage [2009/02/16(月) 00:46:53 ] >>316 ここでもいつも言ってることだが、人が言ったことに反論してもらえるかな? 人が言ってもいない、ただの君自身の被害妄想的な妄想に対して一生懸命反論して 何か意味あるの? いつも思うんだが、こういう人間ってどういう思考回路してんだろ意味がわからない。
319 名前:デフォルトの名無しさん mailto:sage [2009/02/16(月) 01:24:14 ] >>317 一応反論(と言っていいかわからんが…)しとくけど、俺が使った言葉は「汎化」ね。 >>269 ,>>286 が言っているような継承の使い方は、なんの汎化にもなってない愚行だ、 と言ったんだよ俺は。 しかし、君に言ってもしょうがないけど>>269 がどういう意味で自動って言ってるのか さっぱり意味がわからんな。 この人継承って魔法か何かとでも思ってるのかしらん。 まあIsRequiredのようにメンバ変数の値を返すだけプロパティやメソッドなら コンストラクタでメンバ変数に適切な値を入れるとかで見かけ上「自動」にできるけど (でも普通はそんなことせず、素直に派生クラスでオーバライドする作りにした方が早いよな) Validateのようなメソッドがどう「自動」にできるのか聞いてみたいもんだ。 コンパイラの中の小人さんが適当にValidateの中身を書いてくれるのかw
320 名前:デフォルトの名無しさん mailto:sage [2009/02/16(月) 01:47:04 ] >>313 1番目のToNがお気に入りです
321 名前:デフォルトの名無しさん mailto:sage [2009/02/16(月) 01:49:25 ] あと、一つ思ったんだが、>>230 がいうような情報をデータ自身に持たせることが 意味論的におかしいことは既に書いたけど、そのことの帰結として、 例えば同じ型のデータが2つ以上必要で、それぞれ入力必須かどうかが 違ってたらどうするの? もちろん、例えば入力必須かどうかで別の型にするとか、いろいろ技巧的に解決法があろうとは 思うけど、それって本当に直感的と言える? むしろそんな技巧を凝らさなければならなくなるのは、最初の考え方に無理があるからじゃないの? もちろん物事何でもトレードオフだから、多少意味的におかしくてもコードが簡潔になるとか、 それ以上のメリットがあれば良いとは思うんだけど、>>251 が提案しているような方法は ある種エレガントではあっても冗長なだけにしかならんよ。 まるで庭の焚き火用の穴を掘るのにユンボ使ってるようだ。
322 名前:デフォルトの名無しさん mailto:sage [2009/02/16(月) 01:59:24 ] >ある種エレガントではあっても冗長なだけにしかならんよ。
323 名前:デフォルトの名無しさん mailto:sage [2009/02/16(月) 04:19:31 ] 設計の話か。俺になんか聞きたいことある?
324 名前:デフォルトの名無しさん mailto:sage [2009/02/16(月) 05:23:07 ] \(ToN)/設計オワタ
325 名前:デフォルトの名無しさん mailto:sage [2009/02/17(火) 01:22:01 ] >>264 でスレ違いを謝罪してるのに何故未だに続けてるの?
326 名前:デフォルトの名無しさん mailto:sage [2009/02/17(火) 01:37:10 ] 「確かにこれはスレ違いと言われても仕方がない話題」であり、 「紛らわしい事については認めるが、スレ違いでは無い」からです。 「スレ違いな話題だと勘違いする馬鹿」に対して「お気の毒に」と言っているのが>>264 です。 これを「TimeOfNowメソッド」と呼びます。
327 名前:デフォルトの名無しさん mailto:sage [2009/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 名前:デフォルトの名無しさん mailto:sage [2009/02/17(火) 01:51:34 ] >>321 >>>230 がいうような情報をデータ自身に持たせることが意味論的におかしい おかしくないよ 例 JAVAのString.isEmpty() >例えば同じ型のデータが2つ以上必要で、それぞれ入力必須かどうかが違ってたらどうするの? その型を格納するクラスが二つになるだけだよ。 メールアドレスを格納するクラス MailAddress mailAddress1 = new MailAddress(); MailAddress mailAddress2 = new MailAddress(); とするだけだよ。参照渡しと値渡し理解してる? >例えば入力必須かどうかで別の型にするとか、いろいろ技巧的に解決法があろうとは >思うけど、それって本当に直感的と言える? オブジェクトにそのプロパティがあるほうが直感的だよ。 どんな入力内容にも、入力必須が入力必須でないかの二つしかないよ。 入力必須でなければ、入力必須をfalseにして普通に使えばいいだけだよ。 一般化できる昨日をスーパークラスに記述するobjectの仕組み理解してる?
329 名前:デフォルトの名無しさん [2009/02/17(火) 02:02:00 ] >>321 >あと、一つ思ったんだが、>>230 がいうような情報をデータ自身に持たせることが >意味論的におかしいことは既に書いたけど、そのことの帰結として、 >例えば同じ型のデータが2つ以上必要で、それぞれ入力必須かどうかが >違ってたらどうするの? 異なるインスタンスを生成するだけじゃねーか なにいってんだ?
330 名前:デフォルトの名無しさん mailto:sage [2009/02/17(火) 02:12:45 ] >>318 お前も人の言ったことに反論してねーじゃねーかw
331 名前:デフォルトの名無しさん mailto:sage [2009/02/17(火) 02:16:45 ] >>324 ToN入ってたのかw
332 名前:デフォルトの名無しさん mailto:sage [2009/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 名前:デフォルトの名無しさん mailto:sage [2009/02/17(火) 02:31:49 ] >>330 >>318 はどこかの誰かのアンカミスで、ToNに宛てて言ってるんだろ? そうとしか思えない。いや、それ以外ありえない。
334 名前:デフォルトの名無しさん mailto:sage [2009/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
335 名前:デフォルトの名無しさん mailto:sage [2009/02/17(火) 02:54:57 ] >>332 その結果、入力内容が正しい(IsValidate ⇒ true)かどうかってのも必要かも 入力必須でなく(IsRequire ⇒ false)、未入力の場合、メアド判定はfalseでも入力結果は正しいからね。 まとめるとこんなんになるのかな? mailAddress1.IsRequire = true; //mailAddress1.IsMissing ⇒ true & mailAddress1.IsCheck ⇒ false & mailAddress.IsValidate ⇒ false mailAddress2.IsRequire = false; //mailAddress2.IsMissing ⇒ false & mailAddress2.IsCheck ⇒ true & mailAddress.IsValidate ⇒ true mailAddress1 = "hoge1"; //mailAddress1.IsMissing ⇒ false & mailAddress1.IsCheck ⇒ false & mailAddress.IsValidate ⇒ false mailAddress2 = "hoge2"; //mailAddress2.IsMissing ⇒ false & mailAddress2.IsCheck ⇒ false & mailAddress.IsValidate ⇒ false mailAddress1 = "hoge1@hogemail.hoge"; //mailAddress1.IsMissing ⇒ false & mailAddress1.IsCheck ⇒ true & mailAddress.IsValidate ⇒ true mailAddress2 = "hoge2@hogemail.hoge"; //mailAddress2.IsMissing ⇒ false & mailAddress2.IsCheck ⇒ true & mailAddress.IsValidate ⇒ true つか、そう考えると入力判定にIsRequire属性必須だよな 空文字はメアドチェックにははじかれるけど、入力必須でなければバリデート結果はtrueだからな。 まさに書いててむなしくなるな・・・
336 名前:デフォルトの名無しさん mailto:sage [2009/02/17(火) 03:49:58 ] >>335 IsCheck==IsValidate 俺ならIsValidプロパティかValidateメソッドで実装するな
337 名前:デフォルトの名無しさん mailto:sage [2009/02/17(火) 06:16:46 ] TONさん議論の入り口にも立ててなくてワロス ワザとやってるんだろうか
338 名前:デフォルトの名無しさん mailto:sage [2009/02/17(火) 06:23:06 ] IsValidate はまず品詞がおかしい
339 名前:デフォルトの名無しさん mailto:sage [2009/02/17(火) 09:43:08 ] IsCheked IsValid
340 名前:デフォルトの名無しさん mailto:sage [2009/02/17(火) 09:58:20 ] 論旨に影響しない瑣末な違いだ
341 名前:デフォルトの名無しさん mailto:sage [2009/02/17(火) 10:11:52 ] このスレにとっての本題だがな
342 名前:デフォルトの名無しさん mailto:sage [2009/02/17(火) 10:17:46 ] いつの間にか設計の話するスレになってたんだな
343 名前:デフォルトの名無しさん mailto:sage [2009/02/17(火) 10:21:41 ] 設計の話と言うか おぶじぇくとしこういちねんせいのToNに虚しさを感じながらも無駄な説明を繰り返すスレ
344 名前:デフォルトの名無しさん mailto:sage [2009/02/17(火) 10:29:51 ] トンはもう秋田
345 名前:デフォルトの名無しさん mailto:sage [2009/02/17(火) 17:28:10 ] さぁTONさんタイムがやってまいりますた!!
346 名前:デフォルトの名無しさん mailto:sage [2009/02/17(火) 19:33:32 ] >>327 さすがに頭おかしくないか? >>317 とかそれのどこが「自動」なんだ。 >>264 で指摘しているように、ただ判定処理が書かれるコードの場所が変わってるだけだろ。 >>328 ,>>332 >>335 君ら(複数人だよね?)それ本気で書いてるのか? こんなこと一々説明しなくても当然分かるだろうと思って書かなかったが、 IsRequiredはゲッタのみかつ定数を返すようにしないとマズいだろう。 IsRequiredをインスタンスメンバとして実装しちまったら 外からMailAddressをセットできなくなるだろ。 言ってる意味分かる? なんていうか、まともなコード書いたことない奴が本読んだだけで 物を言ってるのがバレバレだなw
347 名前:デフォルトの名無しさん mailto:sage [2009/02/17(火) 19:44:20 ] >>346 >>>264 で指摘しているように、ただ判定処理が書かれるコードの場所が変わってるだけだろ。 それがobject指向の目的だよ。 データと判定処理をクラスが持っていたら、クラスの所有するデータが増えるたびに、 そのデータの判定処理をするプログラムを書かなければいけないよ。 データそのものが判定処理を持っていれば、データを持つ所有クラスは何も改変せず、 自動的に処理されるよ。 >IsRequiredはゲッタのみかつ定数を返すようにしないとマズいだろう。 別にまずくないよ。設定するのが嫌だったら、初期値でfalseにしといて使いまわせばいいだけだよ。 >IsRequiredをインスタンスメンバとして実装しちまったら >外からMailAddressをセットできなくなるだろ。 MilAddressは、IsRequiredを所有するクラスなんだから、セットも糞もないよ。 何が困るのか実際のコードで示してくれよ。
348 名前:デフォルトの名無しさん mailto:sage [2009/02/17(火) 19:54:53 ] >>347 ではCustomer.MailAddress1のIsRequiredはtrueであって欲しいとして、 Customerの外のクラスから MailAddress ma = new MailAddress(); ma.IsRequired = true; Customer.MailAddress = ma; とかされた場合、どうするの?
349 名前:デフォルトの名無しさん mailto:sage [2009/02/17(火) 19:55:40 ] ごめん ma.IsRequired = false; に訂正
350 名前:デフォルトの名無しさん mailto:sage [2009/02/17(火) 19:57:14 ] っていうか、ここまで言ってまだ分からんかなあ。。
351 名前:デフォルトの名無しさん mailto:sage [2009/02/17(火) 20:01:53 ] 横に長いコード書くなよ。うちの専ブラの使い方で見づらい
352 名前:デフォルトの名無しさん mailto:sage [2009/02/17(火) 20:05:16 ] >>348 trueであって欲しいのに、 ma.IsRequired = true; をし、さらに Customer.MailAddress = ma; をすることが間違い じゃあ、 Form.TextBox1のVisibleはtrueであって欲しいとして、 Formの外のクラスから TextBox tb = new TextBox(); tb.Visible = false; Form.TextBox = tb; とかされる可能性は問題ないの? むしろ、そんな設定をするほうが悪いんじゃないの?
353 名前:デフォルトの名無しさん mailto:sage [2009/02/17(火) 20:07:53 ] >>348 IsRequiredをtrueなりfalseと設定したいから、そう記述するんだろ? お前はいちいちプロパティが改変されることを予見してすべてプログラムするのか?
354 名前:デフォルトの名無しさん mailto:sage [2009/02/17(火) 20:09:51 ] >>352 おいおい何を言ってるんだよトチ狂ったかw そもそも外(UI)から操作される値の話をしてるのに、 外から操作してはダメな値を操作するのがおかしい、ってどういう意味だよ。 もう一度>>230 から読んで話の文脈をちゃんと理解して何かいってよ。
355 名前:デフォルトの名無しさん mailto:sage [2009/02/17(火) 20:12:13 ] >>353 それこそOOPを理解してる? 普通に考えれば、IsRequiredは外から操作されたくない値だろう。 >>230 の意図はそうじゃないよ、って言いたいの? じゃあまあ>>230 の意図はおくとして、IsRequiredが外から操作されたくない 値だったら(普通にありふれたシナリオだと思うが)どうするの・
356 名前:デフォルトの名無しさん mailto:sage [2009/02/17(火) 20:15:42 ] >>354 おいおい、お前頭がおかしいんじゃないか? なら、絶対に表示しなければならないGUI部品のTextBoxがあったとして、 そのTextBox.Visibleを絶対に変更されないような仕組みをわざわざ作る必要なんてないだろ? 使う本人が分かればいいんだから。IsRequiredも同じだろ。
357 名前:デフォルトの名無しさん mailto:sage [2009/02/17(火) 20:17:19 ] >>355 >普通に考えれば、IsRequiredは外から操作されたくない値だろう。 いや、汎用のクラスライブラリとしては、普通に操作できて当たり前だろ。
358 名前:デフォルトの名無しさん mailto:sage [2009/02/17(火) 20:18:12 ] っていうか、正直>>230 のような目的で>>251 式にデータ自身に メソッドやプロパティを持たせるかどうかは意見が分かれるところだとは思うけど、 IsRequiredはクラスメンバの値を公開するようにすべき、ってのは まともなプログラマが100人いたら100人が同意する話だと思うぜ。
359 名前:デフォルトの名無しさん [2009/02/17(火) 20:19:25 ] 質問 bool値を返す関数ってよくIs〜って名前付けるよね? でも『A君はB君の方を見ていますか?』みたいな文の場合、 英語にするとDoes〜で始まると思うんだけど、 こういうときの関数名はどうするべき?
360 名前:デフォルトの名無しさん mailto:sage [2009/02/17(火) 20:21:00 ] >>359 CanASeeB
361 名前:デフォルトの名無しさん mailto:sage [2009/02/17(火) 20:25:25 ] >>360 それ可能・不可能の意味合いに変わってるじゃないですか
362 名前:デフォルトの名無しさん mailto:sage [2009/02/17(火) 20:25:53 ] >>356 外から変更されたくない値は変更できないようにしておくのが当たり前。 君は「アクセス修飾なんてぜんぶpublicでいいじゃん」っていう初心者様? >>357 汎用クラスライブラリの話なんかしてないの。 ベタベタに特定用途専用のクラスの話をしてるんでしょ。 だいじょうぶかよ。 CustomerクラスのMailAddress1プロパティが必須かどうか、なんて値を 外から操作できてどうするんだよw もちろんそういう用途が皆無とはいえないはずだが、普通はないよ。
363 名前:デフォルトの名無しさん mailto:sage [2009/02/17(火) 20:31:54 ] >>362 変更されたくない値かどうかは、設計者次第 汎用クラスとして設定できるようにしておいて、その継承クラスで隠蔽しておけばいいだけでしょ。 >>230 の使い方もわからないのに、勝手に変更されたくないと決めつけて意見するほうが間違い。 とはいえ、汎用的に利用するために、IsRequireのようなプロパティは公開しとくのが当たり前だろな。 >汎用クラスライブラリの話なんかしてないの。 >ベタベタに特定用途専用のクラスの話をしてるんでしょ。 ユーザが入力した文字列のバリデーションなら汎用だろ。 勝手に特定用途専用なんて決めつけるほうがおかしい。 >CustomerクラスのMailAddress1プロパティが必須かどうか、なんて値を >外から操作できてどうするんだよw CustomerクラスのMailAddressプロパティなんて>>230 は話してないだろ? 何で勝手に自分の都合のいい解釈してんの? それに>>317 をみれば、それぞれのデータにIsRequiredプロパティがあるほうが わかりやすいだろ?
364 名前:デフォルトの名無しさん mailto:sage [2009/02/17(火) 20:32:26 ] >>359 A.IsLook( B ); でいーんじゃないかなぁ。もしくは A.IsLooking( B ); これで伝わると思うんだけど。。。
365 名前:デフォルトの名無しさん [2009/02/17(火) 20:44:00 ] >>362 業務ソフトは入力値のvalidationばかりだから それにリソースを取られないようにクラスライブラリ化するのは当たり前でしょ mailaddressの未入力を許可するみたいなのこそベタベタの汎用処理だと思うぞ
366 名前:デフォルトの名無しさん [2009/02/17(火) 21:02:15 ] ToN敗走
367 名前:デフォルトの名無しさん mailto:sage [2009/02/17(火) 21:10:43 ] >>363 んもー鳥頭さん? >それに>>317 をみれば、それぞれのデータにIsRequiredプロパティがあるほうが >わかりやすいだろ? まず最初に、そこは異論ないよ。 何度も言うように、意味論的にはオカシイんだけど。(正直これに違和感感じない人間にOOP論じる資格なし) ただ、何度も言うようにデータにIsRequiredがあるのは意味論的には間違ってるから、 (それは本来Customerクラスが知っているべきことだ)その当然の帰結として、IsRequiredを フールプルーフに出来なくなっちゃうよ、これって問題じゃないのかい、と言ってるの。 フールプルーフに出来なくなっちゃ、とは Customer.MailAddress1に触るコードを書くときは、MailAddress.IsRequiredの値を間違って 破壊しないようにCustomerクラスを使う人が注意を払わなきゃならんということ。 どっかのトンマがIsRequiredを間違って破壊しちゃう可能性が機構的に排除できないってこと。 >>365 自分で自分の足を(撃とうと思えば)撃てるのはかまわないが、 安全装置を(組み込もうと思っても)組み込めないようなライブラリなんかに価値はないよ。
368 名前:デフォルトの名無しさん mailto:sage [2009/02/17(火) 21:12:58 ] つーか、だからそもそもライブラリの話してないしさ。
369 名前:デフォルトの名無しさん mailto:sage [2009/02/17(火) 21:18:57 ] >>367 >何度も言うように、意味論的にはオカシイんだけど。 おかしくないよ。これをおかしいと思うひとにオブジェクト指向を語る資格なし。 >どっかのトンマがIsRequiredを間違って破壊しちゃう可能性が機構的に排除できないってこと。 だからフールプルーフについては既に記述してるじゃん。 お前は絶対に表示しなければ成り立たないGUI部品があったとして、 そのVisibleをfalseにできないようわざわざ設定しているのか? >安全装置を(組み込もうと思っても)組み込めないようなライブラリなんかに価値はないよ。 継承して隠蔽すればいいじゃん。 汎用的に使えないライブラリなんかに価値はないよ。
370 名前:デフォルトの名無しさん mailto:sage [2009/02/17(火) 21:23:10 ] はいはい、そうだねお前らが正しいよ お前ら釣られまくりでバカじゃねーの?wwwwww しねばいいよwwwwwwwwwwwwwwww
371 名前:デフォルトの名無しさん mailto:sage [2009/02/17(火) 21:25:56 ] >>370 ton氏ね
372 名前:デフォルトの名無しさん mailto:sage [2009/02/17(火) 21:40:06 ] 230は foreach(inputField in Fields){ if(inputField.IsRequired && inputField.IsMissin){ // なんかする。メッセージのappendとか。 } } ってことだろうとふつーに思った。ふつーに思った。(IsRequiredは冗長かもしらんが。) 238を読んで、あーこういう脳みそがななめってるうざいやつってうちの現場にもいるなーって オレも思ったし、お前も思っただろう。そいつは多分今も仕事中ww
373 名前:デフォルトの名無しさん mailto:sage [2009/02/17(火) 22:01:53 ] >>372 >>238 は bool tmpBool = false; tmpBool = MailAddressCheck(mailText); tmpBool = MailAddressCheck(mailText1); tmpBool = PostalCodeCheck(postalText); tmpBool = PostalCodeCheck(postalText1); tmpBool = TelCheck(telText); とか、オブジェクト指向がわからず、いちいち関数で処理しちゃう奴だろ? しかも、tmpBoolが最後のTelCheck()だけで決定されてしまってバグに気づかず大慌てするタイプ。 もっというと、tmpBoolとか死ねって感じのタイプ。
374 名前:デフォルトの名無しさん mailto:sage [2009/02/17(火) 22:04:43 ] いくらバカでもせいぜいflagとかにしちゃうぐらいだと思うがなぁ
375 名前:デフォルトの名無しさん mailto:sage [2009/02/17(火) 22:12:16 ] IsRequiredプロパティ設定可否だの、定数での設定だの、 方法論はいろいろあるけど、変更できる人には、変更できちゃうんだから、 定数値でも意味がないだろ。 変更したくなければプロパティを隠蔽すりゃいいんだから。
376 名前:デフォルトの名無しさん mailto:sage [2009/02/17(火) 22:14:58 ] なんかへそ茶だな。 2chで(馬鹿な)君に賛同してる奴なんて君と同じレベルの馬鹿なのに。 「オブジェクト指向が分からない」とは、>>230 のいうIsRequiredのような値は データの所有者に属する情報であってデータ自身に属する情報ではないことが 理解できない人間の事を言う。
377 名前:デフォルトの名無しさん mailto:sage [2009/02/17(火) 22:15:56 ] >>375 だから、どうやって?
378 名前:デフォルトの名無しさん mailto:sage [2009/02/17(火) 22:20:34 ] >>377 隠蔽する方法の言語仕様を知りたいの? private new string MethodName(); で隠蔽できるじゃん
379 名前:デフォルトの名無しさん mailto:sage [2009/02/17(火) 22:27:59 ] 言い争ってるやつらは経験不足なんじゃないかな。決め付け多いし。 いつの世も理想主義と現実主義の話は平行線。 極論ばかりだと現実社会では生きていけないように プログラマーとしても成長できませんよ。 ここから上から目線のやつが現れてもっと解説 ↓↓
380 名前:デフォルトの名無しさん mailto:sage [2009/02/17(火) 22:30:48 ] ___ /::::::::::::::::\ /:::::─三三─\ /:::::::::(○)三(○).\ /⌒)⌒)⌒.:::::::::: (__人__) :::::: \ /⌒)⌒)⌒) | / / /.. ` ⌒´ | (⌒)/ / / /,,-''ヽ、 | :::::::::::(⌒) / ゝ ::::::.,,-''" \ | ノ \ /_,-'" \ ヽ / ヽ /\ \ | | __ //\\ \ /|[]::::::|_ / \/\\ / ./| ̄ ̄ ̄ ̄ //\ \/ \ // ___ | |:::「「「「「「 / \/\ /\\ /:::/ ./| |__ _..| |:::LLLLL//\ \/ \/\\/::::::/ / | ロ .|lllllllllllll / llllll| |:::「「「「 / \/\ /\ .\/ ./::::::::/ / ./ .| |lllllllllllll __ llllll| |:::LLL.//\ \/ \/\ /::::::::/ | / .| ロ .|lllllllllllll | |:::「./ .\/\ /\ \/ /::::::::/⌒ヽ、| ||/ ..| | |:::l//\ \/ \/\_, -― 、 ''"⌒ヽ,_ (⌒ヽ、_,ノ⌒Y" Y .....⌒) (⌒ヽー゙ ....::( ..::....... .__人.....::::::::::::::::::::
381 名前:デフォルトの名無しさん mailto:sage [2009/02/17(火) 22:31:31 ] >>376 データ所有者が欲しいから、データそのものと、IsRequiredプロパティを同時に所有しているんだろ 「オブジェクト指向が分からない」とは、データが様様な属性を所有していることを理解できない人のことを言う。
382 名前:デフォルトの名無しさん [2009/02/17(火) 22:33:12 ] >>379 ToNさんお疲れ 決めつけじゃなくて言語仕様そのものの理解が間違ってるんですよ。 それを他人のせいにしたら、一生、オブジェクト指向が理解できないっすよ?
383 名前:デフォルトの名無しさん mailto:sage [2009/02/17(火) 22:37:12 ] この手の話は結局、どっちのオブジェクト指向論が正しいのかニュートン法で収束
384 名前:デフォルトの名無しさん mailto:sage [2009/02/17(火) 22:39:00 ] >>379 極論ばかりだと生きていけない=ToNみたいな存在も許容しろ 言い争ってる=喧嘩両成敗=ToNみたいな無理難題な喧嘩を売られても認めろ っていいたいのか? お前こそ人間として最低だろう
385 名前:デフォルトの名無しさん mailto:sage [2009/02/17(火) 22:39:29 ] C#って日本語のプロパティ名使えたのな。結構いいかもしれんわ。 大体「中途受任日」って英語でなんていうねん。
386 名前:デフォルトの名無しさん mailto:sage [2009/02/17(火) 22:41:29 ] >>383 いやオブジェクト指向論にすらなってない >>321 >例えば同じ型のデータが2つ以上必要で、それぞれ入力必須かどうかが >違ってたらどうするの? を読めばオブジェクト指向すら理解できていないことがわかる。
387 名前:デフォルトの名無しさん mailto:sage [2009/02/17(火) 22:48:33 ] >>386 あのさあw なんか本当に鳥頭の人がいるな。 どうして「同じ型のデータが2つ以上必要で、それぞれ入力必須かどうかが違ってたら」 問題かさっき説明したでしょ。 それは、IsRequiredをデータ自身に持たせて、かつフールプルーフに実装しようと思ったら クラスメンバの値を返すようにする必要があるから(すくなくともそれが一番簡単で 標準的なやり方だから)だよ。 こんな馬鹿にOOP云々言われたくないわまったく。
388 名前:デフォルトの名無しさん mailto:sage [2009/02/17(火) 22:54:00 ] >>387 >それは、IsRequiredをデータ自身に持たせて、かつフールプルーフに実装しようと思ったら >クラスメンバの値を返すようにする必要があるから 隠蔽できるから返されないって言ってるじゃん。
389 名前:デフォルトの名無しさん mailto:sage [2009/02/17(火) 22:56:09 ] メアド交換して当事者同士でやってくれよ。たまらん。
390 名前:デフォルトの名無しさん mailto:sage [2009/02/17(火) 22:56:31 ] >>388 ごめんどういう意味? 真面目にわかりません。 具体的なコードで説明してくれると助かるかも。
391 名前:デフォルトの名無しさん mailto:sage [2009/02/17(火) 22:58:41 ] >>390 >>378
392 名前:デフォルトの名無しさん mailto:sage [2009/02/17(火) 22:59:49 ] >>384 そんなんだからお前はいつも底辺で働いているんだろ まぁがんばれよ
393 名前:デフォルトの名無しさん mailto:sage [2009/02/17(火) 23:00:42 ] >>392 そんなんだからお前はいつも底辺で働いているんだろ まぁがんばれよ
394 名前:デフォルトの名無しさん mailto:sage [2009/02/17(火) 23:02:34 ] >>393 言うことなくなったか。責めてごめんな。 みんな怒ってるから空気読んで、もうやめとこうな?
395 名前:デフォルトの名無しさん mailto:sage [2009/02/17(火) 23:04:44 ] >>393 相手のレスが無くなるまでレスしたほうが勝ちですか?w
396 名前:デフォルトの名無しさん [2009/02/17(火) 23:05:45 ] そうとう口惜しかったんだろ許してやれよ
397 名前:デフォルトの名無しさん mailto:sage [2009/02/17(火) 23:10:24 ] >>395 勘弁してやれよ
398 名前:デフォルトの名無しさん mailto:sage [2009/02/17(火) 23:12:08 ] >>359 if (aHash.containsKey(aKey)) { ... } みたいな例が一杯あるし、 a.looksAt(b) みたく、三単現の動詞を使えばいいと思うよ。
399 名前:デフォルトの名無しさん mailto:sage [2009/02/18(水) 00:03:11 ] さっきから意味論意味論恥ずかしい奴が居るなw
400 名前:デフォルトの名無しさん mailto:sage [2009/02/18(水) 00:04:18 ] 意味論=自分が理解できる範囲の論
401 名前:デフォルトの名無しさん mailto:sage [2009/02/18(水) 00:07:35 ] 汎化とか、意味論とか言うところをみると、 情報処理関連の専門、短大、大学を出たが実際に設計をしたこともない池沼という感じだな
402 名前:デフォルトの名無しさん mailto:sage [2009/02/18(水) 00:17:05 ] >>364 あと A.Looks(B); もあり
403 名前:デフォルトの名無しさん mailto:sage [2009/02/18(水) 00:21:08 ] >>398 すまんこのレスで既出な上に、Atまできっちり付いてたアル
404 名前:デフォルトの名無しさん mailto:sage [2009/02/18(水) 00:28:58 ] オブジェクトが主語にならないときに、O.SIsCとするかO.IsSCとするか悩む。 例えば「Oの髪が金色か否か?」みたいな。 あー、もちろん「髪が金色」に相当する1単語の形容詞があるのは知ってるぜ。 ただ「そもそもOが主語にならないようなプロパティはおかしい」とか言ってしっちゃかめっちゃかにされるのを避けてみた。
405 名前:デフォルトの名無しさん mailto:sage [2009/02/18(水) 00:35:57 ] 「値」から「ユーザーの入力した値」が派生しているだけの話なのに、意味論的におかしいの?
406 名前:デフォルトの名無しさん mailto:sage [2009/02/18(水) 00:41:03 ] 値←ユーザの入力した値←ユーザの入力した文字列値←ユーザの入力した文字列であるメアドの値 というクラス階層が大真面目に書いてあったら 絶対笑うか泣く。
407 名前:デフォルトの名無しさん mailto:sage [2009/02/18(水) 00:48:02 ] >>340-341 吹いたwwww
408 名前:デフォルトの名無しさん mailto:sage [2009/02/18(水) 00:49:52 ] 局所的にバリデートの手間をすっ飛ばせればそれで良いリーマンと 意味論を重要視し、体系的に完璧でなければ許し難い無収入者の戦い
409 名前:デフォルトの名無しさん mailto:sage [2009/02/18(水) 01:13:38 ] >>405 まったくおかしくないよ ユーザが入力できる値は基本的に文字列だからな 基本的に文字列から派生することになる 直接に数値として得られるのは配列の要素だけ。
410 名前:デフォルトの名無しさん mailto:sage [2009/02/18(水) 01:31:54 ] >>367 包丁も車も完璧な安全装置を組み込めないから価値は無いよね。 マグカップでも人が死ぬ事もあるから使えないよね。 どこかのトンマがPC投げつけてきたら危ないからPCも捨てようね。
411 名前:デフォルトの名無しさん mailto:sage [2009/02/18(水) 01:38:13 ] TONの定義するTONMAが空想上の動物で無いとすると PI=3.14159って定数が勝手にPI=3に書き換えられてもおかしくないな さて、これをフールプルーフするには一体どうすれば良いのだろうか
412 名前:デフォルトの名無しさん mailto:sage [2009/02/18(水) 01:40:39 ] >>359 A is looking at B A.isLookingAt(B) this.AisLookingAtB() 好きにしろ。
413 名前:デフォルトの名無しさん mailto:sage [2009/02/18(水) 02:04:44 ] >>411 TONからPCを取り上げる