これは完全に俺の理論なんだが
・例えばメソッド名は「any」とか「do」とか統一でいいと思う。
(引数個数と型によって呼ばれるメソッドが変わるオーバーロードがあるから)
・慣れたプログラマだったらコード読むときにメソッド名はなく引数でとか
静的型付け言語だったら型で処理を判断するだろ。
・メソッド名は同じクラス内で引数の型と個数、戻り値型が
全部被って初めて分けるべきだと思う。
・可読性はそんなに落ちないと思う。
落ちたとしても、print 系コマンドで値を出力する記述の手間が
格段に上がる(メソッド名を変えなくていい)し、
引数のバリエーションを変えて、挙動の確認が
やりやすくなる。デバッガを使えば、中間状態の値なんて簡単に
確認できる。だからメソッド名分ける必要はない。
・反対にメソッド名統一しとけば保守性、互換性、拡張性は格段に上がる。
・さらに特定の意図をもって「methodA」や「methodB」みたいに「グループ化」
するという使い方をすれば、何らかの使い分けできて便利だと思う。
・いちいち長いメソッド名を「メソッド1つ1つ」に割り当てて「意味付け」する
必要が全くない。
「メソッド名」分ける必要なくね?【オーバーロード】 [無断転載禁止]©2ch.net
■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん
2017/07/30(日) 12:09:40.60ID:BhqS0uaq28デフォルトの名無しさん
2017/07/30(日) 14:21:42.80ID:BhqS0uaq >>25
ちょっと修正した。
cとJava混ざっちゃっているけど、まあ雰囲気で捉えてくれ。
「fooというオブジェクトの範囲」であれば、なんとなく理解可能
にはなるだろう。「Fooという型」のfooさんに、「この引数で何かしろ」
といったら、Foo型の文脈で何かしてくれるイメージ。
あと、関数型プログラミングって言ったのにはあまり深い意味はない。
関数型では引数の型と戻り値の型が同じならチェーンできていい関数になるから、
じゃあメソッド名からは「戻り値の型」だけわかりゃいんじゃないかって思っただけ。
String型を返すなら、 .toString() ぐらいの命名で全部同じにしちゃえば、
関数型プログラミングしやすくなると思ってそう言っただけ。
int main() {
Foo foo = new Foo();
if ( foo.any(argv[1]) )
foo.any()
foo.any("a")
} else {
foo.any(["a", "b", "c"]
}
}
ちょっと修正した。
cとJava混ざっちゃっているけど、まあ雰囲気で捉えてくれ。
「fooというオブジェクトの範囲」であれば、なんとなく理解可能
にはなるだろう。「Fooという型」のfooさんに、「この引数で何かしろ」
といったら、Foo型の文脈で何かしてくれるイメージ。
あと、関数型プログラミングって言ったのにはあまり深い意味はない。
関数型では引数の型と戻り値の型が同じならチェーンできていい関数になるから、
じゃあメソッド名からは「戻り値の型」だけわかりゃいんじゃないかって思っただけ。
String型を返すなら、 .toString() ぐらいの命名で全部同じにしちゃえば、
関数型プログラミングしやすくなると思ってそう言っただけ。
int main() {
Foo foo = new Foo();
if ( foo.any(argv[1]) )
foo.any()
foo.any("a")
} else {
foo.any(["a", "b", "c"]
}
}
2017/07/30(日) 14:27:43.55ID:MHvXlxdG
> String型を返すなら、 .toString() ぐらいの命名で全部同じにしちゃえば、
> 関数型プログラミングしやすくなると思ってそう言っただけ。
だからそれは関数型プログラミングと
まーーーーったく関係ない。
> 関数型プログラミングしやすくなると思ってそう言っただけ。
だからそれは関数型プログラミングと
まーーーーったく関係ない。
2017/07/30(日) 14:28:17.81ID:MHvXlxdG
> にはなるだろう。「Fooという型」のfooさんに、「この引数で何かしろ」
> といったら、Foo型の文脈で何かしてくれるイメージ。
何かって引数のファイルでも削除してくれるのかwww
> といったら、Foo型の文脈で何かしてくれるイメージ。
何かって引数のファイルでも削除してくれるのかwww
2017/07/30(日) 14:35:42.35ID:MHvXlxdG
気づいていないかもしれないけど、
俺が作ったアプリケーションもメソッドは、
Fooアプリケーション専用の設定ファイルを
扱うオブジェクトでanyっていうのはその設定ファイルを
削除するメソッドだぞw
any()だったら設定ファイル全削除な
any("a")は、aという名前で設定ファイルを作成するメソッド実行な
foo.any(["a", "b", "c"])は複数の設定ファイルを削除するメソッド実行だ
嘘だけどなw
本当はFooっていうのは(あとで考える)
俺が作ったアプリケーションもメソッドは、
Fooアプリケーション専用の設定ファイルを
扱うオブジェクトでanyっていうのはその設定ファイルを
削除するメソッドだぞw
any()だったら設定ファイル全削除な
any("a")は、aという名前で設定ファイルを作成するメソッド実行な
foo.any(["a", "b", "c"])は複数の設定ファイルを削除するメソッド実行だ
嘘だけどなw
本当はFooっていうのは(あとで考える)
2017/07/30(日) 14:36:23.53ID:MHvXlxdG
引数で区別できるっていうのなら
やってみせろやwww
やってみせろやwww
2017/07/30(日) 14:41:40.30ID:cdQ1+1zX
その制約を持った新しい言語を直ちに作ってリリースしろよ
良いと思った人間が多ければ使われるし、そうでなければ使われない
こんなところに長々と理屈を書いて同意を得ようとしても無意味。物を出せ
良いと思った人間が多ければ使われるし、そうでなければ使われない
こんなところに長々と理屈を書いて同意を得ようとしても無意味。物を出せ
34デフォルトの名無しさん
2017/07/30(日) 14:47:43.24ID:BhqS0uaq MHvXlxdG
あなたはCがメインのプログラマなんだろ
オブジェクト指向とか関数型を勉強すると
俺の言っていることが少しは分かるよ。
ソースから具体名を排除するとモジュール性が高くなって
部品として優秀になるんだよ。
ただ、ファイル出力とかユーティリティ系関数のことは全く考慮して
物事を言っていなかったのは認めるわ。
俺もちょっと考えが甘かった感は否めないな。
あなたはCがメインのプログラマなんだろ
オブジェクト指向とか関数型を勉強すると
俺の言っていることが少しは分かるよ。
ソースから具体名を排除するとモジュール性が高くなって
部品として優秀になるんだよ。
ただ、ファイル出力とかユーティリティ系関数のことは全く考慮して
物事を言っていなかったのは認めるわ。
俺もちょっと考えが甘かった感は否めないな。
2017/07/30(日) 14:49:21.81ID:MHvXlxdG
>>34
だからアプリケーション用の設定ファイルを扱うオブジェクトにしただろ
で、設定ファイルのanyメソッドはどうい動きをするって?
お前さっきから一つも実例出してないよな。
はっきり言おう
オマエ馬鹿だ
だからアプリケーション用の設定ファイルを扱うオブジェクトにしただろ
で、設定ファイルのanyメソッドはどうい動きをするって?
お前さっきから一つも実例出してないよな。
はっきり言おう
オマエ馬鹿だ
2017/07/30(日) 14:54:43.18ID:2zV1cvrd
2017/07/30(日) 15:20:12.26ID:cUhpqgWb
exp(double)->any(double)
cos(double)->any(double)
sin(double)->any(double)
tan(double)->any(double)
max(double,double)->any(double,double)
min(double,double)->any(double,double)
やったぜ!!!!
cos(double)->any(double)
sin(double)->any(double)
tan(double)->any(double)
max(double,double)->any(double,double)
min(double,double)->any(double,double)
やったぜ!!!!
2017/07/30(日) 15:21:19.55ID:uWnLP08p
>>34
ファッ!?このレス上から目線で面白すぎィ!!
ファッ!?このレス上から目線で面白すぎィ!!
2017/07/30(日) 15:23:14.81ID:MHvXlxdG
ぶっちゃけ>>2が答
2017/07/30(日) 16:43:51.79ID:WIdXXLkI
他スレがほんのちょっと静かになったのは、ここに馬鹿が集まってるせいか
2017/07/31(月) 05:56:58.09ID:n54Tb1TV
オブジェクトのメソッドが呼ばれると内部的には、メソッド実行関数と、メソッド名が渡されている。
せっかく生産性上げるために、構文だサポートされてる機能をまた原始的にする必要はない。
せっかく生産性上げるために、構文だサポートされてる機能をまた原始的にする必要はない。
2017/08/01(火) 13:46:19.46ID:3HNK9QLp
オーバーロードって大体の言語で複数の型にヒットすればエラーになるようになってるから普通に実用性無いよ
2017/08/01(火) 15:03:53.64ID:R0nmZVxs
a=1+2*3 を
a=1;
a+=2;
a*=3;
とか書く代わりに
a=1;
a.method('add', 2);
a.method('mul', 3);
だとすっきりしてて気持ちいいな
a=1;
a+=2;
a*=3;
とか書く代わりに
a=1;
a.method('add', 2);
a.method('mul', 3);
だとすっきりしてて気持ちいいな
2017/08/01(火) 20:30:42.91ID:zRlG3ihR
なぜ a=1; の部分だけ残した?
ちゃんと
a.method('mov', 1);
にしろよ
ちゃんと
a.method('mov', 1);
にしろよ
45デフォルトの名無しさん
2017/08/02(水) 18:08:01.72ID:30cVPQS3 >>1
一理ある
一理ある
46デフォルトの名無しさん
2017/08/02(水) 19:49:19.29ID:Z5Qh/rzb 要するに、デバッグ出力する関数名はdebugで統一すればいいじゃんってことでOK?
出力する型に合わせて
debug_int
debug_date
とか関数名変えるのは面倒くさいと言うことだね。
そのとおりだと思う。
出力する型に合わせて
debug_int
debug_date
とか関数名変えるのは面倒くさいと言うことだね。
そのとおりだと思う。
2017/08/02(水) 20:53:32.06ID:trs+oWK4
書くときはだろ。
読むときは具体的なコードのがマシ。
抽象馬鹿が書いたコードが一番邪魔。
読むときは具体的なコードのがマシ。
抽象馬鹿が書いたコードが一番邪魔。
2017/08/02(水) 23:15:01.68ID:Kt8sLKWk
49デフォルトの名無しさん
2017/08/03(木) 07:04:32.69ID:FgpTsL6950sage
2017/08/03(木) 10:10:40.78ID:OdVXAC/k なんで車輪を再発明したがるん?
2017/08/03(木) 12:10:06.37ID:0AtlPHCv
2017/08/03(木) 13:05:59.57ID:VGeKeN5L
全部 void* で、アセンブラコーディングすればいいと言ってるようなもの。
>・さらに特定の意図をもって「methodA」や「methodB」みたいに「グループ化」
> するという使い方をすれば、何らかの使い分けできて便利だと思う。
>・いちいち長いメソッド名を「メソッド1つ1つ」に割り当てて「意味付け」する
> 必要が全くない。
結局、「意味」だろうと抽象的な枠だろうと「グループ化」という括りで
考えてみて、整理するってのが大事ってのが本質だろう。
関数型だろうがオブジェクト指向だろうが結局はどのように整理してまとめるのか
ってのが本質なわけだから。
>・さらに特定の意図をもって「methodA」や「methodB」みたいに「グループ化」
> するという使い方をすれば、何らかの使い分けできて便利だと思う。
>・いちいち長いメソッド名を「メソッド1つ1つ」に割り当てて「意味付け」する
> 必要が全くない。
結局、「意味」だろうと抽象的な枠だろうと「グループ化」という括りで
考えてみて、整理するってのが大事ってのが本質だろう。
関数型だろうがオブジェクト指向だろうが結局はどのように整理してまとめるのか
ってのが本質なわけだから。
53デフォルトの名無しさん
2017/08/03(木) 19:35:48.68ID:FgpTsL692017/08/03(木) 20:15:48.36ID:qN63KjBr
メソッド名はモデル化の重要な要素だよ
これは何をやってるのかを端的に表せる
それをDOやANYにするのは愚かすぎる
これは何をやってるのかを端的に表せる
それをDOやANYにするのは愚かすぎる
2017/08/03(木) 20:46:34.72ID:jHHWrU0N
2017/08/03(木) 20:49:33.79ID:Wy5AX0em
しいて言えば呼び出し先を決定するのが動的になる
が、どちらかというとディメリットだな
が、どちらかというとディメリットだな
2017/08/03(木) 20:53:42.35ID:jHHWrU0N
こんな感じのコードになるんですかね?
function any(name, arg1, arg2, arg3, ...) {
switch(name) {
case 'add' :
元add関数の中身
case 'sub'':
元sub関数の中身
case 'mul':
元mul関数の中身
case 'div':
元div関数の中身
case:
:
:数万行
}
}
function any(name, arg1, arg2, arg3, ...) {
switch(name) {
case 'add' :
元add関数の中身
case 'sub'':
元sub関数の中身
case 'mul':
元mul関数の中身
case 'div':
元div関数の中身
case:
:
:数万行
}
}
2017/08/03(木) 20:55:41.17ID:9rdLVHxU
汎用性を上げれば上げるほど何もしないクラスになる
2017/08/03(木) 20:58:08.12ID:9rdLVHxU
どんな設計書を記述して
それをどんな実現方法で実現して欲しいのか
思想が見えない
ただ、奇をてらっただけのアホなアイディア
それをどんな実現方法で実現して欲しいのか
思想が見えない
ただ、奇をてらっただけのアホなアイディア
2017/08/04(金) 11:57:57.58ID:JMApPqgm
>>55
エントリポイントが1個で済むからリロケータブルで配布する時に楽
エントリポイントが1個で済むからリロケータブルで配布する時に楽
2017/08/04(金) 13:09:10.75ID:d3YpkD+n
アホか
IDEの支援が受けれない
コンパイル時にエラーチェックされない
実行にエラーがでるまでバグが隠れる
IDEの支援が受けれない
コンパイル時にエラーチェックされない
実行にエラーがでるまでバグが隠れる
2017/08/04(金) 14:32:21.58ID:lij57f0O
同じ型を取ってもオーバーロードしたいときがたまにあるんだが
しかも総称型のときは引数1つ余計に増えるんだが
しかも総称型のときは引数1つ余計に増えるんだが
2017/08/04(金) 14:56:56.48ID:+Pl+SuD3
メソッド名は動詞だけで十分、引数が目的語を担うからメソッド名に目的語を入れるのは邪道
という話に勝手に勘違いしてた
という話に勝手に勘違いしてた
2017/08/05(土) 14:24:06.15ID:pAL2FsqO
a.add(b)
add(a,b)
(add a b)
lisp使えば全部引数っぽいぞ
オブジェクト指向の文法はperlやpython見ればわかるが1番目の引数をオブジェクトとして必ず渡すってルールと変わらない
関数、メソッド名をarg0と考えれば要素の羅列でしかない
>>1
人と話す時、全ての引数を読み上げるのか?
ドキュメントにいちいち長い引数羅列するのか?
ぼっち趣味プログラマなのか
add(a,b)
(add a b)
lisp使えば全部引数っぽいぞ
オブジェクト指向の文法はperlやpython見ればわかるが1番目の引数をオブジェクトとして必ず渡すってルールと変わらない
関数、メソッド名をarg0と考えれば要素の羅列でしかない
>>1
人と話す時、全ての引数を読み上げるのか?
ドキュメントにいちいち長い引数羅列するのか?
ぼっち趣味プログラマなのか
2017/08/07(月) 19:39:07.98ID:KYx8Kn3i
とりあえずなんか具体的なもん出してくれりゃいいのに
FOOとかBARじゃわからんわ
FOOとかBARじゃわからんわ
2017/08/08(火) 11:57:17.43ID:lBJjevEI
なんかこの手の人の思考としては
具体的なもの書いたらそれに引きずられるから書かないみたいなことを
思ってるんじゃないかね。
実際はそれだとまったく中身のないコードになってしまうわけだが。
確かに具体的なものがだらだら書かれるのはよくないけれど、
重要なことは抽象概念と具体的なものがどこでどうつながっているかが
明確なことだと思う。
明確ならばリファクタリングするなりで抽象部分を抜き出すのはそう難しいことじゃない。
具体的なもの書いたらそれに引きずられるから書かないみたいなことを
思ってるんじゃないかね。
実際はそれだとまったく中身のないコードになってしまうわけだが。
確かに具体的なものがだらだら書かれるのはよくないけれど、
重要なことは抽象概念と具体的なものがどこでどうつながっているかが
明確なことだと思う。
明確ならばリファクタリングするなりで抽象部分を抜き出すのはそう難しいことじゃない。
2017/08/08(火) 12:50:57.21ID:m8GLf68F
でもプログラミング言語なら四則演算ぐらいは出来ないと話にならないから
その方面から攻めていけば?
例えば「足し算」と「掛け算」の記号やメソッド名が同じだった場合
どうやって区別すればよい?
型で区別するっつっても、その型の場合は常に引き算になるとか
意味わからないことになるよ
その方面から攻めていけば?
例えば「足し算」と「掛け算」の記号やメソッド名が同じだった場合
どうやって区別すればよい?
型で区別するっつっても、その型の場合は常に引き算になるとか
意味わからないことになるよ
2017/08/19(土) 00:53:40.52ID:WAJdahb2
do(print ”helo” print)
こうですか?
こうですか?
2018/02/16(金) 06:24:09.21ID:W1XJdyx1
☆ 日本の、改憲を行いましょう。現在、衆議員と参議院の
両院で、改憲議員が3分の2を超えております。
『憲法改正国民投票法』、でググってみてください。国会の発議は
すでに可能です。平和は勝ち取るものです。お願い致します。☆☆
両院で、改憲議員が3分の2を超えております。
『憲法改正国民投票法』、でググってみてください。国会の発議は
すでに可能です。平和は勝ち取るものです。お願い致します。☆☆
70デフォルトの名無しさん
2018/05/23(水) 21:56:58.56ID:Au5e7VGg 僕の知り合いの知り合いができたパソコン一台でお金持ちになれるやり方
役に立つかもしれません
グーグルで検索するといいかも『ネットで稼ぐ方法 モニアレフヌノ』
SPZ1O
役に立つかもしれません
グーグルで検索するといいかも『ネットで稼ぐ方法 モニアレフヌノ』
SPZ1O
71デフォルトの名無しさん
2018/07/05(木) 00:06:05.30ID:RfoszcD2 MII
2018/07/10(火) 14:15:36.55ID:nhRVi4l7
メソッド名はbindとfmapとreturnの3つだけでいい。
2018/09/17(月) 04:29:34.48ID:G0Kg20fS
2018/09/17(月) 04:30:36.07ID:G0Kg20fS
>>57
神メソッドを作るなカス
神メソッドを作るなカス
75デフォルトの名無しさん
2018/10/28(日) 03:28:36.36ID:M967BdoV _
2018/10/28(日) 16:17:40.34ID:8QnHFH7o
メソッドのオーバーロードくれっていうそれだけの要望では?
2020/04/22(水) 21:16:08.11ID:TQVQtNCZ
JSはまじでオーバーロードほちい
でも引数型が被る被らないってジェネリクスがなかった時代の話だよな?
ジェネリックメソッドは引数が一つなら問答無用で被るから名前を分けるしかない
ただdebugIntとかdebugStringとか型で分ける必要はない
でも引数型が被る被らないってジェネリクスがなかった時代の話だよな?
ジェネリックメソッドは引数が一つなら問答無用で被るから名前を分けるしかない
ただdebugIntとかdebugStringとか型で分ける必要はない
2021/07/14(水) 10:41:19.85ID:lRUgrD0m
エルダーリッチにの上ですかね?
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 国民 居住目的でない住宅所有者に「空室税」課せる法案を提出 [少考さん★]
- 【おこめ】「有能だったんじゃ」おこめ券で批判殺到の鈴木農水大臣…ネットでは前任の“進次郎再評価” ★2 [ぐれ★]
- アメリカ、入国時に「日本人を含む外国人観光客の最大5年分のSNS履歴の提出」義務化へ 過去10年間に使用のメールアドレスや電話番号等も★3 [Hitzeschleier★]
- 【画像】消えた美人女優 上原多香子さん(42)、沖縄で目撃される [牛丼★]
- 「暖房が使えない」「食費が高くて子どもの栄養が…」 物価高に苦しむ子育て世帯、政府に期待する支援は ★2 [蚤の市★]
- バイク事故で入院ゆたぼん、見舞金「1円」振り込みの名義に衝撃「悲しい人ですね」「こういう人がいるから…」 [muffin★]
- ひろゆき「冬の朝って「あ、今日無理かも」の日が多すぎる」
- 高市早苗、森元総理の愛人だった [347751896]
- 【声優】亡くなった人で好きだった声優👈誰を思いつく?? [519998392] [839143615]
- 来年からPCの価格がガチのマジで超ヤバイ程値上がる模様。お前ら買ったか?Sandy高市 [484676894]
- PayPayスクラッチチャンスの声やってるけどあの声出なくなった
- 【急募】しゃっくりの止め方wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww
