マーチン・ファウラーのプログラミングバンザイ [無断転載禁止]©2ch.net
■ このスレッドは過去ログ倉庫に格納されています
関数の適切な長さとは? マーチン・ファウラー氏は、長さより意図と実装の分離、そしてよい関数名が重要だと指摘
http://www.publickey1.jp/blog/17/post_262.html >>43
はい?
1000行以上もあって「門外漢の人間が見てわかるものじゃない」のに、「コードの品質も高い」んですか?
メソッドの頭であなたが使ったローカル変数を、誰か別の人がメソッド末尾で触ってしまったら、あなたの作業は全て無意味ですよ。そのローカル変数が参照型の場合は特に。
そんなことだから収集つかなくなるんですよ、みずほさんみたいに(笑) >>45
ローカル変数のスコープは小さくするのが基本
批判しやすい状況を想定して批判するのはバカがすること
お前の脳ミソのキャパシティが疑われる 結局この程度のバカがハゲコンサルのお花畑詐欺に引っかかってるんだよ
水素水も飲んでそう、オブジェクト指向はすごくこれから人間を救っていくと思ってそう
ちげえから世の中そんなに甘くねえから、現実的なマジモンのプログラムっつーのは
泥臭いコードの中に存在するものだから 昨今の雑魚厨どもはコンパイラも書いたことがない分際でプログラムを語りやがるからいけねえわ
本格的なプログラムに片足の小指の先っちょでも突っ込んでから語ってほしいわ
オブジェクト詐欺のコンサルハゲに騙されるような貧弱プログラマで一生を終えたいのか 有名なファウラーが言ってたからそれに乗っかっておこうという
ミーハー根性丸出しでプログラマを名乗るのをやめていただきたい
プログラマなら自分で試して判断してもらいたい
ファウラーの戯言を正しいと仮定したときどういう結論が導かれるか
ファウラーのご託宣を間違いだと仮定したときどういう結論が導かれるか
実際に試して検証しないといけない
お前らがやってるのは小保方以下
ファウラーが言ってたやったと言ってるようなもの
まったく現実を見れてない
どっかの誰かが作ったなにかを盗んできて割烹着着て発表してるようなもの まあ俺は今は製薬系の大手企業でプログラマやってるから白衣着てプログラム書いてっけどな
SIにもいたことがあるが勉強になったぞ、お前らも食わず嫌い止めて
ハゲコンサルに騙されないだけの知恵を獲得したがいいぞ このスレで俺が一番声がでかい
俺が正しいってことなんだよ
体中から自信が溢れてくる >>49
有名なファウラーが言ってたからそれに反発する
俺クールっていう考え?w 違うね
ファウラーより俺の方が優れているという確信がある
自分の頭で考えない奴を俺はプログラマとは認めない > ファウラーより俺の方が優れているという確信がある
確信じゃなくて根拠を知りたいんだがw 俺の中にみなぎるこの自信が根拠だね
それ以上の説明がいるのかい >>56
バカかお前、頭の中にひなあられでも詰まってんのか
自信があるってことは自信を持つだけの人生経験を
積んできたってことは自明だろうが 自信に満ちた俺の熱いハートは外からみれば逆にクールに見えるだろうな
お前らに俺の余りあるクールさを分けてあげたいくらいだ
悪徳コンサルの手からお前らを救いたい 頭がクール
頭がクール
クール・クール・クルクルパー >59
ダニング=クルーガー効果って知っているかい? >>62
大規模開発もコンパイラの実装もやったことがない
雑魚がクソ禿げコンサルの戯言を金言として
無根拠に自分が優れたプログラマだと思い込むことでしょうか?わかりませんはい論破 1000行ひたすらループやら分岐やらが続いてるコードと
意味ある単位で、何してるのか自明な名前の関数にバラされてるコードだったら
考えるまでもなく後者のほうがわかりやすいな >>15
10000行超えててもコンパイルできるの?CompiledMethodの制限超えそう >>67
1000行だった。あとコメント抜いた行数? >>68
#linesOfCode のソースはこんな感じ。コメントは含むが空行は除く。
CompiledMethod >> linesOfCode
"An approximate measure of lines of code.
Includes comments, but excludes empty lines."
| lines |
lines := 0.
self getSource asString lineIndicesDo: [:start :endWithoutDelimiters :end |
endWithoutDelimiters > start ifTrue: [lines := lines+1]].
^lines >>69
念のためこの #linesOfCode というメソッド自身の linesOfCode は 8 を返す
(CompiledMethod >> #linesOfCode) linesOfCode "=> 8 " 自分をバカだと自覚していないバカが最も成長しない
熱意のあるバカは企業とって最も足手まといになる 英語できない日本人は、ちゃんとした名前の関数やメソッドを大量に作る心理的ハードル高いし
余計にダラダラ書いちゃいそう >>5の"highlight"メソッドの中身が"revese"というのは
ダイレクトにsmalltalkの流れを汲んでるObjective-Cなどをやってると
『クラスに命令(メッセージ)を送って動作させる』という思想が徹底してるから
ロボットに命令したら終わり(後は任せて追わなくていいように作れ)という
投げっぱなし前提思想と"人間が"何を自分で命令したか
後で明確にわかるように命令コマンド名を決めておけという
わかりやすい前提に基づいているのだけど、
まったく異なる思想でクラスや関数を捉えてる言語の側に住んでいると
「A=B=Cなら全部Aと書けばいいではないか!」で意図そのものが伝わらない。
そもそも自分がこいつに何をさせたか?という状態とコマンドの記述の話なので。 > まったく異なる思想でクラスや関数を捉えてる言語の側に住んでいると
どの言語のどの関数の話? smalltalkって見た目が最高にキモイな(褒め言葉) >>31
そもそも、>>1に長さが問題なんじゃないって書いてあるのにね。 長さが問題だっていうのなら単に関数を細切れにして
短くすれば問題解決になるはずだが
もちろんそんなことはありえないしな
ただ意図と実装の分離をちゃんと行えば
自然と関数は短くなる
短いからと言って良いと言い切れるわけではないが
長い関数であれば殆どの場合ダメと言っていいということ 古い言語だと短いけど訳がわからないコードもあるよね
昔のプログラマはオナニストばかりだったからコードが臭い >>80
たんに英語が読めないだけとかそういうことじゃなく? CやC++ができる人がObjective-Cのコード見て
「なにがなんだかわからん!変態だ!」って言ってたのといっしょじゃね?
そのまま永久に「Objective-Cは変態だかダメ!」って言い続けてたし。 長さが絶対的基準ではないだろうが長すぎるのはやはり問題。 Smalltalkのメッセージ式はお世辞にも短いとはいえないが、英語として読むにはぎり許容範囲
ただObjective-Cはそれに型情報も入れてさらに英語としても成り立たせようとする慣習があって長すぎ
それなのにXcodeにはつい最近まで補完がなかったってんだから信じられない >>82
Cしか知らないから、ぱっと見 >> と ^ がわからん
|a|は引数かローカル変数に見えた >>87
>> はそのメソッドが属するクラスを示すのに慣習的に用いられるものでメソッド定義時には使いません。
^ はリターンで Smalltalk 唯一の制御構文でもあります。
| a | がローカル変数宣言というのは合っています。
Smalltalk の式の文法は receiver message で、message は引数がないときはメソッド名そのまま、
引数があるときは、メソッド名に引数の数だけ含まれるコロンの場所で分断して、そこに引数を挿入する記法をとります。
たとえば、普通の言語(ただしメソッド名にコロンを含むことができると仮定)で obj.x:y:z:(a, b, c) という式は
obj x: a y: b z: c となります。ちなみに、Smalltalk ではメソッド名をメッセージセレクタ、あるいは短くセレクタとも呼びます。
メソッド定義は メッセージパーターン テンポラリ変数宣言 式 で構成されます。
メッセージパターンというのは、前述の式の message 部分と同じ記法でセレクタと仮引数を宣言するための部分です。
したがって、x: a y: b z: c | t1 t2 | t1 := a + b. t2 := c. ^t1 * t2 は、x:y:y: というメソッドを仮引数 a b c で定義したものになります。
このメソッドを定義を文字列で、たとえば compile: メソッドの引数としてクラスに送ってやることで、メソッドを定義できます。
Integer compile: 'x: a y: b z: c | t1 t2 | t1 := a + b. t2 := c. ^t1 * t2'.
1 x: 2 y: 3 z: 4 "=> 20 "
[:a :b | a + b] などというのはブロックと呼ばれる無名関数で、
引数はコロンを頭に置いたブロック引数宣言と処理内容を表わす式を | で区切って [ ] で括って記述します。
ブロックは第一級オブジェクトなので、代入やメソッドの引数にすることができます。 1000行の処理がザラとか言ってるやつ、registとか書いてそう。 誰でも簡単にパソコン1台で稼げる方法など
参考までに、
⇒ 『宮本のゴウリエセレレ』 というブログで見ることができるらしいです。
グーグル検索⇒『宮本のゴウリエセレレ』
CMRDMROXHN ☆ 日本の、改憲を行いましょう。現在、衆議員と参議院の
両院で、改憲議員が3分の2を超えております。
『憲法改正国民投票法』、でググってみてください。国会の発議は
すでに可能です。平和は勝ち取るものです。お願い致します。☆☆ ttps://martinfowler.com/articles/201803-refactoring-2nd-ed.html とても簡単な自宅で稼げる方法
参考までに書いておきます
グーグルで検索するといいかも『ネットで稼ぐ方法 モニアレフヌノ』
8GEWS ■ このスレッドは過去ログ倉庫に格納されています