「メソッド名」分ける必要なくね?【オーバーロード】 [無断転載禁止]©2ch.net
■ このスレッドは過去ログ倉庫に格納されています
これは完全に俺の理論なんだが
・例えばメソッド名は「any」とか「do」とか統一でいいと思う。
(引数個数と型によって呼ばれるメソッドが変わるオーバーロードがあるから)
・慣れたプログラマだったらコード読むときにメソッド名はなく引数でとか
静的型付け言語だったら型で処理を判断するだろ。
・メソッド名は同じクラス内で引数の型と個数、戻り値型が
全部被って初めて分けるべきだと思う。
・可読性はそんなに落ちないと思う。
落ちたとしても、print 系コマンドで値を出力する記述の手間が
格段に上がる(メソッド名を変えなくていい)し、
引数のバリエーションを変えて、挙動の確認が
やりやすくなる。デバッガを使えば、中間状態の値なんて簡単に
確認できる。だからメソッド名分ける必要はない。
・反対にメソッド名統一しとけば保守性、互換性、拡張性は格段に上がる。
・さらに特定の意図をもって「methodA」や「methodB」みたいに「グループ化」
するという使い方をすれば、何らかの使い分けできて便利だと思う。
・いちいち長いメソッド名を「メソッド1つ1つ」に割り当てて「意味付け」する
必要が全くない。 書くときはだろ。
読むときは具体的なコードのがマシ。
抽象馬鹿が書いたコードが一番邪魔。 >>46
> 要するに、デバッグ出力する関数名はdebugで統一すればいいじゃんってことでOK?
>>1が言ってるのは、関数名を一つにして引数で切り替えろと言ってる。
だからデバッグ出力する関数名もanyとかで
any(なんたら)ってやったらデバッグ出力させたいということ。
any("文字列") で、puts("文字列")
any("文字列")で、debug("文字列")
という風に、引数で関数名を見分けたいらしい。どうやって?(大爆笑) >>48
「見分ける」って言うより、「結果が得られればOK」ってことじゃない?
中で何かやるvoid型や外部や永続化機構とやり取りするAPIだと危ないな。 全部 void* で、アセンブラコーディングすればいいと言ってるようなもの。
>・さらに特定の意図をもって「methodA」や「methodB」みたいに「グループ化」
> するという使い方をすれば、何らかの使い分けできて便利だと思う。
>・いちいち長いメソッド名を「メソッド1つ1つ」に割り当てて「意味付け」する
> 必要が全くない。
結局、「意味」だろうと抽象的な枠だろうと「グループ化」という括りで
考えてみて、整理するってのが大事ってのが本質だろう。
関数型だろうがオブジェクト指向だろうが結局はどのように整理してまとめるのか
ってのが本質なわけだから。 >>50
いろんな車輪が必要だからやで、
チャリンコの車輪とロードローラーの車輪は「違うもの」やからやで。 メソッド名はモデル化の重要な要素だよ
これは何をやってるのかを端的に表せる
それをDOやANYにするのは愚かすぎる >>51
> それは>>43-44で解消されてる
関数名を全部anyにして、第一引数に関数名を入れるってこと?
それ何の意味があるの? しいて言えば呼び出し先を決定するのが動的になる
が、どちらかというとディメリットだな こんな感じのコードになるんですかね?
function any(name, arg1, arg2, arg3, ...) {
switch(name) {
case 'add' :
元add関数の中身
case 'sub'':
元sub関数の中身
case 'mul':
元mul関数の中身
case 'div':
元div関数の中身
case:
:
:数万行
}
} どんな設計書を記述して
それをどんな実現方法で実現して欲しいのか
思想が見えない
ただ、奇をてらっただけのアホなアイディア >>55
エントリポイントが1個で済むからリロケータブルで配布する時に楽 アホか
IDEの支援が受けれない
コンパイル時にエラーチェックされない
実行にエラーがでるまでバグが隠れる 同じ型を取ってもオーバーロードしたいときがたまにあるんだが
しかも総称型のときは引数1つ余計に増えるんだが メソッド名は動詞だけで十分、引数が目的語を担うからメソッド名に目的語を入れるのは邪道
という話に勝手に勘違いしてた a.add(b)
add(a,b)
(add a b)
lisp使えば全部引数っぽいぞ
オブジェクト指向の文法はperlやpython見ればわかるが1番目の引数をオブジェクトとして必ず渡すってルールと変わらない
関数、メソッド名をarg0と考えれば要素の羅列でしかない
>>1
人と話す時、全ての引数を読み上げるのか?
ドキュメントにいちいち長い引数羅列するのか?
ぼっち趣味プログラマなのか とりあえずなんか具体的なもん出してくれりゃいいのに
FOOとかBARじゃわからんわ なんかこの手の人の思考としては
具体的なもの書いたらそれに引きずられるから書かないみたいなことを
思ってるんじゃないかね。
実際はそれだとまったく中身のないコードになってしまうわけだが。
確かに具体的なものがだらだら書かれるのはよくないけれど、
重要なことは抽象概念と具体的なものがどこでどうつながっているかが
明確なことだと思う。
明確ならばリファクタリングするなりで抽象部分を抜き出すのはそう難しいことじゃない。 でもプログラミング言語なら四則演算ぐらいは出来ないと話にならないから
その方面から攻めていけば?
例えば「足し算」と「掛け算」の記号やメソッド名が同じだった場合
どうやって区別すればよい?
型で区別するっつっても、その型の場合は常に引き算になるとか
意味わからないことになるよ do(print ”helo” print)
こうですか? ☆ 日本の、改憲を行いましょう。現在、衆議員と参議院の
両院で、改憲議員が3分の2を超えております。
『憲法改正国民投票法』、でググってみてください。国会の発議は
すでに可能です。平和は勝ち取るものです。お願い致します。☆☆ 僕の知り合いの知り合いができたパソコン一台でお金持ちになれるやり方
役に立つかもしれません
グーグルで検索するといいかも『ネットで稼ぐ方法 モニアレフヌノ』
SPZ1O メソッド名はbindとfmapとreturnの3つだけでいい。 >>864
>>72
bind(String)
bind(Number)
bind(WeakReference)
bind(Set)
bind(Map)
bind(List)
こんなソースを書くんだろうなw メソッドのオーバーロードくれっていうそれだけの要望では? JSはまじでオーバーロードほちい
でも引数型が被る被らないってジェネリクスがなかった時代の話だよな?
ジェネリックメソッドは引数が一つなら問答無用で被るから名前を分けるしかない
ただdebugIntとかdebugStringとか型で分ける必要はない ■ このスレッドは過去ログ倉庫に格納されています