トップページ⇒tech
442コメント192KB

コーディング規約

■ このスレッドは過去ログ倉庫に格納されています
00011NGNG
まじめに議論
0153144 ◆O1EofOj10A NGNG
>>152
dobule Point::getR() const; だろうね。
理由は
メンバ変数 x と y から一意に求められる上、
処理の負荷も気にならない
ゆえにこれはプロパティと言える。
0154デフォルトの名無しさんNGNG
ほほう。
では、原点に関して対象な点の座標を取得するメソッドだとどうなる?

struct Point {
double x;
double y;

Point getSymmetricPoint() const { return Point(-x, -y); }
};

これも getSymmetricPoint() でOK?
0155デフォルトの名無しさんNGNG
144 ◆O1EofOj10A の理論はこれで破綻したな。


↓【話をそらさずに】反論をどうぞ。>>144
0156デフォルトの名無しさんNGNG
何でもかんでも統一すれば良いとは思わんが、
区別できないものに対して区別しようとするのがそもそもの間違い。
0157144 ◆O1EofOj10A NGNG
>>154
条件は前回と一緒(メンバ変数 x と y から一意に求められ且処理の負荷も気にならない)
だが、今回はメソッドと考える。
構造体が「点」を表すものであり、「対称な点」というのを「点」の1属性と考えるのは少々強引だからだ
(これが単純な「点」ではなく、もっと原点とか対称といった概念を意識させる物であれば話は別)

しかし、ここで君が欲していた答えは「GetSymmetricPoint()」なわけだが、
僕はそうは答えない、なぜなら自己内ルールのプロパティへのアクセサと紛らわしくなるからだ。
今回はメソッドであるから
Point CalcSymmetricPoint() const;
とでもしようか。

どうだろう、君の勘違いはそろそろ解けてきただろうか?
0158144 ◆O1EofOj10A NGNG
>>155
反論?そもそも何に対して反論すればいいのかわからんが。
>154 は僕に質問しているだけであって、何か反論すべき理論を披露したようには思えないが。

>>156
区別できない?
無理矢理混同しておいて区別できないとはね。

0159デフォルトの名無しさんNGNG
>>157-158
しばらく運用していてsymmetricの取得がかなり多いことが分かりました。
はいどうぞ。

struct Point {
double x;
double y;
Point symmetric;

const Point& getSymmetricPoint() const { return symmetric; }
const Point& GetSymmetricPoint() const { return symmetric; }
const Point& CalcSymmetricPoint() const { return symmetric; }

};

本質を見失わないようについて来いよ。
0160デフォルトの名無しさんNGNG
要するに俺ルールってわけだ。

プロパティかそうでないかは、俺様ルールに従って決めるだけで、
客観的な尺度というものがない。
俺がプロパティだと思うものはプロパティだから、getXXX()と名前をつけ、
俺がプロパティでないと思うものは getXXX()とは呼ばずにたとえばCalcXXX()と呼ぶ。

ご立派なルールだ。
0161144 ◆O1EofOj10A NGNG
> しばらく運用していてsymmetricの取得がかなり多いことが分かりました。
なら SymmetricalPoint 構造体にしたら?
struct SymmetricalPoint {
Point points[2];
};
あと 君のコードがC++ ならコンパイルできないだろう。(循環参照を解決できるスマートポインタを使うかい?)
まあはぐらかしたとか言いかねないからお題の通りに答えてあげよう。
たとえキャッシュされていても、「対称な点」を「点」の1属性と考えるのは少々無理があるだろう
僕の答えは
(戻り値は上述の理由で表記不可能) CalcSymmetricPoint() const;
となるね。

> 本質を見失わないようについて来いよ。
最近は「いろいろ教えてくれてありがとう」の事をこう言うのか?


シャワーを浴びてくるのでしばらくレスしないだろうが、さっきみたいに
逃げただのと騒がないでくれよ。
0162144 ◆O1EofOj10A NGNG
>>160
面白いね君は。
世界で上から100人のプログラマを集めたとして
この100人に同じ問題をプログラムさせたら、全員がほぼ同じコードを書くと?
プログラミングに唯一かつ客観的な正解があるとははじめて知ったよ。

ここまで書いておいて何だが、
> 俺がプロパティだと思うものは〜
もう少し客観的なルールを披露したつもりだったが、伝わらなかったようだね。
0163デフォルトの名無しさんNGNG
>>161
うわー。一番やばい回答が返ってきた。

>なら SymmetricalPoint 構造体にしたら?
何故!?
ただ速度を速くしただけなのに、何故そんなことをせにゃならん?

>たとえキャッシュされていても、「対称な点」を「点」の1属性と考えるのは少々無理があるだろう
いや、これはわかってるんだけど、>>152がPointでお題を出したからそれに従ったまでだ。
さあ、大詰めですよ。>>130は君理論だとどうなるのかな?

class ListWithLengthMethod {  ←大爆笑
  char* str;
  int length;
  int getLength() {return this->length;}
}
0164デフォルトの名無しさんNGNG
おっと失礼。

class ListWithLengthProperty {  ←大爆笑

だな。この場合は。
0165デフォルトの名無しさんNGNG
更に失礼。レスし忘れてた。
コンパイル通らないのはすまんかったな。JavaとC++がごっちゃになってた。
まあ特に今回の話には関係ないので勘弁な。
0166デフォルトの名無しさんNGNG
>>161
> 逃げただのと騒がないでくれよ。
いつ誰が騒いだんだろう。妄想癖?
0167デフォルトの名無しさんNGNG
>>166
そんなん、2chを見てれば分かる。
早漏の香具師が多いからな。
0168デフォルトの名無しさんNGNG
世間一般で広く行われているコーディング規約ではは俺様ルールと違って、
愚鈍なプログラマでも名前が決められるように、
メソッド名ならば大文字ではじめるというようにシンプルに決めている。

いちいち、これはプロパティだろうかと 144 ◆O1EofOj10A 様に
お伺いを立ててから、getXXX()にしようかそれともCalcXXX()にしようかと
悩まなくてもすむようになっている。

これは、ある種の福音だね。
0169デフォルトの名無しさんNGNG
>>168
コーディング規約は全て144 ◆O1EofOj10A 様(w の頭の中にあるんだろうよ。
人によって解釈があいまいなものを隠せなきゃ規約じゃない。
0170デフォルトの名無しさんNGNG
まぁ自分だけで使う分なら俺様規約でも全くかまわないのだが…

ところで疑問なんだけど、>>144はその規約でチーム開発したことってある?
0171デフォルトの名無しさんNGNG
頭の良い高校生とみた。
0172デフォルトの名無しさんNGNG
比較的賢い金魚とみた。
0173デフォルトの名無しさんNGNG
なぜ8月に入って急に書き込みが増えた?
7月は山崎渉の2件を入れても3件しかなかったのにw
0174144 ◆O1EofOj10A NGNG
>>163(前半)
> うわー。一番やばい回答が返ってきた。
> >なら SymmetricalPoint 構造体にしたら?
> 何故!?
> ただ速度を速くしただけなのに、何故そんなことをせにゃならん?
君は墓穴を掘るという言葉を知っているかな?
君の拙い設計をあえて指摘せずによりよい案を出してあげたのに
そんなに君の設計の拙さを指摘して欲しいのかい?
いや、ある意味君はすばらしい生徒なのかもしれないね。
では模範解答だ。

まず君の発言を引用して広い見地から見ていこう。
>>> しばらく運用していてsymmetricの取得がかなり多いことが分かりました。
しばらく運用した結果というのは、運用によって Point を利用するコードが変わったという事だ
その結果キャッシュしなければいけないほど対称な点の取得が多かった
つまり運用後に見えてきた答えによって初期の設計のミスが現れたという事なのだよ。
これは悪い事ばかりではなく、コードをよりよくする動機になる。
そこで僕の実装だ

struct SymmetricalPoint {
 Point points[2];
};

まず大事なのは、僕の案では Point はなお健在であるという事だ。
「対称」が必要の無い場面では Point は Point のままでいい。
「対称」が頻繁に必要になる時にのみ、SymmetricalPoint を利用するのだ。
対して君の拙い案は極めてプリミティヴに近い Point にキャッシュを導入しようとしている。
Point を使うときはいつでもキャッシュの分、追加のリソースを支払わなければならない。
これは再利用への勇気と決意を失わせるに十分なコストだ。
0175144 ◆O1EofOj10A NGNG
>>163(後半)
あまりにも僕の考えるリストと違ったものなので驚いたが

class JunkString { //あまりにも哀れなので変えたよ
  char* str;
  int length;
  // int getLength() {return strlen(this->str);}
  int getLength() {return this->length;} // どちらでも変わらないが答えだ
};

>>165
僕はとても嬉しいよ、君にも正直に謝る事ができるんだね。

>>169
自己レスご苦労様。ここでも >>165 が正直だと実感できる。
君は C++ と Java しか知らないんだろう。
C# も Delphi も君がいつも馬鹿にしている VB ですら
言語レベルでプロパティという機能が備わっている。
それとも全世界の C# ユーザと Delphi ユーザーと VB ユーザと
その他の同様の機能を持つ言語のユーザ達が僕の元に
「これはメソッドですか?プロパティですか?」
とお伺いを立てに来てくれるのかな?

ちょっとイジワルな表現をしてみよう。
知 識 の 程 度 が 一 定 だ か ら 多 数 の 常 識 派 を 装 っ て も す ぐ バ レ る よ。
0176デフォルトの名無しさんNGNG
Pointを例として出したのは、ここの掲示板ではでかいソースが貼れないからだよ。
なんでその先が想像できないのかねぇ。趣味でやってるか、バカかのどっちか(あるいはどっちも)だな。
0177デフォルトの名無しさんNGNG
>>175
>>169 は自己レスじゃないよ。
周りが全部同一人物に見えてるらしいね。
ピンチになると敵を減らしたいからそう思うんだってさ。

------------------------
おい、ふざけてるのか?それとも本気なのか?
class String { // もともとの実装
  char* str;
  int GetLength() {return strlen(this->str);}
};
class JunkString { //あまりにも哀れなので変えたよ
  char* str;
  int length;
  int getLength() {return this->length;} // どちらでも変わらないが答えだ
};

たかがLengthメソッドからLengthプロパティに変更しただけで別のクラスを作るのか?本気であほちゃう?
まあ言葉が足りないんだろうと好意的に解釈して、
  int GetLength() {return strlen(this->str);}
が、
  int getLength() {return this->length;} // どちらでも変わらないが答えだ
に変わってしまっているぞ。インターフェイス変わってどーすんねん。
0178デフォルトの名無しさんNGNG
ここらで整理しとこうか。

144 ◆O1EofOj10A の主張
・プロパティかメソッドかでインターフェイスを変えるのは必然
・プロパティかメソッドかの判断は各人が行う
・プロパティは小文字から始める。メソッドは大文字から始める。

その他の主張
・プロパティかメソッドかに根本的に違いは無い
 (クライアントの○○が欲しいという要求を処理できればそれでい)
・プロパティかメソッドかの判断は必要ないので
 大文字で始めるか小文字で始めるかはプロジェクトで決める。


こんな感じか?
0179デフォルトの名無しさんNGNG
とりあえずgetとGetで使い分けるのはマズいと。
0180デフォルトの名無しさんNGNG
>>179
いいえ。使い分けるべきです。理由は>>142ですでに述べています。

とレスが来そうな予感
0181デフォルトの名無しさんNGNG
>>180
あれ?>>157の「紛らわしくなるから・・・」ってのが>>144様の見解じゃない?
0182144 ◆O1EofOj10A NGNG
言い訳ばっかりになってきたようだね。
ピンチになってまともな反論ができなくなるとそうする弱虫がいるんだってさ。

>>176
小学生じゃないんだから、勝負が終わった後に
ルールが悪かったとかゴネるのはやめたまえ。

>>176
> たかがLengthメソッドからLengthプロパティに変更しただけで別のクラスを作るのか?本気であほちゃう?
そう本気で考えちゃうなら君が阿呆なんだろう。
> インターフェイス変わってどーすんねん。
>>130 の後半と >>163 の両方をみてまだそう思うなら、君は頭だけでなく目も悪いようだ。

で、都合の悪い事は流すのかね?
C# と Delphi と VB を使ってる人は僕のところに来てるのかい?
0183144 ◆O1EofOj10A NGNG
>>180=181
ナイス連携プレイ!まさしく一人であるかのように息がぴったりだよ。

もう少し >>157 を判りやすくかいてあげよう
(メソッドである CalcSymmetricPoint が)自己内ルールのプロパティへのアクセサと紛らわしくなるからだ。

君はあらさがしをしているつもりかもしれないが、一貫した主張であるが故に崩す事は難しいだろう。
0184デフォルトの名無しさんNGNG
144 ◆O1EofOj10A
って Windows板でよく暴れてる人ですか?
0185デフォルトの名無しさんNGNG
>144 = >24 なのか?

>24 = >29 = >30 = >42 = >45 = ... その他いっぱい

一人で大活躍だな。

まともなバージョン管理システムも使ったことがないようだし、
チーム開発できないタイプなんじゃない。

前の方の議論では、俺のソースに触るなという結論じゃなかったっけ。

>144 擁護派って >144 の他にいるのか?
0186デフォルトの名無しさんNGNG
>>185
> まともなバージョン管理システムも使ったことがないようだし、
> チーム開発できないタイプなんじゃない。

ああ、だから「俺規約」を持ち出してきてるわけか。
0187122=136NGNG
>>144 を見るにプロパティとメソッドの使い分けには
(とりあえず使う人には) まあなんらかの使い分けがあるんだろうけどさ、
そもそも「何でプロパティを区別するのか」というのはさっぱりわからんのだけど。

>>175 で VB, Del, C# がプロパティをサポートしてるといってるけど
それはあくまで事実であって、理由ではないわな。
0188デフォルトの名無しさんNGNG
>>177
> まあ言葉が足りないんだろうと好意的に解釈して、
>   int GetLength() {return strlen(this->str);}
> が、
>   int getLength() {return this->length;} // どちらでも変わらないが答えだ
> に変わってしまっているぞ。インターフェイス変わってどーすんねん。

漏れもそうオモタが、>>144が何か勘違いしてる様な気が。
0189デフォルトの名無しさんNGNG
釣れた釣れた。今回は大漁だったな。





って言ってもいいよ。 >144
0190144 ◆O1EofOj10A NGNG
>>185
>>144 = >24 なのか?
ご名答。これは事実だ。

しかし複数人で5分間隔でレスをしていたのに、突然 22:50 から 23:20 まで
「誰一人」レスを付けなかったのはすごい偶然だね。
理論的に破綻して関係ない話題で吊るし上げる理由を一生懸命探してたわけだ

> 一人で大活躍だな。
何ていうんだったかな?のしをつけてお返ししますというやつかな?

> チーム開発できないタイプなんじゃない。
君みたいな粘着でも見落とす部分があるんだね。

> 前の方の議論では、俺のソースに触るなという結論じゃなかったっけ。
君が、君一人がそう誤解したままなのだよ。

>>144 擁護派って >144 の他にいるのか?
君の擁護派も君達以外いるのかい?

>>187
君は別人か?イマイチ判りづらくてね。
> VB, Del, C# がプロパティをサポートしてるといってるけど
> それはあくまで事実であって、理由ではないわな。
論点がずれているよ。
全世界の C# ユーザと Delphi ユーザーと VB ユーザとその他の同様の機能を持つ言語のユーザ達が
僕の元に「これはメソッドですか?プロパティですか?」とお伺いを立てに来てくれるのかと聞いている。
違うのはわかるだろう?みんな自分でプロパティかメソッドか判断しているんだ。
0191144 ◆O1EofOj10A NGNG
>>189
大物だが大漁じゃないんでね。

さて、僕はもう眠るよ。明日も暇だったら君の相手をしてあげよう。
0192187NGNG
>みんな自分でプロパティかメソッドか判断しているんだ。

いや、187 でも書いたようにみんな自分で判断しているのはそれでいいからさ、
それ以前の疑問の「なぜプロパティを使うのか?」を教えてくれ。

でこればっかりだとスレ違いなんで。以下を追加。

>みんな自分でプロパティかメソッドか判断しているんだ。

各自の判断でプロパティかメソッドが揺れるんだったらさ、
プロパティとメソッドでコーディングスタイルを変えるのは
チーム開発する場合はマズイだろ。
0193デフォルトの名無しさんNGNG
144はWindows板のデフラグスレ、田中スレ、その他の板の多くのスレで
中途半端な知識で暴れまくっています。
こまった人です。
0194デフォルトの名無しさんNGNG
getとsetに関してはアクセッサ専用にしてたほうが
無難だと思うが。
0195デフォルトの名無しさんNGNG
何かメール欄で必死に「負けたくない」って主張してるのってカッコワルイよね。
>>144=>>24って分かったんだし、放置でいいのでは?

>>99
> っていうかもうこねーようわぁぁん。みたいなー。

超笑える(w

>>24=>>144ってのを意識して>>24から読み直してみそ。強情ぶりがかなり笑えるから。
0196デフォルトの名無しさんNGNG
元スレ(クラス名・変数名に迷ったら書き込むスレ。Part2)の時から
口調はえらそうなくせに結局レアケースや自己矛盾な話を持ち出してきて一人でもがいてるだけだしな。
勝手に自演扱いにしてるし(まあ2ちゃんだからいいんだろうだけど)
CVS話の時もせっかく使い方教えてもらったのに結局礼も言ってないし(いや、教えたのは俺じゃないが)

「融通の利かない完璧主義者」で「プライドだけは一人前」。
0197デフォルトの名無しさんNGNG
俺は、VBとC#のプロパティはシンタックスシュガーと捕らえている。

text = Widget.getText(); や
Widget.setText(text);

よりも

text = Widget.Text
Widget.Text = text

の方が「わかりやすい」ような気がするし、きっと「読みやすい」んだと思う。

これには功罪あって、「読みやすい」がために逆にその奥で行われている
複雑な操作を隠蔽するがために、高価な操作をまるで変数に代入するかの
ような気軽さで行ってしまうおそれがある。

OOであることと言語がプロパティという表現形式をサポートしていることは
無関係であると思う。
現に、VC++は _com_ptr_t<> でCOMに対するプロパティをサポートしている。
0198デフォルトの名無しさんNGNG
Windows板が静かになったと思ったら
プログラム板で暴れてたのか。
もうWindows板に帰ってこなくていいです。>>144
0199デフォルトの名無しさんNGNG
またきたのかよ。成長はしなかったようだな。くるなっつったろ馬鹿が。もうくるなよ。>>144
0200197NGNG
百歩譲って考えれば、144はVBやC#のプロパティを小文字のメソッドで
表現することにより、C++でエミュレートしようとしているのだろう。

無 駄 な こ と だ が 。

そうしたからといって、プロパティにおけるシンタックスのような読みやすさが
手に入るわけではない。

C++と限定した理由だが、
Java使いがメソッド名を小文字以外で始めるとしたら、そいつは議論に値しない。
VB,C#,Delphiなどプロパティがサポートされている言語ではget/Getの使い分けをする
意味がない。
Ruby厨もPython厨もPerl厨もPHP厨もこんなことは考えない。
もちろん、SmallTalk使いやCLOS使いなわけもない。


0201デフォルトの名無しさんNGNG
>>175
> 君は C++ と Java しか知らないんだろう。
> C# も Delphi も君がいつも馬鹿にしている VB ですら
確かにLisp,Prolog,Pascal,C,C++,Java,C#,Perl,PHP,sh(bash,csh),N88BASIC(w)あと変なスクリプト言語やSQLぐらいしか知らん。
アセンブリはPC9801で画像処理に使ったぐらいだし、VBに至っては全然知らん。EXCELで1時間程度使ったぐらい。
OSもSolaris5.7〜、Linux2.0〜(RTLinux2.3pre2〜)、Windows95〜、MSDOS3.3D〜辺りの有名どころしか使ったこと無い。
知ってる言語は君より遥かに少ないし、経験も君に比べたら雲泥の差だと思う。
君のような素晴らしいプログラミング能力と素晴らしい設計力を前にしては全然歯が立たないよ。

と言うわけで俺はもう逃げます。はい負け犬です。やっぱり天才>>24=>>144様には勝てないです。
0202デフォルトの名無しさんNGNG
別に厨ではないが Ruby 使いとして。

Ruby ではメソッド名に xxx= というものが使える&
メソッド呼び出しの括弧が省略できるおかげで aaa.xxx = yyy という式が書ける
(この場合 xxx と = の間にスペースが入っても構文解析上 xxx= と同じように扱われる)。

get_xxx/set_xxx の代わりに xxx/xxx= というメソッド名にすることで
あなたのいうプロパティにおけるシンタックスのような読みやすさが手に入るのだ。
0203デフォルトの名無しさんNGNG
んでは、Delphi使いとして。
引数の無いメソッド呼び出しに括弧がいらないので、
property XXX : Integer read 〜 と function XXX : Integer; は
使う側では共に VARIABLE := OBJ.XXX;
なので、property/functionで迷ったら、とりあえず実装が都合がいい方にしておく。
最初functionにしておいて、後で代入したくなってpropertyにしても何の問題も無い。

あと、propertyは属性&派生属性へのアクセスと解釈してる。
どこまでが派生属性でどこからメソッドになるかは微妙な点も多いが、
上述の通り使う側の構文は同じなので迷ってOK
C#だと同じようにいかないのがちょっとなあ…って思うが。
0204144NGNG
おまえまじキショい
何で自演してまで俺なんかに突っかかってくるのかと思ったら
Windows 板で虐められた私怨かよ
悪いが俺は Windows 板なんかにゃ行ったことねぇよ
妄想の中のいじめっこと遊んでろや
0205デフォルトの名無しさんNGNG
>>144
宿題はもう終わったのか?
早めに済ませておかないと後がつらいよ。
0206デフォルトの名無しさんNGNG
自演自演って、Windows版で自分の自作自演が指摘されたのがよっぽど悔しかったんだね。
あれからだもんね。他人を自作自演扱いしだしたのは。

俺はプログラミング超初心者で勉強中だからここの会話の中身は訳わかんないから
自作自演したくてもできない。ごめんね。

>>204 は偽物なわけだが、
>>144 が Windows版で暴れてたのは文体とか必死さを見れば明らか。
0207144NGNG
誰がどう見ても自演なのばらされてるのにしつこいな
知識の程度が一定(バカは隠し切れないかプッ)なのと
わかりやすいくらい自演そのもののレス時間
妙に Windows 板にこだわる
(マ板ならともかくム板の連中はそんなに Windows 板見てねえよ)
0208_NGNG
http://homepage.mac.com/hiroyuki44/hankaku02.html
0209デフォルトの名無しさんNGNG
>>206
妄想厨は放置しろよ
0210デフォルトの名無しさんNGNG
・文体には気を使っていたが投稿時間でバレるのは気がつかなかった
・窓板住人
・妄想の友達がいっぱい(藁
0211デフォルトの名無しさんNGNG
そんな事より聞いてください
僕 >>206 さんの心の中に住んでいる妖精さんです。
みんな >>206 さんを虐めないで!!
強がっているけど本当はとても弱い人なんです。
煽りもうまくなったけど、>>206 さんがいつも現実世界で
言われている事を2ちゃんねるで書いてみてるだけなんです。
現実世界では >>206 さん誰も友達いないから
2ちゃんねるのみんなまで >>206 さんを虐めたら本当に一人になっちゃう!!
みんながちょっと優しくしてくれれば >>206 さんはそれで満足なんです。
もう >>206 さんには2ちゃんねるしか居場所がないんです。
どうかみなさんよろしくお願いします(ペコリ
0212デフォルトの名無しさんNGNG
★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★
☆★☆★☆★ 新商品 ゾク・ゾク 入荷 ☆★☆★☆
★☆                       
☆★ 送料激安!!  送料激安!!  送料激安!!
★☆      http://www.get-dvd.com      
☆★  激安アダルトDVDショップ        
★☆    お買い得!! 1枚500円〜 急げ!   
☆★    インターネット初!「きたぐに割引」  
★☆    北海道・東北の皆様は送料も激安!   
☆★      http://www.get-dvd.com      
★☆        スピード発送!        
☆★      http://www.get-dvd.com      
★☆        商品が豊富!         
☆★      http://www.get-dvd.com      
★☆                       
☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆
0213デフォルトの名無しさんNGNG
妙に自演にこだわってるね(βακα
0214デフォルトの名無しさんNGNG
>>211
面白いなこれ、
新しいコピペ?
0215デフォルトの名無しさんNGNG
<<このスレの90%くらいが二人の夏厨の煽りあいで埋め尽くされています。>>
0216デフォルトの名無しさんNGNG
>>211=214
(・∀・)カコワルイ!!
0217216NGNG
カコワルイ!!は(・A・)だた
欝氏・・・逝ってきます。
0218デフォルトの名無しさんNGNG
Windows版にこだわるっていうか、
> 悪いが俺は Windows 板なんかにゃ行ったことねぇよ
に対する答えだろ
0219デフォルトの名無しさんNGNG
>>24
多分、君はプロパティと、プロパティ取得用メソッドを混同してる。
プロパティというのは取得・設定できるオブジェクトの属性であって、
取得・設定する方法とは何の関係も無い。

文字列の長さというプロパティがあったとして、それを取得する方法が
l = string.Length;
l = string.getLength();
l = strlen( string );
l = string[-1];
のいずれであってもかまわない、これは構文上の違いでしかない。

getLength()は、
長さプロパティを取得するという動作を行うだけの普通のメソッドに過ぎない、
何も特殊なことは無い。
だからそれ以外のメソッドと違う命名規則を当てはめる必要はまったく無い。

たとえば
長さプロパティを取得しようとするけどやっぱり途中でやめちゃうメソッドなんてのを考えてみてくれ、
長さプロパティを取得するメソッドを特別扱いする意味がまったく無いことがわかる。
0220デフォルトの名無しさんNGNG
>>219
> 何も特殊なことは無い。
彼(>>24?)の主張は動作と値という概念の違いがあるから、
プロパティ操作メソッドとその他のメソッドを区別すべきという事みたいだけど。
あなたの主張は動作と値という概念の違いはないという事なの?
それとも動作と値という概念の違いはメソッドの規約として表現してはならないという事?
メソッドの規約として表現してはいけないとしたらそれにはどんな理由があるの?
0221デフォルトの名無しさんNGNG
>>220
値と動作には明確な違いがあるが、
値を取るという動作とそれ以外の動作には何も違いは無いという主張です。
0222220NGNG
>>221
なるほど。
メソッドは絶対に動作であってそれ以外の物ではないという主張なのね。
相手の主張は C++ でプロパティを表現する為に
便宜的にメソッドを使っている、つまりプロパティの操作は
動作ではないという事みたいだけど
あなたの意見はそうではない、という事でいいのかな?
0223デフォルトの名無しさんNGNG
>>222
221じゃないけどちょっとわかってきた気がする。
たしかに値の操作はOOでいうオブジェクトへの命令とはちょっと違う気がする。
値の操作にアクセッサーメソッドを使うのはカプセル化の為の手段でしかないですね。
0224デフォルトの名無しさんNGNG
>>222
そう。
たとえばNameというプロパティを設定するメソッドは
24的にsetNameでもいいし、ちょっとオシャレにRenameでもいい。

Renameは誰がどう見ても普通のメソッドと変わりないはず。
ならまったく同じ動作をするsetNameも同じメソッドのはず。
0225220NGNG
>>223
そういう考え方もできますね。
考え方次第ですね。

>>224
あなたの主張では
単純に名前を設定する事も改名しなさいと指示するのとまったく同じで
どちらを使ってもいいから、プロパティの操作はあなたの中ではメソッドだという事なのかな?
つまり同じ動作をする物はどちらを使っても良くて、どちらを使っても同じ?
0226デフォルトの名無しさんNGNG
つまらん
0227デフォルトの名無しさんNGNG
もとからだろ >>226
0228デフォルトの名無しさんNGNG
>>225
あなたのおかげで目が覚めました。
メソッドとプロパティは全然違うものでした。
ありがとうございました。
0229デフォルトの名無しさんNGNG
データを隠蔽してアクセサ等の操作メソッドを持たせたのがデータ抽象化。
アクセサを隠蔽してプロパティにまとめたのがアクセサ抽象化。
よってプロパティの方が偉いのだよ。
0230220NGNG
>>228
いえ私はあなたを説得したりするつもりはなかったのです。
ただ相手が何を主張しているのかを理解しようと考えてみてほしかっただけです。
相手の主張に同意できたのならきっと私の意図も伝わったのだと思います。
0231デフォルトの名無しさんNGNG
>>229
はつみみです;)
0232デフォルトの名無しさんNGNG
年齢(Age)とか身長(Height)とかいった属性がプロパティだべ。
どう考えてもメソッドじゃないべ。
なのにgetAgeとかgetHeightとメソッドにするのはどう考えてもおかしいべ。
だからAgeとかHeightにするんだけんど。
年齢にはマイナスが入らないとか200歳以上はだめだとか、
身長には1000mは入れられないとか制限をつけただけで
メソッドにしなきゃならないのもおかしいべ。
プロパティってのはやっぱり自然な機能だべ。
0233デフォルトの名無しさんNGNG
このスレはいつからプロパティの必要性を説くスレになったのですか?
0234デフォルトの名無しさんNGNG
>>232
だなあ。
で、実装方法としてはメソッドと変わりないものになったとしても、
やはりプロパティはプロパティなんだよな・・・
0235デフォルトの名無しさんNGNG
UMLなんか設計時点でメソッドとプロパティが存在するしな。
実装がどうなるかなんて関係なく別物として存在するんだよ。
0236デフォルトの名無しさんNGNG
>>232
> なのにgetAgeとかgetHeightとメソッドにするのはどう考えてもおかしいべ。
C++ にも Java にもプロパティ機能がない以上は
メソッドで代用するしかないじゃん。
0237219NGNG
>>228 乙

>>234
俺の書き込み以降も勘違いしたままのやつがいるのかよ・・・
実装方法がメソッドになるのはアクセサであってプロパティではない。
たとえばLengthというプロパティに対して
getLength メソッドが値の設定
getLength メソッドが値の取得
length_ フィールドが値の保存
を受け持つ(一例)。
どれか一つだけをとってプロパティと呼ぶことは無い。
0238デフォルトの名無しさんNGNG
>>233
>>24がC++で擬似プロパティメソッドとそれ以外のメソッドを区別しる!と書いて
そんなの区別する必要ないって香具師が出てきて、
じゃあプロパティ機能が備わってる言語はどうなんのさってなって
やっぱりプロパティが言語の機能に備わってないと喧嘩の元だねってなったずら。
0239デフォルトの名無しさんNGNG
>>237==221==224==228
なんでいまさらになってレス番を名前に書いたんですか?
0240デフォルトの名無しさんNGNG
>>239
番号書かなきゃ「俺の」が誰かわからないから
0241デフォルトの名無しさんNGNG
>>237
なにを言いたいのかわからん。プロパティを取得するのに
アクセサ方式(クラスの利用者からget,setでアクセスする)でやるのと
プロパティ方式(クラスの利用者から実際はメソッドだが変数のようにアクセスできる)
があってプロパティ方式の方がより自然な感じで利用できるということか?

確かにfoo.lengthの方がfoo.getLength()よりもプロパティって感じがするものなぁ。
0242デフォルトの名無しさんNGNG
ってちょっと待て
228は違うぞ
0243デフォルトの名無しさんNGNG
>>237
アクセサはプロパティの一部のただのメソッドだから他のメソッドと区別してはいけないってか?
理由になってねーじゃん。
プロパティの一構成要素だから他のメソッドと区別するんだって。
0244228NGNG
>>242
お前は誰だ。
0245237NGNG
>>241
違う、俺はプロパティアクセスの構文なんかどうでもいい。
なんかずれてきてるように思うが、論点は
プロパティに対する専用の構文の無い言語で、プロパティを取得するためのアクセサメソッドをそれ以外のメソッドと区別する必要があるかどうか。
だ。
0246デフォルトの名無しさんNGNG
まずは「区別」を定義しないとな。
0247デフォルトの名無しさんNGNG
あの、すいません、よくわからないんですけど、
プロパティーって、メンバ変数とかデータメンバとかいうアレですか?
0248243NGNG
>>245
あるっつってんの。
プロパティの一構成要素だから他のメソッドと区別するんだよ。
区別しなきゃ他のメソッドと紛らわしくなるだろが。
おまえが >>224 で書いたんだろ
> たとえばNameというプロパティを設定するメソッドは
> 24的にsetNameでもいいし、ちょっとオシャレにRenameでもいい。
> Renameは誰がどう見ても普通のメソッドと変わりないはず。
> ならまったく同じ動作をするsetNameも同じメソッドのはず。
こういう紛らわしい真似をしてくれるヤツがでてくんだよ。
0249_NGNG
http://homepage.mac.com/hiroyuki44/jaz08.html
0250デフォルトの名無しさんNGNG
>>246
区別の例としては
GetName/SetName/Doingが普通のメソッドで
getName/setNameが擬似プロパティという事みたいよ。
0251デフォルトの名無しさんNGNG
白のパンダをどれでも全部並べる歌手です>>247
0252デフォルトの名無しさんNGNG
GetNameやSetNameなんていらんだろ。つーか作るな。
名前ってのは機能を表す。
言語によっては大文字と小文字は区別されるが
同じ単語なんだよ。
■ このスレッドは過去ログ倉庫に格納されています