トップページ⇒tech
522コメント208KB

共通化の線引がむずかしい

■ このスレッドは過去ログ倉庫に格納されています
0001大根2006/02/21(火) 23:58:00
プログラムの共通化は作業軽減&メンテナンス性向上の為に重要だとは思うんですが、
共通化の行き過ぎによるメンテナンスの低下が多くのプロジェクトで見られます。

処理A、処理B、処理Cがあったとして、この3つは横展開の関係にあります。
3つも実装するのは大変なので、全て共通化して実装した(methodX(A)を読んだら処理Aを行うイメージ)。
だが、メンテナンス作業を繰り返すうちに、If (処理Aの時のみ)...のような記述が増え、所謂マカロニソースになってしまった。

後々思うことは、
最初から処理A、処理B、処理Cは別々に実装すべきだった。
もちろん共通化すべき部分はあるので、下請け処理の共通部品は必要だが、
大元の処理そのものを共通化したのは失敗だった。

なんで、こんな失敗するんでしょう?
最初からA〜Cはほとんど同じ実装で済むと思っていたのが、
想定外のバグ、仕様漏れ、仕様変更等により、A〜Cが乖離した結果、マカロニ化してしまうんですね。
けれど、「想定外」のことを想定して設計なんてできないんですよ。

皆様、設計時にどこまで共通化すべきかという基準ってありますか?
0232デフォルトの名無しさん2006/02/25(土) 21:36:59
>>231
反論するなら中身を書くこと。

おまえのようなレスには、
「おまえの方が間違っている。」で十分だ。
0233デフォルトの名無しさん2006/02/25(土) 23:25:06
>>232
我が身見て・・(藁
0234デフォルトの名無しさん2006/02/25(土) 23:30:17
ところで、長い関数を分割するのって、ただの応急処置に過ぎないと思うんだが。
0235デフォルトの名無しさん2006/02/25(土) 23:59:54
>>234
public hoge(List list) {
 //ズラズラとソート処理
 //ズラズラと分別処理
 //ズラズラと整形処理
}
触りたくないと思わない?
適当な粒度で細分化した方が分かり易いよ。
単純な二分割三分割なら確かに無意味だけど・・・・・・
0236デフォルトの名無しさん2006/02/26(日) 00:23:41
一関数が長い奴のコードは、そんな簡単に分割できるような処理になってないな。
もっと緻密なコードになってるのが普通。
0237デフォルトの名無しさん2006/02/26(日) 00:25:18
>>223
というかね、下手に賢すぎるなんて言ったら、お前、
「俺は頭が良いんだ!」「俺は天才なんだ!」「俺は認められたんだ」
「俺は高く評価されているんだ」
と勘違いするバカがいるから気をつけろ。
そのことを>>220は警告してるんじゃないかと思う
0238デフォルトの名無しさん2006/02/26(日) 00:31:50
>>223
> 要するにまさに >70 のように、一つのメソッドが何でもかんでも抱え込んじゃった
> 「何でも屋」なメソッドの事。
どこが何でも屋だ。

AV機器の端子に喩えれば
昔の端子だらけのRGBケーブルみたいなもんだ。
今ならD端子一つを刺すだけで完了だが、
昔は何本も刺さなければならなかった。
それを何でも屋と名付けるなんて恥ずかしい。

> 初学者がよくやらかすんだよな。それで結局破綻して痛い目を見て
初学者という寄り、オブジェクト指向を否定するバカが
ああいうことをよくやっていた。システム系、信号処理系の
研究室にいた奴がC/C++でそれをやっていた。
「関数だけで十分だ!」と
言い張ってオブジェクト指向のことをろくに勉強しなかったために
メソッドの引数があんなに増えた。アホにもほどがある。
オブジェクト指向ができなくても、せめて構造体くらい使いやがれと。

> > 大体テストどおすんだよ。テストコードとか作んないのか?
> 気合だよ!ヽ(`Д´)ノ 今日、気合でテストデータ全部作ってやったよ!
> 漏れがんばった!ほめてほめて!!1
ちゃんとxUnit使ってやってるのか?
先にテストコードを書いて本番コードはスケルトンだけを書いておく
ってことをやるはずだが。「気合い」とか精神論持ち出すやつは
20年前の開発スタイルを押しつけるオッサンと変わらんよ。
こんな奴ばかりいるから日本のソフトウェア開発は後れを取っている。
製造業などのハードウェアだけは進んでおきながらソフトウェアに
関してはいい加減な奴が多い。これもハードウェアが威張って
「ソフトウエアはんて名前の通り柔らかいものだから簡単だろっ!」
とか解ったつもりになっているからいい加減になる。
0239デフォルトの名無しさん2006/02/26(日) 00:36:19
>>226-227
最悪だお前。
まさにブビ忠度炸裂だなw
せめてブビドトネト厨度を炸裂させた方が
高い評価を得られたのに。

それじゃif文が無駄に増えて煩雑になる一方だ。
せめてBefore Afterパターンや
Hook Operatorパターン、Template Methodパターン、
Stateパターンについて勉強して貰いたい。

これらのパターンについて調べれば
お前のやりたいことが叶うかもしれん

0240デフォルトの名無しさん2006/02/26(日) 00:38:36
>>234
チームで開発するときは
新たな修正が容易になるという利点がある。
ほかにも、いずれ同じ処理を
また書きそうなところがあると
見たときは分割するのもあり、
分割しておいたおかげでメソッドをコールするだけで
済んだ、と言う可能性もある。

0241デフォルトの名無しさん2006/02/26(日) 00:41:00
>>236
分割したくない理由はどうしてもパフォーマンス
やリソース節約を重視したいとき、だろうな。

それ以外に考えられるか?
それらを考えなければ、積極的に分割すべきだと思う。
分割はそう難しくない。言語にも夜だろうけれども。
「分割して統治せよ」はオブジェクト指向設計原則でも有名な話だ。
詳しくは "Design By Contract" についてググってくれ


0242デフォルトの名無しさん2006/02/26(日) 00:55:19
DBCって事前条件や事後条件を決めてカッチリとしたコードを組んでいく
Eiffelみたいなやり方だろ。分割と何の関係があるんだ?
0243デフォルトの名無しさん2006/02/26(日) 00:56:11
>>241
複雑で長い処理が出来上がるパターンとして、不具合や仕様変更に対応するために、
本来はそのメソッドに入る前でやるべき処理を全部そこで辻褄合わせ的に行ってる
というの多いわけで。
根本的には、設計を見直して適切な場所で適切な処理を行うように修正するべき。
0244デフォルトの名無しさん2006/02/26(日) 01:03:09
>>243
それをプライベートメソッドに押し出してやるだけでも随分すっきりする。
時間は掛からないし、そうできない理由というのも思いつかない。
0245デフォルトの名無しさん2006/02/26(日) 01:10:39
できないんじゃなくて、もっとまともな解決方法を考えるべきと言ってるだけなんだけど。
どうしようもないのならとりあえずやってもいいだろうけど。
0246デフォルトの名無しさん2006/02/26(日) 02:24:14
>>244
デグレしても、「あらら」で済む世界ならそうだろうね。
0247デフォルトの名無しさん2006/02/26(日) 04:16:10
結局長い関数は、機能ごとに適度に分割しろってことじゃん。
前処理とかも同じ事だろ。

たとえば、>>235の例のようにさ。
一つの関数で、ソートと分別と整形処理をやっていたら、
普通はソート関数と、分別関数と整形関数に分けるだろ?

それとも、このソート処理はhoge関数でしか使用しないから、
関数にせずにhoge関数にずらずら書くべきと言う人がいるのだろうか?

やっぱり適度な粒度で細分化するべきだよ。
ソート関数(前処理)、分別関数(中処理)、整形関数(後処理)に分けるべきだよ。
0248デフォルトの名無しさん2006/02/26(日) 04:20:59
>>245
> できないんじゃなくて、もっとまともな解決方法を考えるべきと言ってるだけなんだけど。
おまえ、会議で何か結論出るたびに、
「もっとまともな解決方法を考えるべき!」と言って、
なにか聞かれたら、「それを考えるのはあなたたちだ!」と言っているだろ?w

その方法使えば、どんなバカでも解決方法が無くても「もっとまともな〜(略」で否定できるなw
それじゃ、世の中やっていけないよ。説得力ないし。
自分でもっとまともな方法を提案してこそ意味がある。出直して来い。
0249デフォルトの名無しさん2006/02/26(日) 04:26:37
>>246
リファクタリングって知らない?
関数に分割する作業ってのは、リファクタリングの一つだよね。

リファクタリングにも取り上げられているように、これはやるべき作業。
おまえが言っているのは、「デグレが怖いから汚いまま放置するべきだ」と言っているに過ぎん。

俺だったら、そんなマイナス思考じゃなくて、デグレなく作業できる
リファクタリングブラウザがもっと成熟して普及してくれとコメントするよ。
0250デフォルトの名無しさん2006/02/26(日) 09:16:28
>「デグレが怖いから汚いまま放置するべきだ」
言っておくが、完成してるなら触るなよ。くれぐれも触るなよ。
寝た子は起こしちゃいかん
0251デフォルトの名無しさん2006/02/26(日) 09:21:09
>>248
自分の意見に合わない提案は目に入らないタイプ?
0252デフォルトの名無しさん2006/02/26(日) 09:23:19
>>241
>それ以外に考えられるか?
分割できないほど、密接に絡み合ってるコード・・・の意味だと思うよ

>public hoge(List list) {
> //ズラズラとソート処理
> //ズラズラと分別処理
> //ズラズラと整形処理
>}
こんな、単純な例なら誰も苦労しない
ある条件で、ソート順が変わって、更に加えた条件で分別処理が分岐して・・
とか、大抵は「if]ネストの嵐になってる、そう言った「関数」は
1メソッド=1責務なんて、最初から頭に無いんだから、そう言うの作る人は
0253デフォルトの名無しさん2006/02/26(日) 11:24:12
>「デグレが怖いから汚いまま放置するべきだ」
完成してテストする前ならある程度改修する必要があると思われ?
0254デフォルトの名無しさん2006/02/26(日) 12:39:45
>>248 >>249
学生さん?
あんな酷いことになってる関数・クラスに、まともなユニットテストが備わってると思うのかい?
あんな酷いことになってる関数・クラスが、まともにユニットテストが書けるほどTestableになってると思うのかい?
ユニットテストなしにリファクタリング?そりゃ、大層気持ちが良いだろうねぇw
デグレしても、「あらら」で済むんなら。プロではあり得ないけど。

>>253
そういう場合もあるだろうが、
あんな酷いことになってる関数・クラスは、たいてい
デスマでそんな事する余裕なんかカケラも無い状態で生まれると思われ?
0255デフォルトの名無しさん2006/02/26(日) 12:45:39
なに醜いクラスを自慢しているんだよw
なにデスマを自慢してるんだよw
0256デフォルトの名無しさん2006/02/26(日) 12:50:59
なんで完成してから修正の話になっているんだ?
普通に作っているときに、長すぎる関数は一定の機能、
たとえばソート処理や前処理で普通に分割するだろ。

しない奴要るというのなら手を上げて。
0257デフォルトの名無しさん2006/02/26(日) 13:00:42
>>1の時点でメンテナンスフェーズでの問題なわけだが。
0258デフォルトの名無しさん2006/02/26(日) 13:02:17
幸いデスマというわけじゃない。がこのまま放置するともっと悪くなるみたいな予感
そして、こういうものは「しない奴」がいて、「する奴」が後で発見する。
「しない奴」はただ純粋に方法を知らなかったりする。
「しない奴」はこのスレを見ないと思うがどうか?
自分が神経質すぎるのだろうか・・・
0259デフォルトの名無しさん2006/02/26(日) 13:03:48
>>256
うん、普通は分割するね。
でも、集団で開発してると、中には分割しない人もいたりするんだ。
そういう人が作った汚いコードをどうしようかという話。
0260デフォルトの名無しさん2006/02/26(日) 13:22:06
> そういう人が作った汚いコードをどうしようかという話。
そういう話じゃなかったはずだが?
0261デフォルトの名無しさん2006/02/26(日) 16:37:23
まあ、しない奴も多いわけで
原因はいろいろあるけど、ひどいのがプロトタイプを作った奴が
分割してなくそのままコピーして作ると酷いことになることある
実際ソースレビューしてる現場って何%あるんだ?
漏れはその現場に入ったことないな
あとは仕様書通りにメソッド、クラスがないと怒り出し設計者様

1メソッド2000実ステップは泣けた
0262デフォルトの名無しさん2006/02/26(日) 17:16:59
ソースレビューやってても、2000ステップ関数なんてざらにあったりするわけだが。
むしろくそまじめにソースレビューやるようなところのほうが酷い気が。

親会社の社員が作った関数なんで(仕様を満たしてる以上)文句言えなかったり、
関数作るのにも処理フロー書いてSEの許可をもらう必要があったり。
0263デフォルトの名無しさん2006/02/26(日) 18:30:24
うちはソースレビューするけど2000行はないなぁ。
そもそも、それだけあったらレビュー前に一言「帰れ」で終了だし。
0264デフォルトの名無しさん2006/02/26(日) 18:38:32
お前らソースレビューなんてやってんの?
0265デフォルトの名無しさん2006/02/26(日) 18:39:32
>>262
なにを”
俺はまじめにソースレビューする親会社側だが、
2画面以上のメソッドは書かないし当然俺が入ったレビューではそんなの弾くぞ。


といいつつ、今正しく動くことしか考えてない連中もたしかにいるな…。
0266デフォルトの名無しさん2006/02/26(日) 18:39:53
>>262
学生さんですか?
0267デフォルトの名無しさん2006/02/26(日) 19:44:31
>>266
お前こそ学生だろw
0268デフォルトの名無しさん2006/02/26(日) 20:34:30
親会社側だが、弾かれた側ってどう思ってるんかね
ソース見た時点でかなり汚れてて、指摘難しかったりするとき。自分で書き直したくなる。
規約とか綺麗なコードの書き方とか低レベルな指摘するのはメンドイ

今動くしか考えてない人に仕様変更言って見積もりさせると、そんなにかかるの?みたいな
0269デフォルトの名無しさん2006/02/26(日) 20:53:59
指摘しても絶対に直らないって分かる時はどうすればいいの?
0270デフォルトの名無しさん2006/02/26(日) 20:57:57
俺も入社間もなくは直したいタイプだったが、
そのうち、どうでもよくなったよ。
いや、全然よくないんだが、動いてるソースをいじることは
出来るだけしない。

はっきりいってリファクタリング出来る内容じゃない。
0271デフォルトの名無しさん2006/02/26(日) 21:01:33
とにかく動くようにしてという依頼受けたら、
とりあえずパッチ当てまくって動くように修正していくしかないわなぁ。
全体の構造解析してたらそれだけで一ヶ月とかかかっちゃうし。
0272デフォルトの名無しさん2006/02/26(日) 21:15:27
と言うかね、「綺麗なソース」に価値を見出せない
有り難味が解らない人には何を言っても無駄・・
な気がしてきた、最近
疲れたよ・・・
0273デフォルトの名無しさん2006/02/26(日) 21:55:38
頭にくるんだよね。こっちの分は最初から保守性重視で書いているから
大元の仕様が変わっても修正工数が少ないから半端仕事にしかならない。
なのに「動けばいい」プログラムを書く害虫は修正工数分請求してきやがる。
運良く(非常に緩い)コーディング規約を守ってない関数があったから
減額してやったけど。
0274デフォルトの名無しさん2006/02/26(日) 22:02:43
そうなんだよね
下手に書けば書くほど、修正工数増えて「売上」が上がる
何か世の中間違ってる
0275デフォルトの名無しさん2006/02/26(日) 22:07:46
>>268
> 規約とか綺麗なコードの書き方とか低レベルな指摘する
> のはメンドイ

綺麗なコードはいざ知らず、コーディング規則は発注する時
に納入条件として指示するだろ。

指示も無しに、気に入らないから直せと言うのは親会社を傘
に着たわがままだよ。

>>273
「仕様を変えたことで外注さんが修正工数要求したから頭に
きてる。」

おいおい、そりゃ当然だろ。
どんな契約の仕方してるんだよ。
0276デフォルトの名無しさん2006/02/26(日) 22:12:35
>>275
行間を読もう。

>268は「指示もなしに直せ」なんて話はしていないし、
>273も請求してくること自体を論っているわけではない。
0277デフォルトの名無しさん2006/02/26(日) 22:16:13
>>276
冷静なレス乙
0278デフォルトの名無しさん2006/02/26(日) 22:16:19
>>273
そんなくだらないことを理由に減額してたら、
質の悪い害虫しか寄り付かなくなるぞ。
「本質的にコードの質が悪い。動けばいいってもんじゃない」
というのをちゃんと伝えとけ。
0279デフォルトの名無しさん2006/02/26(日) 22:18:59
保守のしやすいコードを書けって言われても
???な奴はどうすればいいか
0280デフォルトの名無しさん2006/02/26(日) 22:20:55
開発から外せば?
0281デフォルトの名無しさん2006/02/26(日) 23:51:18
>>276
はっ? 仕様書の行間を読めって言うエスパーをご所望の
方ですか?

> >268は「指示もなしに直せ」なんて話はしていないし、

>>268 がそういう指示をしてるってこと?
だったら、「低レベルな指摘するのはメンドイ」なんて
ことはないだろ。「納入条件に合うもん持って来い」の
一言で済むと思うけどな。

> >273も請求してくること自体を論っているわけではない。

「害虫は修正工数分請求してきやがる。」って言うのは、
請求自体を ("も" かも知れないけど) を問題にしてるわ
けじゃないと…、なかなか凄い理解力の持ち主ですね。(w

>>278
同意。
ただコードの質と言うものはなかなか規定しづらいので、
>>279 見たいなところがでてくるのは致し方ないのが現実。
>>280 みたいにできればいいけど、なかなか色々な諸事情
で難しいことも多いから、根気良く外注さんと話し合うしか
ないんだよなぁ。
0282デフォルトの名無しさん2006/02/27(月) 00:04:56
そこでメトリクスツールの出番ですよ。
ただし、スクラッチ開発以外ではそもそも計測困難という諸刃の剣。
0283デフォルトの名無しさん2006/02/27(月) 01:18:25
>>282
いや、うちもメトリックスツールとか静的コードチェッカ
とかの導入を検討してるんだけど、いい (と思える) コー
ドと、ツールが示す結果との相関関係がなかなか見出せな
いんだよね。まあ、こっちも地道にデータを収集しかない
と思う。
0284デフォルトの名無しさん2006/02/27(月) 01:32:30
例外が多いとかじゃなくて、相関関係すら見いだせないのか?
0285デフォルトの名無しさん2006/02/27(月) 01:59:40
ツールはツールに過ぎない。
そもそも「いいコード」が定義可能ならばそれを規約とか検収条件にすれば良いでそ。
>>283
メトリクスの使い方は正しいとは思うけど。
「相関関係が存在する」という根拠は?
0286デフォルトの名無しさん2006/02/27(月) 02:04:15
導入したことがないから訊いてるんだが、
「相関関係がない」ってのは、どんな糞コードとどんな美麗コードを比べても、
どちらが良いと判断されるかは完全にランダム、ってことだよ?
そこまで使えないの?
0287デフォルトの名無しさん2006/02/27(月) 02:05:35
いつからコンピュータに美的感覚が判断出来るようになったんだ?
0288デフォルトの名無しさん2006/02/27(月) 02:12:11
ちゃんとしていて美しいコードに共通する数的性質を、
ソースについて測定するメトリクスについての話をしてるんだが。
その数的性質が、目的通りコードの美しさに相関してるかどうかという話をしてるんだが。
0289デフォルトの名無しさん2006/02/27(月) 02:15:58
ちゃんとしていて とか、 美しい とか、定義が曖昧過ぎて数値化して扱えないのでは?
0290デフォルトの名無しさん2006/02/27(月) 02:42:23
まず、メトリックスについてググって言おうね。
0291大根2006/02/27(月) 05:43:15
>>249
そうですね。
>>1で問題としたのはデグレという概念は知ってるが、リファクタリングという概念は知らないプロジェクトですね。
テストプログラムによる自動テストを導入して、各メソッドはこのテストさえクリアしていればバンバン変更していいという状態なら苦労しないのですが。

ただし、仮にテストプログラムに漏れがあって、想定外の動きをしていて、結果的にシステムが正常に動いていた場合、
その想定外の動きの部分が、メソッド修正により変わってしまい、結果的にシステムに異常が発生してしまう(デグレ)可能性があります。
とはいえ、それは自動テストが導入されていなくて、マカロニ修正を繰り返した場合でもデグレの可能性はあるわけで、、、

うーん、リリース前はどんどんリファクタリングやって、
リリース後は大幅な修正でない限り、マカロニ修正でいいんじゃないかと思う。

あくまで私の経験したプロジェクトでの話しですが、最初から最後までリファクタリングの概念がないことが問題なんだと思います。
それに、本番でデグレを起すと本当に大問題になるプロジェクトか、あららで済むプロジェクトかで
話は変わってくるかもしれません。
0292デフォルトの名無しさん2006/02/27(月) 09:17:16
休み明けに見にきたら、ついにメトリクスにまで踏み込んでましたか。
あんまりツール知らないのでたいしたコメントはできませんけど、相関関係以外に、
「どこまで」を正しいとするか、の判断も難しいと思いますよ。

>>291
リリース後に広範囲に影響するリファクタリングの危険性はわかりますけど、
マカロニ修正を肯定してしまうのも危険かと。どっちが正しいじゃなくて、中間あたりに
落ち着くんじゃないかな。
0293デフォルトの名無しさん2006/02/27(月) 13:02:52
ttp://www.google.co.jp/search?hl=ja&ie=Shift_JIS&oe=Shift_JIS&q=%83%7D%83J%83%8D%83j%8FC%90%B3&btnG=Google+%8C%9F%8D%F5&lr=lang_ja
0294デフォルトの名無しさん2006/02/28(火) 00:00:59
>>281
まあ、落ち着けw
取り合えずエスパーじゃない人にも分かる様に
説明できる術を見につけてくれww
0295デフォルトの名無しさん2006/02/28(火) 02:20:42
>>281
>なのに「動けばいい」プログラムを書く害虫は修正工数分請求してきやがる。

これは、綺麗にコード書いていたら、3日で終わるような改修作業を、
外注さんが汚いコードで書いたが故に1ヶ月も掛かります。とかいう請求してきたことに
腹を立ててるって意味じゃないの?

俺も部外者だから実際はどうだかわからんがな。
0296デフォルトの名無しさん2006/02/28(火) 02:38:31
>>279
外注だったら、こういう人は外すしかないだろうね。

プログラマって建築業と似たようなもんだろ。建てればいいってもんじゃない。
地震に対する強度とか、欠陥住宅を建てないようなスキル程度は、
プロとして金もらって働いている以上は必要だと思うからね。

プログラマだったら保守しやすいコードくらい書けないと、働く(金を貰う)資格は無いと思う。
社員だったら教育しなおすか、適正なしとみなして違う部署に飛ばすしか。

まあ、本当に「保守できそうにないコードを書く人」の場合だけど。
0297デフォルトの名無しさん2006/02/28(火) 12:08:54
>>296
それ以前に数年前の自分の書いたソースに修正を加えられないとか1行直すだけなのに数ヶ月掛かりますとかアホか
鶏じゃないんだ一度書いたら忘れるな
0298デフォルトの名無しさん2006/02/28(火) 12:30:06
十代の頃とは違って三ヶ月前の自分は他人
0299デフォルトの名無しさん2006/02/28(火) 12:38:50
>>297
一行直すだけなら、自分でやればいいのに。
0300デフォルトの名無しさん2006/02/28(火) 12:41:26
>>297
>鶏じゃないんだ一度書いたら忘れるな
神

俺なんか三日前の夕飯も思い出せない。

>数年前の自分の書いたソースに修正を加えられない

何がおきるかわかんないからね。ソースを書き直すのより
本当はテストの手間を惜しんでるんだと思う。
0301デフォルトの名無しさん2006/02/28(火) 15:16:17
>>299
そこは責任範囲とか言う大人の事情って奴ですよ
0302デフォルトの名無しさん2006/02/28(火) 22:30:18
>>294
丸一日前のレスにレスするんだから、お前こそ落ち着いて書けよ。

>>295
そこで腹立てるぐらいなら、なんで最初のコードを受け入れる時
に文句を言わないのかと。

まあ、程度問題だからこれ以上は具体的なコードとかがないと何
もわからんけどね。
0303sage2006/03/01(水) 03:51:07
>>300
夕飯は忘れても良い。
でも、自分が書いたソースは忘れない。プロならば。
0304デフォルトの名無しさん2006/03/01(水) 04:37:53
>>296
それは、そういう規約を作らないとダメ
技術者個人の力量に任せていては保守のしやすいコードにはならない
0305デフォルトの名無しさん2006/03/01(水) 06:04:57
>>303
暇なんですね
0306デフォルトの名無しさん2006/03/01(水) 09:55:28
>>303
プロは、自分の記憶なんてあてにしない。
0307デフォルトの名無しさん2006/03/01(水) 12:50:22
いかに覚えておくかではなく、いかに思い出せるかがプロ。
コメントはそのためにもある。
0308デフォルトの名無しさん2006/03/01(水) 12:53:21
覚えておかなくても理解できるコードが理想だけどな。
自分の記憶は他人と共有できないしw
0309デフォルトの名無しさん2006/03/01(水) 13:18:01
誰もドキュメントを書くと言わないところが素晴らしい。
もちろん俺も書かない。
0310デフォルトの名無しさん2006/03/01(水) 13:26:56
>>309
コメントを適切に埋めておけばDoxygenが作ってくれるから自分ではドキュメントを書かない。
0311デフォルトの名無しさん2006/03/01(水) 13:57:02
>>309
プログラムが、どのような業務・役割を担っているかっていうSEレベルの書類は書くけど、

ソースコードがどのような設計になっているかっていうプログラマレベルのはあんまり書かないなぁ。
大体、技術屋だと見てくれないし。まずコードから見やがるし。

共通関数作るとか、ネットワーク処理で独自のプロトコル作るっていうなら書くが。
0312デフォルトの名無しさん2006/03/01(水) 14:00:32
>>304
規約つくっても、下手なコード書く奴いるじゃん。
500行足らずで書けそうなコードを、1000行とか2000行とか書く奴。

もう最近はおっさんになったので300行以上超えるソースは見る気しない。
0313デフォルトの名無しさん2006/03/01(水) 20:37:13
300百行で何が実現できる
0314デフォルトの名無しさん2006/03/01(水) 20:38:07
>>313
百イラネ
0315デフォルトの名無しさん2006/03/01(水) 20:43:34
50行以内を目安に書いてるけど、どうしようもない場合は80行以内には抑えてるな
03163122006/03/01(水) 22:04:50
>>313
あっ、1ファイル=300行っていう意味ね。
ファイル数はいくらあってもいいけど。

最近は関数も40行超えると見るのだるい。駄目だ俺。
0317デフォルトの名無しさん2006/03/01(水) 22:28:08
いや、分かる気がする。
メソッド内のロジックを図化する仕掛けはないからな。
関係を理解するのも面倒臭い。
0318デフォルトの名無しさん2006/03/02(木) 11:45:59
PADの自動生成ツールってないかね
0319デフォルトの名無しさん2006/03/02(木) 12:04:15
>>318
昔見たけど、アレ使えネ
0320デフォルトの名無しさん2006/03/02(木) 14:58:18
自動生成にはXDocletやEclipseのSimteecぷらぐいん
を使え
0321デフォルトの名無しさん2006/03/02(木) 15:23:20
ドキュメント書かなくなったな〜。
書いても自分も含めて誰も読まないし。
最近は成果物にドキュメント不要の会社が増えたような気がするけどどう?
0322デフォルトの名無しさん2006/03/02(木) 17:06:05
>>321
PGと対応するドキュメントはソースからの生成で可って会社は増えたね
どうせ顧客側は見ないと言うか、見ても解らないってのが本音だろうが

0323デフォルトの名無しさん2006/03/02(木) 20:21:07
ソースコードから生成できるドキュメントは
ソースコードから生成すべきである。

ソースコードに対しての補足ドキュメントが必要なら、
それはソースコードに書くべきである。
0324デフォルトの名無しさんNGNG
アジャイルソフトウェア開発の奥義だったか忘れたけど
それっぽい話があったね。

まさにJavadocやXDocletのことだね。
0325デフォルトの名無しさん2006/03/03(金) 21:18:27
>>1は何か勘違いしてないか?
共通化って考え自体が間違っている。
その仕様を明確にして関数なりメソッドなりを書く。呼び出し側の事など気にせずに。コンパクトに。
そしてそれが、再利用されるだけ。
0326大根2006/03/03(金) 21:19:49
趣旨がずれてきている。
リファクタリングうんぬんじゃなくて、共通化の線引きのコツを聞いてるんだった。
”最初”にどうやって設計するかを。
0327デフォルトの名無しさん2006/03/03(金) 21:29:13
同じことを3回やってるなと思ったとき。
0328デフォルトの名無しさん2006/03/03(金) 21:51:16
テンプレートメソッドパターンとかストラテジパターンとか、
”必要になってから”でも設計変更できるんじゃね?
0329デフォルトの名無しさん2006/03/03(金) 21:59:26
カン…?

共通処理を書いていて「だるっ」って気分になってきたらたいていやり過ぎ。
そのまま継続してもどうせ無駄なので、すっぱり捨てて観点を変える。
0330デフォルトの名無しさん2006/03/03(金) 22:18:10
共通化なんて最初から考えなくて良くないか?

初回からまともな設計をするのは困難ゆえ
リファクタリングが発明されたと思う。
0331デフォルトの名無しさん2006/03/04(土) 00:45:08
>>330
激しくその通りなんだが、それに付いて来れる人は、多分少数派
最初からカッチリ決まってないと、コード書けない人意外と多い
■ このスレッドは過去ログ倉庫に格納されています