09/01/06 21:37:33
>>45
>手段に過ぎんものに固執して目的が遂行できないんじゃなんの意味があるんだよ。
ところが、まさにその「手段」に固執して
回答することこそがこのスレの用途。
納得がいかないからって、わざわざ主張
しに来るなよ。
ぐだぐだ言わずにどっかいけ。
なんなら新スレをたてたらいいよ。
51:デフォルトの名無しさん
09/01/06 22:47:21
何度も同じこと言わせるなよ。
>>50
>ところが、まさにその「手段」に固執して
>回答することこそがこのスレの用途。
それは「チミの勝手な解釈」、あるいは「チミの独りよがりな願望」に過ぎん。
もちろん、勝手で独りよがりであろうと君がこのスレの意義に関して
「どうあるべき」と考えるのも自由で、その信念に従って君が行動するのも自由だ。
(正直、俺的には「アンタ本物の馬鹿だね」としか思えんけれどもね)
だが、たかだか君の解釈だったり願望だったり過ぎないものを、居丈高に俺に
強制しないでくれる?
俺は俺であって君じゃないんだよわかる?
52:デフォルトの名無しさん
09/01/06 23:26:38
50の言うことも一理あるんじゃないかと思う人もいるかもしれんから、
愚かだと思うと書いた責任上一応理由つきで否定しとく。
問題設定が非現実的であっても意味をもつのは、
(1) それが何らかの能力向上のための
(2) 演習問題になるとき
だろう。
さて、命名以前の問題があるために命名が困難になってる「お題」(例えば>>14)は
この要件を満たすだろうか?
俺の考えでは答えはNo。
なぜなら、現実のプログラミングではそんな無理くり名前をつけるような「法外な」
命名能力なんて必要とされないからだ。
まともなプログラマなら横車を押して命名するよりも、名前が付けやすいような
別の視点を採用するなり(>>14なら、データのもつ意味から名前を付ければわかりやすい)、
設計を変更するなりすることを選択するからね。
53:デフォルトの名無しさん
09/01/06 23:31:16
ゲームで遊んだりクイズを解くのに「意味」なんかいらんと思うが
54:デフォルトの名無しさん
09/01/06 23:33:02
いっそ>>16前半をテンプレに書いておいて、
言及がなければ、例えば>>19の回答がほしいことにすればいいだろう。
いい加減不毛だからやめてよ。
55:デフォルトの名無しさん
09/01/06 23:37:50
>>53
もちろん、それはそう。
俺はそういう人がいてもいいと思うし、そういう回答をする人に
自分からケチつけたり突っかかったことは一度もない。
俺は自分と違う考えの人を一概に否定したりしないし、少なくとも消極的容認だよ。
「彼」は違うようだがね。
56:デフォルトの名無しさん
09/01/06 23:45:44
みんな真面目すぎる。
Q)この名前何がいい~? ホニョニョ~ン
A)こんな感じで良いんじゃね~ ハニャニャ~ン
という緩いスレじゃないのか。
57:デフォルトの名無しさん
09/01/07 02:18:11
無理くりw
道民かよ
通りで日本語が通じないわけだ
一部道民は本当に酷い思考回路を持ってるからな
58:デフォルトの名無しさん
09/01/07 02:56:16
>>52
> 俺の考えでは答えはNo。
そう思ったら、はじめからレスしないか、意図を聞くなどしながら
「設計見直したほうが良いんじゃないの?スレ違いになるから他所でやってもらうけど」
あたりで済ませておくのがこのスレの趣旨から考えて望ましいと思います。
59:デフォルトの名無しさん
09/01/07 03:11:53
Part12での出来事
585 名前:デフォルトの名無しさん[sage] 投稿日:2008/08/30(土) 01:13:15
>>572
そもそも弾の初期位置も初速度も各「砲台」が個別に知っていれば済むはずの情報で、
そんな情報を配列にまとめることが設計として間違ってる気がするんだが。
586 名前:デフォルトの名無しさん[sage] 投稿日:2008/08/30(土) 01:27:39
>>585
>>1
587 名前:585じゃないけど[sage] 投稿日:2008/08/30(土) 01:43:57
>>586
このスレのあり方を否定するようで悪いが、
「これ英語だとなんて言うの?」っていうレベルじゃなくて
「一体どんな名前を付けるのやら」なんてレベルで迷ってしまうのは、
ドメイン分析に失敗しているからだと思うんだよね。
ちゃんとした設計なら悩まずに命名できる。
ダメな命名になるのは設計からしてダメなんだよ。
名前を付けられないと思ったら設計から見直したほうがいい。
588 名前:デフォルトの名無しさん[sage] 投稿日:2008/08/30(土) 01:44:44
>>587
>>1
589 名前:デフォルトの名無しさん[sage] 投稿日:2008/08/30(土) 01:45:43
>>587
お前みたいなこと言い出す奴が過去に何人もいて、
その都度スレが荒れたから>>1に注意書きしてあるの。おk?
590 名前:デフォルトの名無しさん[sage] 投稿日:2008/08/30(土) 02:09:25
おk。すまない。
ただ俺なら、名前で悩むなら違う事で悩みたいな、って思っただけだ。
60:デフォルトの名無しさん
09/01/07 03:14:17
591 名前:デフォルトの名無しさん[sage] 投稿日:2008/08/30(土) 02:14:16
>>590
なんで名前で迷ったら書き込むスレに迷い込んでるのかが分からない
592 名前:デフォルトの名無しさん[sage] 投稿日:2008/08/30(土) 02:33:25
>>591
名前が無意味なものだとは考えてないからだよ。
デザパタなんかは「何かに名前をつけること」に意味を見いだしている例だよね。
このスレで言えば、>>496-498みたいに、
機能にぴたっと当てはまる名前が提示されることで、
496自身が「自分が何をしようとしていたか」が定まったと思うし、
さらに勉強してみようという前向きな気もちにもなっている。
名前を考える事は、考え方をみつめ直すことで、
良い方向に成長する入口になっていると思う。
名前に悩んで設計に悩まないのはもったいない。
余計なおせっかいかもしれないが。
61:デフォルトの名無しさん
09/01/07 03:14:44
593 名前:デフォルトの名無しさん[sage] 投稿日:2008/08/30(土) 04:34:27
言いたい事は分かるんだけど、その言い方は無いよ
このスレで泥臭いながらも行われてる事を、臭い物に蓋をして理想型で語ってるだけじゃん
設計の仕方までは口を出さずに、ただ名前を付けていけばそれがベターなの
594 名前:デフォルトの名無しさん[sage] 投稿日:2008/08/30(土) 07:06:39
>>592
> 名前に悩んで設計に悩まないのはもったいない。
>> そ の 都 度 ス レ が 荒 れ た か ら
そう言う議論がしたいなら、別にスレ立ててくれ。
多分収拾つかなくなると思うが。
597 名前:デフォルトの名無しさん[sage] 投稿日:2008/08/30(土) 14:58:18
>>593-594
俺的にはこういう連中こそ本末転倒の馬鹿に見えるよ。
たぶん物事ゼロベースで考える頭のない奴なんだろうな。
まあこんな馬鹿な連中が何いっても今後も設計に首を突っ込む姿勢は止めないけどねw
598 名前:デフォルトの名無しさん[sage] 投稿日:2008/08/30(土) 15:06:17
君が時と場合をわきまえてないだけ。
599 名前:デフォルトの名無しさん[sage] 投稿日:2008/08/30(土) 15:34:30
命名の前提となるもの(例えば設計)を語らないと根本的な解決にならない場合であっても
あえて盲目的に命名限定の議論をしろ、などという物言いこそ「時と場所をわきまえない」
愚かなものだと思うが。
一般にはそういうのは「フェティシズム」と言うんだよ。
62:デフォルトの名無しさん
09/01/07 03:18:43
たまに方言で道民と認定してる人いるけど、今回の「無理くり」というのは別に北海道に限った言葉じゃないと思うんだけどなぁ。
なまら辺りでなら道民と決めていいと思うけどさ
63:デフォルトの名無しさん
09/01/07 03:21:11
615 名前:デフォルトの名無しさん[sage] 投稿日:2008/08/31(日) 14:37:54
>>610
なんか命名以前にただ単にObserverパターンをちゃんと理解してないだけの気がする。
Observerパターンっていうのは、(当たり前だけど)通知者側が観測者の
特定のメソッドを(インターフェイスを介して)呼び出すパターンのはずだよね?
あなたの例で言えば、aはbでイベントがあったときにbから呼ばれるメソッド
b_ValueChanged()と、a自身のイベントを他に通知するOnValueChanged()を持ってるはずで、
だとすればb_ValueChanged()の中からOnValueChanged()を呼び出せば済むはずの
問題だと思うんだけど。
616 名前:デフォルトの名無しさん[sage] 投稿日:2008/08/31(日) 14:57:16
> 命名規則や設計の善し悪しについて議論するのは基本的に禁止。
617 名前:デフォルトの名無しさん[sage] 投稿日:2008/08/31(日) 15:01:11
悪いけど俺はそんなものに同意した覚えはないんでね。
この後突然独り言のようにセカイ系について講釈が始まってるけど、もういいや
64:デフォルトの名無しさん
09/01/07 08:59:21
かといって、質問の行間を読むのを競い合うクイズスレってのもノイズ多すぎてやだな
65:デフォルトの名無しさん
09/01/07 10:11:40
別に足りない情報を聞くってのは一切制限されて無いし、そもそも誰も咎めてなくね?
設計にまで口出しする事がスレ違いって言われてるだけで
66:50
09/01/07 13:22:56
「彼」とかまるで特定一名のように言われても困る。
オレはその「彼」じゃないんで、そう思ってるのは
少なくとも2人いるってこと。たぶんもっといる。
まあ、もういいや。
TimeOfNow氏は酷く個性的な考えの持ち主だと
認識することにした。
死ねばいいのに。
67:デフォルトの名無しさん
09/01/07 17:03:33
class Buyer {
void Sell();
};
class Seller {
void Buy();
};
名前にBuyと付くクラスのメソッドがSellで、名前にSellと付くクラスのメソッドがBuy。
一瞬違和感を感じたんですが、これで合ってますよね?
68:デフォルトの名無しさん
09/01/07 17:31:37
ドラマーがギターを弾いてもいいし
ギタリストがトライアングル叩いてもいいと思うよ
69:デフォルトの名無しさん
09/01/07 17:56:53
>>68
このスレ的に言えば「ギターを弾くものにドラマーと命名するべきではない」ということになりませんか?
私が訊きたかったのは、買い手に対して物を売るメソッドの名前は、
「買い手が買う」という意味ではなく、「買い手に対して売る」という意味の命名で合っているか、ということです。
70:デフォルトの名無しさん
09/01/07 19:05:03
少なくとも俺は買い手が、買うで命名するけどな
71:デフォルトの名無しさん
09/01/07 19:15:13
「Buyerのメソッド」だからねぇ。
買い手の行動は「買う」ことだろう。
「買い手に対して物を売る」ということなら、
「売り手の売るメソッドの引数に買い手インスタンスを指定」って感じがするが。
72:デフォルトの名無しさん
09/01/07 19:42:27
>>67
BuyerとかSeller とかいうクラスはあくまでただの例えで言ってるのなら
>>70-71の言うとおりだと思う。
ただの例えじゃなくて実用にするものなら、BuyerとかSellerにメソッドをもたせるより
製品クラス(ProductとかGoodsとか?)にTrade()とかSell()を持たせた方が賢い気がする。
73:デフォルトの名無しさん
09/01/07 19:49:55
>>72
>>1
74:デフォルトの名無しさん
09/01/07 20:00:28
>>70-72
レスありがとうございます。
ちょっと意外に感じました。
A.GetB()が「AがBを取得する」ではなく、「AからBを取得する」という意味なので、BuyerにSell、SellerからBuyと考えていました。
質問とは違うので答えも違うのかもしれませんが、1つのクラスがBuy/Sellを持っている場合にも同じ方法で命名すると、
shop.Sell(item, money);// 店に対してアイテムを売っているように見える?
shop.Buy(item, money);// 店からアイテムを買っているように見える?
この感覚は私だけなんでしょうか?
> 製品クラス(ProductとかGoodsとか?)にTrade()とかSell()を持たせた方が賢い気がする。
これはTradeの引数に買い手と売り手を渡すということになりますか?
商品は所有者が扱うものと思っていたので、こちらも意外に感じました。
75:デフォルトの名無しさん
09/01/07 20:13:54
>>74
「売られた」時に、製品が必ずその所有者への参照を内部に持つようにすれば、
Trade()の引数は買い手と売価だけでよくなるんじゃない?
76:デフォルトの名無しさん
09/01/07 20:27:52
>>74
A.GetB()は「Aが(自分の持つ)Bを取得する」って意味だ
AはBを取り出してくるが、その後どうされるかまでは知ったこっちゃ無い
77:デフォルトの名無しさん
09/01/07 20:48:04
>>75
なるほど。
>>76
そういう意味だったんですか。
今まで勘違いしていました。
78:デフォルトの名無しさん
09/01/07 21:04:10
>>74
ふつうは、主語.述語(目的語)とするものだと思う。
とくに、述語が他動詞の場合には。
下駄雪駄がそうじゃないというのは、今指摘されて
初めて感じた。w
たしかにそうかもしれないけど、むしろこっちが
パターンとしてはレアなのでは。
79:デフォルトの名無しさん
09/01/08 00:03:38
>>74
「AからBを取得する」は主体(主語)が抜けてね?
主体がメソッドのレシーヴァになるはずだよね。
主体がオブジェクト化されてないから混乱してるんじゃない?
80:デフォルトの名無しさん
09/01/08 12:11:45
>>78
たしかにgetter/setter以外は主語.述語で自然に読めるものばかりでした。
>>79
x = a.GetX();
xが主体ということですか?
ちなみにこういうケースではどちらの命名が自然に見えます?
item = shop.Buy(itemID, money); // アイテムの種類を示すIDと代金を渡しアイテムを得る
item = shop.Sell(itemID, money); // アイテムの種類を示すIDと代金を渡しアイテムを得る
81:デフォルトの名無しさん
09/01/08 12:19:53
>>80
どちらも虫唾が走るほど気持ち悪い
指摘するとなると完全に命名の範疇外の話になるんで、どっかOOP初心者スレにでも行って下さい
82:デフォルトの名無しさん
09/01/08 13:42:00
>>81
>>80のメソッドにBuy/Sellを名付ける事自体が間違ってましたか。
どうもでした。
83:デフォルトの名無しさん
09/01/08 17:51:05
>>80
そういう系にしたいならこんなのは?
player.buy(shop,item,price)
オレ的にはかなり自然。
84:デフォルトの名無しさん
09/01/08 18:08:39
>>83
なるほど、参考にします。
85:デフォルトの名無しさん
09/01/08 18:10:01
(new Transaction(buyer, seller, item)).commit()
86:デフォルトの名無しさん
09/01/08 19:19:11
>>80 真ん中
aだろ。
aが自分のXを取得する。
それをプログラマがxに渡してるだけ。
87:デフォルトの名無しさん
09/01/09 00:22:41
>>85
トランザクション処理というぴったりのものがあったんですね。
>>86
なるほど。
88:デフォルトの名無しさん
09/01/09 01:09:34
>>80
私の経験では
クラス名.メソッド名 で自然な英語になるようにメソッド名をつける場合もあるし、
クラス名を意識せず、メソッド名単独で意味を主張するようにメソッド名をつける場合もある。
両方あります。
例えば頻繁に使われる get なんかでも
shop.getItem
は意味の取りようによっては、
・店が得るのだから、アイテム引数をともなって、店にアイテムを設定する(メンバー変数に登録、setterのような意味)
・店のアイテムを得る。(メンバー変数をを得る、普通のgetterの意味)
などのように、2通りの解釈ができないこともない。
どのようにメソッド名をつけるかはコーダーのセンスよると思います。
したがって、自然に読めるのが一番ですが、限界があるのでどうしようもないというわけです。
一人で開発するときは、統一さえしておけばそんなに大きな問題ではありません。
しかしチームで開発するときは、
「これこれの動詞はbuyで統一しよう、getはこういう意味にしよう」
等のように、コーディング規約が必要になるでしょう。
89:デフォルトの名無しさん
09/01/09 01:19:43
なんか生活に物足りなさがあると思ったら、このスレが次スレになってて
お気に漏れしてたのか
90:68
09/01/09 02:22:29
今頃出てきてあれだが、アクセサについて。
あるオブジェクトに対してset/get指示をだすが、オブジェクトからみれば自身のメンバに対して
やはり同じようにset/getを行うので、逆になっているわけではないよ。
>>83
オレ的にもそんな感じ。
一点、priceが商品の値段を意図しているのであれば、buyメソッド内でshopに問い合わせを行うようにする。
今回の焦点ではないけどね。
91:83
09/01/09 09:11:24
>>90
質問者が引数にmoneyって書いてたからな。
そこは値段だろうと思ってpriceにした。
個人的にも、priceは明示的なほうがいいと思う。
shop.getPrice(item)とか。
>>85
いわゆるトランザクションには、プログラム的に
ちょっと特定的な意味がありがちなので、念のため。
プログラマにそう言ったら混乱することもありそう。
92:デフォルトの名無しさん
09/01/09 15:41:04
>>91
>>80のmoneyは商品の価格ではなく、購入者が提出するお金だと思う。
なので何らかの手段でおつり、不足エラーなどを通知する必要が出てくるものだろうと思った。
一方、buyer.buy(shop, item)とすれば、関数内で
if (所持金<shop.getPrice(item)) エラーリターン
this.money -= shop.getPrice(item)
のようにできる。
基本的に店って主体になりにくいよね。ザ・コンビニみたいなゲームなら別だろうけど。
93:質問者
09/01/09 18:39:39
>>88
GetItem→BuyItemと置き換えると、
・店が(引数に指定された)アイテムを得る→店が(引数に指定された)アイテムを買う
・店が(保持している)アイテムを得る→店が(保持している)アイテムを買う
まさにここですね。
getterは後者の意味、Buyに関しては前者の意味が一般的というところに混乱しました。
>>90-92
moneyに関しては購入者が提出するお金のつもりで書きました。
トランザクション処理を勉強して>>83か>>85にしようと思います。
ありがとうございました。
94:95
09/01/09 18:44:09
> 店が(保持している)アイテムを買う
書いてから気が付いたんですが、自分が保持してる物を買う?というのは変ですね。
ということは自然と前者になるということでしょうか。
95:デフォルトの名無しさん
09/01/09 18:44:54
↑95じゃなくて93でした。
96:デフォルトの名無しさん
09/01/09 21:45:10
>>94
あんまりヘンに考え込まないことを勧める。
命名は慣習的なところも多いので、だいたい
納得できたら、自分ルールにしてパクッと
飲み込め。
完全な名前を定義することが目的じゃないだろ?
97:デフォルトの名無しさん
09/01/13 22:49:43
>>94
あんたの目的は、命名法を究めることじゃないはずだ。
妥協も大切だ。
98:デフォルトの名無しさん
09/01/14 02:15:34
命名以前に、95は思考が絶望的にオブジェクト指向じゃないだけ
ほんと、絶望的
99:デフォルトの名無しさん
09/01/14 23:56:01
URLリンク(google-styleguide.googlecode.com)
Google?
100:デフォルトの名無しさん
09/01/15 13:10:27
100
101:デフォルトの名無しさん
09/01/15 13:11:00
101
102:デフォルトの名無しさん
09/01/20 01:45:08
sampleとexampleの違いって何ですか?
103:デフォルトの名無しさん
09/01/20 01:46:44
板違い
104:デフォルトの名無しさん
09/01/20 21:37:36
example は例として一般的な語。
sample は実例というか、ちゃんと動くようなもの。
境目は適当。
105:デフォルトの名無しさん
09/01/21 16:16:44
>>104
なるほどー。ありがとうございます~
106:デフォルトの名無しさん
09/01/21 16:17:27
失せろボケ
107:デフォルトの名無しさん
09/01/21 16:25:58
TimeOfNowの人はまた逃げたのか
>>44で偉そうにログ出せといってログ張られて逃げ出すとか
まね出来ない
108:デフォルトの名無しさん
09/01/21 19:49:08
>>107
本格的にアタマおかしいだろw
いや逃げてないし、君が望むなら君のような馬鹿は徹底的に叩き潰して差し上げるけど?
で、どこで>>40のようなことをこの俺が言ったと言うんだ、ん?
109:デフォルトの名無しさん
09/01/21 19:52:31
っていうかこの馬鹿、"time of now"っていう言い回しが英語として
成立してないと思ってるから、嘲笑のつもりで「TimeOfNowの人」とか言ってるんだろうが、
それが自分自身の馬鹿を曝け出しているに過ぎんことにすら気づかないんだから
おめでたいとしか言いようがねえなw
110:デフォルトの名無しさん
09/01/21 20:02:58
>>107
スレが静かになったからって、
わざわざ悪魔召還すんな!
111:デフォルトの名無しさん
09/01/21 20:19:40
>>109
検索して引っ掛かるけど特殊な言い回しだよ。そこは蒸し返すなよ
112:デフォルトの名無しさん
09/01/21 20:21:47
Jetztzeit
113:デフォルトの名無しさん
09/01/21 21:01:53
>>111
別に「蒸し返す」つもりもないけど、別に特殊でもなんでもないよ。
前スレでそういうことを主張している人間がいたのは記憶しているが、
その人が何もわかってないだけだな。
前にも名詞的に使われてるnowを「倒置構文だ」とトンチンカンなことを
言ってる人がいたけど、このスレはそういうのが多い。
114:デフォルトの名無しさん
09/01/21 21:08:55
Now is the time.
が特殊な使い方といっていた人を指してトンチンカンと?
115:デフォルトの名無しさん
09/01/21 21:31:29
>>114
相手が言ったことに反論する能力を身につけようよ。
俺は言った。
名詞的用法をさして「倒置構文だ」とトンチンカンなことを言っている人がいた、と。
君に問うが、>>114のそれは倒置構文ですか?
116:デフォルトの名無しさん
09/01/21 21:34:01
ああごめん、>>114のそれは確かに倒置構文ととることもできる、
というかそういう解釈の方が一般的かも知れんね。
でも俺の言っているのはそれじゃない。
117:デフォルトの名無しさん
09/01/21 21:40:09
俺がトンチンカンと言うのは、
"Now is the time to ~."
これを倒置構文と言った人がいたんだな。
これは倒置構文じゃないよ。ただnowを名詞的に使ってるだけ。
118:デフォルトの名無しさん
09/01/22 00:47:47
英語どうこうじゃなく、センスを笑われてる事にそろそろ気付いたら?
119:デフォルトの名無しさん
09/01/22 01:05:26
そういう物言いが「セカイ系」のそれだと言ってるんだけどね。
まあ頭悪いから言ってる意味が理解できないのだろうけど。
そのセンスっていってる奴の答えが「コインいっこ入れる」式のぎこちない命名だから
なお笑わせてくれるんだがw
120:デフォルトの名無しさん
09/01/22 01:21:45
コインいっこ入れる
121:デフォルトの名無しさん
09/01/22 01:36:58
>>119
本格的にアタマおかしいだろw
いや言ってないし、君が望むなら君のような馬鹿は徹底的に叩き潰して差し上げるけど?
で、どこで>>119のようなことをこの俺が言ったと言うんだ、ん?
122:デフォルトの名無しさん
09/01/22 01:37:48
改変してて吐き気がしたわ
自分からやっといてなんだけどなw
123:デフォルトの名無しさん
09/01/22 09:13:21
名前が英語の文としてどれだけ自然かよりも、
同じプログラム内で一貫した名前の付け方をする事の方が重要だと思う。
接頭辞+名前みたいなのは自然な英語にはならないだろうし、
一貫して使うなら略記的な名前でもぜんぜん問題ない。
(母音を省略して書くとか普通にするし)
コインに関するモジュールを書いていたら、
・コイン_いっこ入れる
・コイン_いっこ取り出す
とかもありそう。
124:デフォルトの名無しさん
09/01/22 10:27:10
>>109
「TimeOfNowの人」って呼ばれるのが嫌なのか?
そう呼ばれるとお前さんは嘲笑されてると感じるのか?なぜ?
まぁその点はどうでもいいけど
嫌なら自分でコテハン付けてくれよ
いい加減お前さんには固有名詞が必要なんだよ
125:デフォルトの名無しさん
09/01/23 02:34:34
TimeOfNowはなんか笑いがこみ上げて来るんだよな…。
126:デフォルトの名無しさん
09/01/23 04:25:47
lヽ ノ l l l l ヽ ヽ
)'ーーノ( | | | 、 / l| l ハヽ |ー‐''"l
/ T | | |/| ハ / / ,/ /|ノ /l / l l l| l T ヽ
l ・ i´ | ヽ、| |r|| | //--‐'" `'メ、_lノ| / ・ /
| o l トー-トヽ| |ノ ''"´` rー-/// | o |
| ・ |/ | l ||、 ''""" j ""''/ | |ヽl ・ |
| N | | l | ヽ, ― / | | l N |
| !! | / | | | ` ー-‐ ' ´|| ,ノ| | | !! |
ノー‐---、,| / │l、l |レ' ,ノノ ノハ、_ノヽ
/ / ノ⌒ヾ、 ヽ ノハ, |
,/ ,イーf'´ /´ \ | ,/´ |ヽl |
/-ト、| ┼―- 、_ヽメr' , -=l''"ハ | l
,/ | ヽ \ _,ノーf' ´ ノノ ヽ | |
、_ _ ‐''l `ー‐―''" ⌒'ー--‐'´`ヽ、_ _,ノ ノ
127:デフォルトの名無しさん
09/01/25 00:04:20
また逃げてるw
これはもう芸の領域だなw
128:デフォルトの名無しさん
09/01/25 01:24:31
荒らすなヴォケ
129:デフォルトの名無しさん
09/01/26 16:08:05
よろしく
以下、それぞれを文字列として格納する変数なんだけど、
半角文字全部→string
半角英字→alphabet
半角数字→num
半角記号→character
半角英数→symbol
string とcharacterとsymbolがごっちゃになってわかりにくそうなんだけど、
他にいいアイデアがあるかな?
130:デフォルトの名無しさん
09/01/26 16:08:59
ごめんまちごうた
半角文字全部→string
半角英字→alphabet
半角数字→num
半角記号→symbol
半角英数→character
だったorz
131:デフォルトの名無しさん
09/01/26 16:37:16
is系の関数に従ってみればどうだろう。
半角英数はalnum
半角文字全部はascii
など。
132:デフォルトの名無しさん
09/01/26 16:57:59
なるほど、サンクス
半角文字全部→ascii
半角英字→alpha
半角英字大文字→upper
半角英字小文字→lower
半角数字→num
半角記号→symbol
半角英数→alNum
記号がなかったのでSymbolを流用して、全角の場合は修飾詞でWideをつければよさそうだ。
これでいってみるぜ
133:デフォルトの名無しさん
09/01/26 21:40:59
ctypeだとispunct(punctuation)ってのはあるね。
記号という意味じゃなく区切り記号という意味になってしまうが。
ASCIIの範囲では、印字可能な文字のうち、スペースと英数「以外」
134:デフォルトの名無しさん
09/01/27 15:41:57
>>133
区切り記号とは違うと思うのでsymbolにしてみた
半角全部-半角英字-半角数字-半角スペースというイメージなので。
んだが、半角文字全部asciiで、全角文字全部のとき
修飾詞つけてwideAsciiってなんか変な感じw
文字全部→ascii wideAscii
英字→alpha wideAlpha
英字大文字→upper wideUpper
英字小文字→lower wideLower
数字→num wideNum
記号→symbol wideSymbol
英数→alNum wideAlNum
カナ→katakana wideKatakana
ひらがな→none wideHiragana
漢字→none wideKanji
半角のほうに修飾詞singleをつけて、文字全部をsingle(半角全部)とwide(全角全部)にしようかしら。
つか、こんなの自分が理解してればどうだっていいよな・・・
privateなメンバだし・・
135:デフォルトの名無しさん
09/01/27 16:53:48
singleはない
136:デフォルトの名無しさん
09/01/27 17:10:34
ispunctの説明を見てくれば良かったのに。
半角英数、半角スペース以外の表示可能な文字なんだけどな
137:デフォルトの名無しさん
09/01/27 22:04:31
>>134
1バイト文字以外も考慮するのなら、
UNICODEの文字カテゴリの名前を参考に
したら?
多すぎてイヤになるかもしれんが。w
138:デフォルトの名無しさん
09/02/02 19:22:44
お題が来ないな・・・
139:デフォルトの名無しさん
09/02/02 21:38:20
じゃあTimeOfNowの話でもしようぜ
140:デフォルトの名無しさん
09/02/02 21:45:54
アメリカ旅行で時間聞きたいときは
Excuse me, do you have the time?
っていえばいいんよね
141:デフォルトの名無しさん
09/02/02 21:48:04
掘った芋いじくんな と聞いたけど……
142:デフォルトの名無しさん
09/02/02 22:53:52
掘った芋いじんな だよ
143:デフォルトの名無しさん
09/02/02 22:59:23
サンクス!
144:デフォルトの名無しさん
09/02/02 23:03:26
アメリカ人でも見ず知らず相手なら婉曲に>>140使うよ
145:デフォルトの名無しさん
09/02/02 23:05:54
変なジョークで返されるかもしれないけどね
146:デフォルトの名無しさん
09/02/02 23:21:33
Excuse me, do you have the time of now?
147:デフォルトの名無しさん
09/02/02 23:25:05
─┬─ ・. . _ γ⌒ヽ ./ |\ | .
│ | レγヽ /_) .| | ┼ | \ | /⌒ヽ| /
│ | | | |. ヽ_ .ヽ___ノ. │ | \| ヽ__ノ.|/|/.
/\___/ヽ
(.`ヽ(`> 、 /'''''' ''''''::::::\
`'<`ゝr'フ\ + |(●), 、(●)、.:| +
⊂コ二Lフ^´ ノ, /⌒) | ,,,ノ(、_, )ヽ、,, .::::|
⊂l二L7_ / -ゝ-')´ + | `-=ニ=- ' .:::::::| +
\_ 、__,.イ\ + \ `ニニ´ .:::/ +
(T__ノ Tヽ , -r'⌒! ̄ `":::7ヽ.`- 、 ./|
ヽ¬. / ノ`ー-、ヘ<ー1´| ヽ | :::::::::::::ト、 \ ( ./ヽ
\l__,./ i l.ヽ! | .| ::::::::::::::l ヽ `7ー.、‐'´ |\-、
148:デフォルトの名無しさん
09/02/02 23:28:37
はいはいわろすわろす
149:デフォルトの名無しさん
09/02/03 00:01:42
ちょっといいですか?だと思っていたが、時間を聞くための婉曲表現でもあったのは知らなかった。
150:デフォルトの名無しさん
09/02/03 00:03:25
と思って調べたらちょっといいですかはtheがいらないみたいだっていうかそれだけの違いで!
メリケンこええ。
151:デフォルトの名無しさん
09/02/03 00:18:12
もう死ぬ
もう死ね
とか、日本も外人にとっては怖そうだぞ
152:デフォルトの名無しさん
09/02/03 01:40:09
TimePartOfNowならすんなり受け入れられるんだがな
それ以前に定数に対してNow,Today,TimeOfNowと付けるんだから半端ないわ
153:デフォルトの名無しさん
09/02/03 02:15:30
だんだん慣れてきた
154:デフォルトの名無しさん
09/02/03 20:15:30
>>152
今頃になってネチネチいうって難儀な性格だねホント。
正直精神分析の対象に思える。
しかも言うことが素っ頓狂だし。
まず結論から言うとTimePartOfNowとTimeOfNowは同じ'Now'を使ってもそれの
意味しているものが違うだけで、どちらもお題の答えとして正しい。
君のいうTimePartOfNowの'Now'はNowという名前のデータ構造が存在していることを
前提とした命名だろ。
俺の言ったTimeOfNowの'Now'は文字通りのNowだから。
普通の英会話で"date of today"とは言っても"date part of today"なんて言ったら意味不明だろ。
それから、定数(というかマクロで定義された即値)を大文字をアンダースコアで区切りで
表現するのってC/C++の慣習だろ。
他の言語じゃあまりやらないよ。(そもそもマクロで即値定義なんて原始的なことやってるの
C/C++とアセンブラぐらいしかないし。)
つーか基本的に意味ない習慣だからCでも自分だけで完結するコードなら俺は従わない。
155:デフォルトの名無しさん
09/02/03 20:17:56
>>154
今頃になってネチネ(ry
156:デフォルトの名無しさん
09/02/03 20:21:54
最後に肝心なことを言い忘れたが、キャメルかパスカルかアンダーバー区切りか、
なんて命名の本質と何も関係ねえだろw
なんていうか、語るに落ちてるんだよな。
「命名以外の話題は禁止」と執拗にイチャモンをつける一方で、
同じ口で平気で命名の本質と何も関係ないことに固執する、この一貫性のなさ。
一貫してるのは、要するに「執拗に他人にケチをつけている」という一点においてのみ。
157:デフォルトの名無しさん
09/02/03 22:05:14
>>154
なにを言っているのだお前は。1行目からおかしいだろ
158:デフォルトの名無しさん
09/02/03 22:25:35
>>154
びっくりした。
本当に、びっくりした。
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
335:デフォルトの名無しさん
09/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:デフォルトの名無しさん
09/02/17 03:49:58
>>335
IsCheck==IsValidate
俺ならIsValidプロパティかValidateメソッドで実装するな
337:デフォルトの名無しさん
09/02/17 06:16:46
TONさん議論の入り口にも立ててなくてワロス
ワザとやってるんだろうか
338:デフォルトの名無しさん
09/02/17 06:23:06
IsValidate はまず品詞がおかしい
339:デフォルトの名無しさん
09/02/17 09:43:08
IsCheked
IsValid
340:デフォルトの名無しさん
09/02/17 09:58:20
論旨に影響しない瑣末な違いだ
341:デフォルトの名無しさん
09/02/17 10:11:52
このスレにとっての本題だがな
342:デフォルトの名無しさん
09/02/17 10:17:46
いつの間にか設計の話するスレになってたんだな
343:デフォルトの名無しさん
09/02/17 10:21:41
設計の話と言うか
おぶじぇくとしこういちねんせいのToNに虚しさを感じながらも無駄な説明を繰り返すスレ
344:デフォルトの名無しさん
09/02/17 10:29:51
トンはもう秋田
345:デフォルトの名無しさん
09/02/17 17:28:10
さぁTONさんタイムがやってまいりますた!!
346:デフォルトの名無しさん
09/02/17 19:33:32
>>327
さすがに頭おかしくないか?
>>317とかそれのどこが「自動」なんだ。
>>264で指摘しているように、ただ判定処理が書かれるコードの場所が変わってるだけだろ。
>>328,>>332>>335
君ら(複数人だよね?)それ本気で書いてるのか?
こんなこと一々説明しなくても当然分かるだろうと思って書かなかったが、
IsRequiredはゲッタのみかつ定数を返すようにしないとマズいだろう。
IsRequiredをインスタンスメンバとして実装しちまったら
外からMailAddressをセットできなくなるだろ。
言ってる意味分かる?
なんていうか、まともなコード書いたことない奴が本読んだだけで
物を言ってるのがバレバレだなw
347:デフォルトの名無しさん
09/02/17 19:44:20
>>346
>>>264で指摘しているように、ただ判定処理が書かれるコードの場所が変わってるだけだろ。
それがobject指向の目的だよ。
データと判定処理をクラスが持っていたら、クラスの所有するデータが増えるたびに、
そのデータの判定処理をするプログラムを書かなければいけないよ。
データそのものが判定処理を持っていれば、データを持つ所有クラスは何も改変せず、
自動的に処理されるよ。
>IsRequiredはゲッタのみかつ定数を返すようにしないとマズいだろう。
別にまずくないよ。設定するのが嫌だったら、初期値でfalseにしといて使いまわせばいいだけだよ。
>IsRequiredをインスタンスメンバとして実装しちまったら
>外からMailAddressをセットできなくなるだろ。
MilAddressは、IsRequiredを所有するクラスなんだから、セットも糞もないよ。
何が困るのか実際のコードで示してくれよ。
348:デフォルトの名無しさん
09/02/17 19:54:53
>>347
ではCustomer.MailAddress1のIsRequiredはtrueであって欲しいとして、
Customerの外のクラスから
MailAddress ma = new MailAddress();
ma.IsRequired = true;
Customer.MailAddress = ma;
とかされた場合、どうするの?
349:デフォルトの名無しさん
09/02/17 19:55:40
ごめん
ma.IsRequired = false;
に訂正
350:デフォルトの名無しさん
09/02/17 19:57:14
っていうか、ここまで言ってまだ分からんかなあ。。
351:デフォルトの名無しさん
09/02/17 20:01:53
横に長いコード書くなよ。うちの専ブラの使い方で見づらい
352:デフォルトの名無しさん
09/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:デフォルトの名無しさん
09/02/17 20:07:53
>>348
IsRequiredをtrueなりfalseと設定したいから、そう記述するんだろ?
お前はいちいちプロパティが改変されることを予見してすべてプログラムするのか?
354:デフォルトの名無しさん
09/02/17 20:09:51
>>352
おいおい何を言ってるんだよトチ狂ったかw
そもそも外(UI)から操作される値の話をしてるのに、
外から操作してはダメな値を操作するのがおかしい、ってどういう意味だよ。
もう一度>>230から読んで話の文脈をちゃんと理解して何かいってよ。
355:デフォルトの名無しさん
09/02/17 20:12:13
>>353
それこそOOPを理解してる?
普通に考えれば、IsRequiredは外から操作されたくない値だろう。
>>230の意図はそうじゃないよ、って言いたいの?
じゃあまあ>>230の意図はおくとして、IsRequiredが外から操作されたくない
値だったら(普通にありふれたシナリオだと思うが)どうするの・
356:デフォルトの名無しさん
09/02/17 20:15:42
>>354
おいおい、お前頭がおかしいんじゃないか?
なら、絶対に表示しなければならないGUI部品のTextBoxがあったとして、
そのTextBox.Visibleを絶対に変更されないような仕組みをわざわざ作る必要なんてないだろ?
使う本人が分かればいいんだから。IsRequiredも同じだろ。
357:デフォルトの名無しさん
09/02/17 20:17:19
>>355
>普通に考えれば、IsRequiredは外から操作されたくない値だろう。
いや、汎用のクラスライブラリとしては、普通に操作できて当たり前だろ。
358:デフォルトの名無しさん
09/02/17 20:18:12
っていうか、正直>>230のような目的で>>251式にデータ自身に
メソッドやプロパティを持たせるかどうかは意見が分かれるところだとは思うけど、
IsRequiredはクラスメンバの値を公開するようにすべき、ってのは
まともなプログラマが100人いたら100人が同意する話だと思うぜ。
359:デフォルトの名無しさん
09/02/17 20:19:25
質問
bool値を返す関数ってよくIs~って名前付けるよね?
でも『A君はB君の方を見ていますか?』みたいな文の場合、
英語にするとDoes~で始まると思うんだけど、
こういうときの関数名はどうするべき?
360:デフォルトの名無しさん
09/02/17 20:21:00
>>359
CanASeeB
361:デフォルトの名無しさん
09/02/17 20:25:25
>>360
それ可能・不可能の意味合いに変わってるじゃないですか
362:デフォルトの名無しさん
09/02/17 20:25:53
>>356
外から変更されたくない値は変更できないようにしておくのが当たり前。
君は「アクセス修飾なんてぜんぶpublicでいいじゃん」っていう初心者様?
>>357
汎用クラスライブラリの話なんかしてないの。
ベタベタに特定用途専用のクラスの話をしてるんでしょ。
だいじょうぶかよ。
CustomerクラスのMailAddress1プロパティが必須かどうか、なんて値を
外から操作できてどうするんだよw
もちろんそういう用途が皆無とはいえないはずだが、普通はないよ。
363:デフォルトの名無しさん
09/02/17 20:31:54
>>362
変更されたくない値かどうかは、設計者次第
汎用クラスとして設定できるようにしておいて、その継承クラスで隠蔽しておけばいいだけでしょ。
>>230の使い方もわからないのに、勝手に変更されたくないと決めつけて意見するほうが間違い。
とはいえ、汎用的に利用するために、IsRequireのようなプロパティは公開しとくのが当たり前だろな。
>汎用クラスライブラリの話なんかしてないの。
>ベタベタに特定用途専用のクラスの話をしてるんでしょ。
ユーザが入力した文字列のバリデーションなら汎用だろ。
勝手に特定用途専用なんて決めつけるほうがおかしい。
>CustomerクラスのMailAddress1プロパティが必須かどうか、なんて値を
>外から操作できてどうするんだよw
CustomerクラスのMailAddressプロパティなんて>>230は話してないだろ?
何で勝手に自分の都合のいい解釈してんの?
それに>>317をみれば、それぞれのデータにIsRequiredプロパティがあるほうが
わかりやすいだろ?
364:デフォルトの名無しさん
09/02/17 20:32:26
>>359
A.IsLook( B );
でいーんじゃないかなぁ。もしくは
A.IsLooking( B );
これで伝わると思うんだけど。。。
365:デフォルトの名無しさん
09/02/17 20:44:00
>>362
業務ソフトは入力値のvalidationばかりだから
それにリソースを取られないようにクラスライブラリ化するのは当たり前でしょ
mailaddressの未入力を許可するみたいなのこそベタベタの汎用処理だと思うぞ
366:デフォルトの名無しさん
09/02/17 21:02:15
ToN敗走
367:デフォルトの名無しさん
09/02/17 21:10:43
>>363
んもー鳥頭さん?
>それに>>317をみれば、それぞれのデータにIsRequiredプロパティがあるほうが
>わかりやすいだろ?
まず最初に、そこは異論ないよ。
何度も言うように、意味論的にはオカシイんだけど。(正直これに違和感感じない人間にOOP論じる資格なし)
ただ、何度も言うようにデータにIsRequiredがあるのは意味論的には間違ってるから、
(それは本来Customerクラスが知っているべきことだ)その当然の帰結として、IsRequiredを
フールプルーフに出来なくなっちゃうよ、これって問題じゃないのかい、と言ってるの。
フールプルーフに出来なくなっちゃ、とは
Customer.MailAddress1に触るコードを書くときは、MailAddress.IsRequiredの値を間違って
破壊しないようにCustomerクラスを使う人が注意を払わなきゃならんということ。
どっかのトンマがIsRequiredを間違って破壊しちゃう可能性が機構的に排除できないってこと。
>>365
自分で自分の足を(撃とうと思えば)撃てるのはかまわないが、
安全装置を(組み込もうと思っても)組み込めないようなライブラリなんかに価値はないよ。
368:デフォルトの名無しさん
09/02/17 21:12:58
つーか、だからそもそもライブラリの話してないしさ。
369:デフォルトの名無しさん
09/02/17 21:18:57
>>367
>何度も言うように、意味論的にはオカシイんだけど。
おかしくないよ。これをおかしいと思うひとにオブジェクト指向を語る資格なし。
>どっかのトンマがIsRequiredを間違って破壊しちゃう可能性が機構的に排除できないってこと。
だからフールプルーフについては既に記述してるじゃん。
お前は絶対に表示しなければ成り立たないGUI部品があったとして、
そのVisibleをfalseにできないようわざわざ設定しているのか?
>安全装置を(組み込もうと思っても)組み込めないようなライブラリなんかに価値はないよ。
継承して隠蔽すればいいじゃん。
汎用的に使えないライブラリなんかに価値はないよ。
370:デフォルトの名無しさん
09/02/17 21:23:10
はいはい、そうだねお前らが正しいよ
お前ら釣られまくりでバカじゃねーの?wwwwww
しねばいいよwwwwwwwwwwwwwwww
371:デフォルトの名無しさん
09/02/17 21:25:56
>>370
ton氏ね
372:デフォルトの名無しさん
09/02/17 21:40:06
230は
foreach(inputField in Fields){
if(inputField.IsRequired && inputField.IsMissin){
// なんかする。メッセージのappendとか。
}
}
ってことだろうとふつーに思った。ふつーに思った。(IsRequiredは冗長かもしらんが。)
238を読んで、あーこういう脳みそがななめってるうざいやつってうちの現場にもいるなーって
オレも思ったし、お前も思っただろう。そいつは多分今も仕事中ww
373:デフォルトの名無しさん
09/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:デフォルトの名無しさん
09/02/17 22:04:43
いくらバカでもせいぜいflagとかにしちゃうぐらいだと思うがなぁ
375:デフォルトの名無しさん
09/02/17 22:12:16
IsRequiredプロパティ設定可否だの、定数での設定だの、
方法論はいろいろあるけど、変更できる人には、変更できちゃうんだから、
定数値でも意味がないだろ。
変更したくなければプロパティを隠蔽すりゃいいんだから。
376:デフォルトの名無しさん
09/02/17 22:14:58
なんかへそ茶だな。
2chで(馬鹿な)君に賛同してる奴なんて君と同じレベルの馬鹿なのに。
「オブジェクト指向が分からない」とは、>>230のいうIsRequiredのような値は
データの所有者に属する情報であってデータ自身に属する情報ではないことが
理解できない人間の事を言う。