- PR -

メソッドの量(行数)についてなのですが

投稿者投稿内容
unibon
ぬし
会議室デビュー日: 2002/08/22
投稿数: 1532
お住まい・勤務地: 美人谷        良回答(20pt)
投稿日時: 2003-07-01 16:20
unibon です。こんにちわ。

引用:

Wataさんの書き込み (2003-07-01 10:08) より:
それでも頑張って、せめて1メソッドが1画面におさまるようにはしています。


昔から疑問に思っているのですが、『1メソッドが1画面に収まるようにすると良い』、
というのはとても良く聞きますが、なぜなのでしょうか。
というのも、1画面に収まるとエディタ上でスクロールしなくても見ることができて、
エディタ上で見やすいから良い、という理由なのか、
それとも、1画面の文字数や行数が、
たまたま理解しやすいコード量の上限と一致しているだけであるのか、
の2つが考えられるからです。

前者ならば、時代と共に変化する環境、
特にディスプレイの大画面化・高解像度化につれて
コード量の許容値が増加しますが、
後者ならば、時代によらず不変です(80桁×25行がひとつの目安かも)。

それとも、そもそも『1メソッドが1画面に収まるようにすると良い』というのが
虚構なのでしょうか。
(株)ぽち
ぬし
会議室デビュー日: 2002/09/10
投稿数: 376
投稿日時: 2003-07-01 16:21
引用:

Wataさんの書き込み (2003-07-01 10:08) より:
Wataです。こんにちは。

私の場合ですと、メソッドが50〜100行ぐらいになると、
「うげぇ〜。かっこわるー」って気分になってメソッドの分割作業をはじめます。
最近はEclipseにおんぶに抱っこ状態なので、適当な処理の一まとまりを
選択して、「メソッドの抽出」実行!って具合です。



こんにちわ。

確かにメソッド、クラスの分割は設計的に美しいと思います。

しかし、たまに分割しすぎ?のものもあります。
そういうものは一つの処理フローを追うのにやたら時間がかかります。

・ん?ここで違うメソッド行ってるな、そのメソッドどこだ?
・お、ここでこういうことやってるわけね。ふむふむ
・おや、また違うとこ呼んでんな
・ん?今度は孫メソッドまで行ってるぞ。
・あ?今度は違うクラスを参照してんのか?どこだ・・?
・んで、このクラスはまた違うクラスのメソッドを・・
・んがーーーーー!

設計者からすれば頭の中にあるのでわかりやすいのでしょうが
設計をわかっていない人間が読むとエディタを何個も起動する
ハメになります。

わたしだけ?
がんも
会議室デビュー日: 2003/06/26
投稿数: 6
お住まい・勤務地: Osaka
投稿日時: 2003-07-01 17:18
がんも と申します。
私は先日面接を受けた時、
「最大何行のプログラムを作ったことがあるか?」
という質問を受けました。

そういうわけで、議題の
「何行ぐらいのメソッド、クラスを書いたことがありますか?」
とは少し異なるのですが、たまらずに書き込んでしまいます。お許し下さい。

私が思うに、大事なのは
 プログラム全体を見た時、システムの目的、実態を、簡潔に表現していて
 理にかなった機能分割がされているコード。
である事だと思います。

ご友人の方が面接されたところでは、理にかなった機能分割をした結果、
どうしても 「1000から2000行があたりまえだから」
となったのかもしれませんし、もしかしたらセンスが無いだけなのかもしれません。

私は、開発環境やプログラミング言語に関係なく「理にかなった機能分割」に優れた人や、その様なプログラムを見た時に「かっこいいな」と思いますが、多分今までそれらは、1000-2000行の塊りにはなっていなかったと思います。
やはり、ソースコードの分量も考慮して、機能分割してほしいですからね。

また、どれだけ規模が大きい開発であっても、所詮は地道な機能分割の繰り返しなので、自分自身が「最大何行のProgramを作ったことがあるか?」は気にしたことがありませんでした。
でも、もしだれかが一人で作った巨大ソースが「理にかなった機能分割」で成り立っているのを見たら、「最大何行」の部分で尊敬するんだろうな...。
Wata
ぬし
会議室デビュー日: 2003/05/17
投稿数: 279
投稿日時: 2003-07-01 19:04
引用:

unibonさんの書き込み (2003-07-01 16:20) より:

昔から疑問に思っているのですが、『1メソッドが1画面に収まるようにすると良い』、
というのはとても良く聞きますが、なぜなのでしょうか。
というのも、1画面に収まるとエディタ上でスクロールしなくても見ることができて、
エディタ上で見やすいから良い、という理由なのか、
それとも、1画面の文字数や行数が、
たまたま理解しやすいコード量の上限と一致しているだけであるのか、
の2つが考えられるからです。



『1メソッドが1画面に収まるようにすると良い』
これについては、別に誰かに言われたわけではないですが、
自然にそう思うようになりました。
自分の場合は主に前者です。さすがに25行を超えるメソッドは山ほどあります。
ただし、後者の理由も十分にありえるでしょう。

引用:

(株)ぽちさんの書き込み (2003-07-01 16:21) より:

確かにメソッド、クラスの分割は設計的に美しいと思います。

しかし、たまに分割しすぎ?のものもあります。
そういうものは一つの処理フローを追うのにやたら時間がかかります。



これはあるかもしれませんが、
理想は呼び出しているメソッドの内容を読まずとも、
処理内容が推測できるコードを書くことです。
そのためにはメソッド名、クラス名が洗練されていること、
標準APIに習ったインターフェースをしていること、
メソッドが高々100行程度であることなどが重要になります。

これが可能ならば、ひとつのメソッドを読み終えてから、
呼び出されている次のメソッドをトレースするという順序になり、
可読性は大幅に向上します。

ちなみに、ソースのトレースにもEclipseは大活躍します。
メソッドにカーソルを合わせてF3(or Ctrl+クリック)で
メソッドを開くことができます。Alt+←で前の表示箇所に
戻ることもできますので、ウェブブラウザのようにソースを
眺めることができます。

蛇足ですが、
> エディタを何個も起動するハメになります。
これから察するにエディタは秀丸あたりをお使いですか?
私はEclipse以前は稀杜氏のJCPadを使用してコーディングしていました。
タブエディタで、javaのコンパイル・実行が一発ででき、便利なGrepやファイラ機能を
備えていて、Grepやコンパイルエラーのメッセージから該当箇所にジャンプすること
ができます。ちょっと工夫すればAntと連携させて使うことも可能です。
エディタ派の人やIDEを環境の問題で使えない人にはぜひお勧めです。
unibon
ぬし
会議室デビュー日: 2002/08/22
投稿数: 1532
お住まい・勤務地: 美人谷        良回答(20pt)
投稿日時: 2003-07-07 13:01
unibon です。こんにちわ。

引用:

Wataさんの書き込み (2003-07-01 19:04) より:
引用:

(株)ぽちさんの書き込み (2003-07-01 16:21) より:

確かにメソッド、クラスの分割は設計的に美しいと思います。

しかし、たまに分割しすぎ?のものもあります。
そういうものは一つの処理フローを追うのにやたら時間がかかります。



これはあるかもしれませんが、
理想は呼び出しているメソッドの内容を読まずとも、
処理内容が推測できるコードを書くことです。
そのためにはメソッド名、クラス名が洗練されていること、
標準APIに習ったインターフェースをしていること、
メソッドが高々100行程度であることなどが重要になります。


チャチャですが、処理フローを追うと時間がかかるのも当然のような気もします。
『このクラスの main メソッドはなんて複雑なんだ。追っても追ってもキリがないぞ。』
となりかねません。
Wataさんがご指摘のように処理内容が推測できるコードにしておけば、
追っていく途中で打ち切ることができるので、追いやすいですよね。

引用:

Wataさんの書き込み (2003-07-01 19:04) より:
ちなみに、ソースのトレースにもEclipseは大活躍します。
メソッドにカーソルを合わせてF3(or Ctrl+クリック)で
メソッドを開くことができます。Alt+←で前の表示箇所に
戻ることもできますので、ウェブブラウザのようにソースを
眺めることができます。


やはり Eclipse などの「ブラウザ」があると、手間が格段に違いますね。
クラスを静的に眺める場合でも、実行時の挙動を眺める場合でも、
あるのとないのとでは負荷が10倍くらいは違ってきそうだと思います。

スキルアップ/キャリアアップ(JOB@IT)