トップページ⇒tech
854コメント333KB

オブジェクト指向は戦場では必要無し その3

■ このスレッドは過去ログ倉庫に格納されています
0001うつつつつNGNG
前スレがめでたく止まったようなので、その3
引き続きOO厨とアンチOO厨の血で知を笑う戦いきぼ。

その1 http://pc.2ch.net/test/read.cgi/tech/1011997945/
その2 http://pc.2ch.net/test/read.cgi/tech/1013266554/

0757デフォルトの名無しさんNGNG
>>756
なんかタイトルと離れた話題だけど、
数千行(3千行程度)のプログラムとしての設計書はソース自身になるように作るのが普通では?
仕様書ならともかく、設計書を別に作らされてるってかわいそうとしか思えないのだが
0758デフォルトの名無しさんNGNG
「ソースが仕様書」は、作ったやつの一人よがりの場合が多い。
きちんとした書式の設計書でなくていいから、どんな作りになってるのか、メモくらいのこせ。
0759デフォルトの名無しさんNGNG
>>758
コメントで十分では? :)
0760デフォルトの名無しさんNGNG
十分だよなあ いったい何が欲しいの?
0761デフォルトの名無しさんNGNG
設計の概念の無いやつのコメントなんて、信用できるかよ(w
そんなやつのなら、だらだら書いてたら数千行になっちゃったようなクソコードだろ。

せめて、「どんな作りになってるのか」くらい書いとけ、ソースの先頭でもいいから。
それも必要無いようなのは、コメントもいらん。
一目でクソだとわかるほうが、捨てる判断もしやすいからな。
0762デフォルトの名無しさんNGNG
>>761 たった3千行なら、どんな作りになってるかくらい見たら判るだろ?
 どんな言語で開発してるんだ? もしかして素のbasicか?

そんなキミにいいこと教えてやろう アセンブラなら ':' をgrepしろ
pascal なら procedure / function で grepすればいい
cなら一度コンパイルしてマップファイルを見ればいい
0763デフォルトの名無しさんNGNG
>>762
数千行程度なら、いわゆる紙の仕様書は要らんと思うなぁ。

構造体とグローバル変数、それに関数の頭に簡単なコメントがつけてあれば
間に合う。それでは間に合わない腐ったコードもあるけど、それはコメントが
あってもやっぱりダメだし(w
0764デフォルトの名無しさんNGNG
>>761 設計の概念が無いって変な言葉だね

結局 自分のスタイルと違う設計は解読し難いというだけだろ。それは結局勉強不足さ。
0765デフォルトの名無しさんNGNG
そして新人が育たないっ、と。
0766デフォルトの名無しさんNGNG
つか、設計についてのコメント残さないと、手離れ悪いから、いや。
参考になるURLだけ書いとく事もあるけど、勉強しろゴルァって
言うよりも、ソースの先頭に全部書いてあるから読めゴルァ
のほうが、手離れがいい。
勉強不足なやつに、いちいち聞かれるの、うざいし。
0767デフォルトの名無しさんNGNG
>>765-766
別に新人教育のためにプログラム書くわけじゃないし。
0768.NGNG
コメントなんて無くてもわかるようなプログラムを書け。
0769デフォルトの名無しさんNGNG
>>768 でも、ちょっと普通じゃない使い方してたらコメントは欲しいな
0770デフォルトの名無しさんNGNG
>>761
> 設計の概念の無いやつのコメントなんて、信用できるかよ(w
> そんなやつのなら、だらだら書いてたら数千行になっちゃったようなクソコードだろ。
設計書を書かない奴と設計書を書けない奴を混同する奴の方が信用できない。
常に設計書を書かなければ気が済まない強迫観念をもったキチガイの方が信用できない。

設計書なんてエレベータみたいなもの。
 3階建ての民家にあるのは馬鹿
 5階建てくらいのマンションにはあれば便利だが、無くとも何とかなる。
20階建て以上もある高層建築にないのも馬鹿

3000行ほどの小さなプログラムも組んだことのない
新人君 or 学生君ならば設計しといたほうがいいと忠告しておく。
0771デフォルトの名無しさんNGNG
設計書書けなんて言ってないんだけどなぁ。
どんな作りになってるかのメモくらい残せよって言ってるんだが。
物作りするとき、走り書きくらいするだろ。
それがあとでコード読む手がかりになるなら、残さない理由が知りたい。

あ、もしかして、3000行程度のプログラムが脳内設計で書ける自慢?
ならしょうがないな。
おれがわるかったよ。

0772デフォルトの名無しさんNGNG
>>771
行数で語るから、話が混乱するんだと思うが。

べつに 1 万行でも単純なプログラムなら要らんし、百行でも複雑な
アルゴリズムを使ってるなら参考文献なり具体的な説明なりを残さ
ないと、後で自分が困る。

それだけだろ?
0773デフォルトの名無しさんNGNG
たとえば円を描くルーチンがあったとして、円を描くアルゴリズムまで説明を書くか?
0774デフォルトの名無しさんNGNG
3000行の円を描くルーチンなら、説明いるかも(w
0775デフォルトの名無しさんNGNG
>>773
Win32 あたりで既存の API を呼び出すだけなら書かない。

そうではなく、整数中点円スキャン変換アルゴリズムを自前で実装してる
なら、関数の解説(これは引数で指定された点を中心とする半径 n の円
を描く、云々)と、アルゴリズムに関する参考文献か解説を書いておく。
0776デフォルトの名無しさんNGNG
>>770-771
記憶力が良いか頭がイーかたなんでしょう。
私は1月前に書いた自分のコードが
コメント無しでは読めません。
0777デフォルトの名無しさんNGNG
上の方にドキュソな奴がいると、やれ「全ての関数について」関数仕様書を
書けだの、その関数仕様書には「処理概要」とかいって、ソース見ればわかる
制御構造とか、下手すりゃフロチャートまで書けとか、そのくせ関数名は
命名規則で8文字以内とか、そんな経験があると、「ドキュメントなんかいらん!!」
と言いたくなるよな(藁

だけど、ここで出てるのは、そういう定型的なドキュメントじゃなく、
どこがどうなっているかの概略を説明する簡単な文書だろ?

もちろんどんなプログラムかによるけど、3000行なら、A4 1〜2枚くらいは
説明書があったほうがいいと思う。

コメントでいいという意見もあるようだけど、コメントはソースの
「その場所」に関する説明だから、全体を概観する文書は、やっぱ別に要るよ。


0778デフォルトの名無しさんNGNG
例え3000行程度の小さいプログラムであっても、例えばどこにトイレがあって
どこが居間でどこが台所なのか、台所から今に行くにはどうすればいいのか
という事くらいは、(後でメンテナンスするつもりなら)書いておいたほうが
いいと思われ。

その3000行を、クラスなりなんなりで分割したそれぞれが、ちゃんと「居間」
であったり「トイレ」であったりするなら、それ以上の詳細を説明する文章
までは要らないと思うが。

3000行がmain関数一本と言うアホなプログラムじゃなければ、そういった
メモには価値があると思われ。
0779デフォルトの名無しさんNGNG
>>776
これって結構本当。
詳細設計がちがちでなければ、書きながら
考えてるし。
0780デフォルトの名無しさんNGNG
777のいう「概略を説明する簡単な文書」はなんと呼べばいいんでしょう?このまま?
自分は大昔からこれを書くようにしているので、馴染み深いのですが、
他の人はそうでもないようです。
0781デフォルトの名無しさんNGNG
>>780
設計概要説明書。
0782デフォルトの名無しさんNGNG
3000行で文書が必要という人は、どの程度の文書を書いてるのか興味あるなぁ。
ソースと一緒に公開してくれる人はいないかな。。。
0783 NGNG
オブジェクト指向は結局何も超えられなかった。
これに尽きる。
この方向でさらに突つきまわしても何も出てこないだろう。
OOブームを冷たい視線で眺めていた開発者達は今こそ見えてきた
頂上を目指す。
0784デフォルトの名無しさんNGNG
勉強始めた頃はメモを書いてからコードを書いていた
そのうちコードを書きながらメモを書くようになった
今は、行分割エディタでコメント部にメモを書きながらコードを書く
0785デフォルトの名無しさんNGNG
> 物作りするとき、走り書きくらいするだろ。
> それがあとでコード読む手がかりになるなら、残さない理由が知りたい。
C言語のプログラムだという前提で言うと
ディレクトリ構成でシステムの構成と階層を示している。
ファイルでモジュールを示している。
ヘッダコメントでそのモジュールの役割を示している。
includeで各モジュール間の依存関係を示している。
関数名で機能を示している。
ややこしい場所にはコメントを入れる

他に何が必要?GNUではこれで数万行を超えるプログラムが
何の問題もなく作られている。

もちろん、大規模なプロジェクトの場合、ドキュメントが一切ないのは
太平洋を横断するのに地図を持たずに航海するのと同じくらい無謀

だが、近所を散歩するのに地図を持って散歩する馬鹿はいまい
0786デフォルトの名無しさんNGNG
(´-`).。oO(そんなに必死に自慢しなくても…)
0787デフォルトの名無しさんNGNG
(´-`).。oO(>>786はなにをどんな自慢だと思ったんだろう…)
0788デフォルトの名無しさんNGNG
(´-`).。oO(設計のメモ残す必要無しって自慢してるやつが1名、自作自演ごくろうさま…)
0789デフォルトの名無しさんNGNG
ついに論理的な発言ができなくなって
感情的な1行煽りしかできなくなった約1名に捧げる

「なんでこのスレにしがみついてるの?」
「なんでこのスレにしがみついてるの?」
0790788NGNG
(´-`).。oO(まさに、オマエモナー)
0791788NGNG
俺は設計書が必要だとは一度も言ってないんだがなぁ。
作り始めに簡単なメモくらい書くだろ、それを残さない理由が知りたいって言ってるんだが。
無くても大丈夫とか、GNUでは大丈夫、は理由にならんだろ。
だから脳内設計で物作りが出来る自慢にしかならないのに…

ま、いいや、「あったほうがいい」っていう意見がいくつか出てるから。
0792789NGNG
>>788
小さなプログラムの設計のメモって何のために残すの?
読みにくいソースとコメント書いてしまった罰ゲーム?
0793788NGNG
>>789
時間がたってからソース読む時間を節約するため。
とくに、書いた人以外が読むとき。
0794789NGNG
>>791
> 無くても大丈夫とか、GNUでは大丈夫、は理由にならんだろ。
理由は以前に示したが、君の目がフシアナサンのようなのでもう一度書く
  ディレクトリ構成でシステムの構成と階層を示している。
  ファイルでモジュールを示している。
  ヘッダコメントでそのモジュールの役割を示している。
  includeで各モジュール間の依存関係を示している。
  関数名で機能を示している。
  ややこしい場所にはコメントを入れる
これ以上に何の情報が必要?
必要ないから書かないだけ。
必要ないのに存在する情報は必要な情報を隠す働きしかしない。
つまり有害無益

で、こちらからも質問?
作り始めの簡単なメモってどういう情報があるの?
モジュール構成やモジュールの役割以外の役に立つ情報って何?
0795789NGNG
>>793
> 時間がたってからソース読む時間を節約するため。
> とくに、書いた人以外が読むとき。
で、その「作り始めの簡単なメモ」のメンテナンスは
大幅な修正が発生したら忘れずに修正するんだよね?

その修正コストってソース読む時間を節約するコストよりも
十分に小さいの?特に小さなソースの場合。

2重管理するだけの価値が本当にあるの?
0796788NGNG
モジュール構成やモジュールの役割が1つにまとまってたら、それはりっぱに設計書として機能するだろ。
けど、それは分散してるより、まとまってたほうが見通しがいい。
3000行程度なら、最初に決めたとおりで作れるだろう。
(当然、規模が大きくなれば、ちゃんとした設計書の必要性が高くなるし、最初の設計のとおりに
 ならない確立も高くなる)
だから、モジュール構成やモジュールの役割の説明として、役に立つ。
(そのメモが実際の作りと違ってたときにどーするよ?っていう反論なら認めたんだがなぁ…)


ディレクトリ構成は、どんなモジュールがあるか、は示していても、モジュール間の依存関係
を必ず示しているとはかぎらない。
ファイルとモジュールも1対1に対応しているとは限らない。
もし、ファイル構成が、プログラムの作りを的確に反映しているのなら、
「モジュールの構成はファイルの構成に対応してる」
って事を書いたメモがあるのと無いのとでは、やはり、コードを読む時(特に読み始め)の効率が違う。

ちゅーことだ。
0797788NGNG
「大幅な修正」が発生したら、やっぱり、修正についてのメモは、書くんでないか?
したら、最初のメモに追加しとけばいい。
0798788NGNG
なんか、俺の言ってのは、「考えたことはメモする習慣つけとけ」 ってことみたいだな。
0799789NGNG
> (そのメモが実際の作りと違ってたときにどーするよ?っていう反論なら認めたんだがなぁ…)
そんなメモは想像もしてなかった。

> モジュール間の依存関係を必ず示しているとはかぎらない。
includeで示している

> ファイルとモジュールも1対1に対応しているとは限らない。
まぁそれは「全て大文字のシンボルはマクロとは限らない」と同じくらい
少ないと思うが。
特にJavaの場合、1ファイル1クラスに対応しているので、

> 「モジュールの構成はファイルの構成に対応してる」
とは、Javaの場合は絶対に必要ないし、
少なくとも俺がCでプログラムを書く場合はモジュール=ファイル。
0800デフォルトの名無しさんNGNG
>少なくとも俺がCでプログラムを書く場合はモジュール=ファイル。

どういう意味?
0801デフォルトの名無しさんNGNG
>>800
789じゃないけど、

関数を、機能単位で分類したものをモジュールと言うとして、
ひとつのソースファイルに、ちゃんと機能単位で分類したソースを入れると
いうことだろ。

下手な奴はわけのわからん分類をして関数を変なソースに突っ込むが、
俺はちゃんと機能単位で分類してるんだぜ、ってことだと思われ。
あと、staticで情報隠蔽したりとかね。

当たり前のことですわな。
0802777NGNG
俺もドキュメント書きは嫌いだし、3000行やそこらのプログラムなら、
ヘッダファイル見ながら楽勝で書ける… ってことをこのスレのずっと前の方に
書いたのは俺だ(w

「作り始めに簡単なメモ」も書かないなあ。書いてるときは、ちゃんと
わかってるから、メモなんか不要だよ。

でも、後で読む人のことを考えたら、やっぱり多少のメモは必要だと思う。
3000行だと微妙なとこだけどな。「まずどこから読み始めるか」なんて
情報は必要だよ。

>>795
>2重管理するだけの価値が本当にあるの?

マネージャクラスが書かせたがるような定型の仕様書の類は確かに
2重管理の弊害が大きい。

でも、「どこがどうなっているかの概略を説明する簡単な文書」と俺が
言ってるのは、それに変更が加わるようなときはプログラムを捨てる時だって
ぐらいに大まかなものなので問題なし。

コメントじゃ図がかけないしね。モジュール間の構造とか、データ構造とか、
図の方がわかりやすい事って多いだろ。
0803800NGNG
>>801
それなら当たり前のことっつーのは良いんだけど、
799は、1ロードモジュール=1ファイルって読めた。
なぜそう読めたのかはわからん。
0804デフォルトの名無しさんNGNG
>>785
GNU のコードが保守性に優れるかというと、俺は大いに疑問だが。
binutils とか読むと目が腐るぞ。
0805デフォルトの名無しさんNGNG
「作り始めに簡単なメモ」なんて、仮に書いたとしたって
プログラムが完成する頃には役に立たなくなってるよ。
0806デフォルトの名無しさんNGNG
コメントとしてファイルの最初に書いたりするだけでは足りないのかな。
0807デフォルトの名無しさんNGNG
ファイルの最初に書いたコメントは、後から見るプログラマが
・読まない
・更新しない
・律儀なやつが自分の直したとこだけ更新する
とかでなんの役にも立たないカオスの渦になりますが何か?
0808デフォルトの名無しさんNGNG
やっぱバージョン管理ツールが便利。
0809デフォルトの名無しさんNGNG
>>740 世の中毎週平均5千行を1年間書きつづけている人もいるようです

http://www.zdnet.co.jp/news/0202/01/e_code.html
昨年,あるオーストラリア人男性がたった1人で.NETのGNU/Linux版のコードを書き始めた。
2001年元日から毎週平均5000行のペースでコードを書いてきた同氏1人の手によるものだ。
しかし,同氏は,クラスライブラリの構築に力を貸してくれるボランティアのプログラマーを探している。
0810デフォルトの名無しさんNGNG
>>809

同じペースで書いてるとしたらそろそろ45万行ぐらいか。
5000行ずつ書き続けられるかどうかよりも、どうやってテストしてるのかという点
の方が気になる。
0811デフォルトの名無しさんNGNG
再利用不能なクソコード45万行か。
0812デフォルトの名無しさんNGNG
どうしてプログラマーはコードしか書きたがらんのかなー。
仕事だろ。
サンデープログラマーはご自由に。
0813デフォルトの名無しさんNGNG
>>812
だって、コードしかかきたくないんだもん
動くもんができりゃそれで満足さ
0814デフォルトの名無しさんNGNG
数千行厨房のおかげで話が�d�jな。
0815デフォルトの名無しさんNGNG
>813
それってあんたサンデーってこと?
0816デフォルトの名無しさんNGNG
>>810
UnitTestじゃね―の?
0817デフォルトの名無しさんNGNG
>>807
メモもカオスの渦に陥ると思うのですが?何か?
0818777NGNG
>>817
だからさあ、プログラムを丸ごと書きなおすような時でなければ、
概略を説明するメモにまで変更が入ることはないだろ?
0819デフォルトの名無しさんNGNG
OOかぶれの間ではリファクタリングという名目で、
今まで作ったドキュメントごと全部捨てて書き直すことを
推奨しています。

OOそのものとリファクタリングは直接関係はないですが、
ドキュメントごと一から作り直さないといけないことが
苦にならないのなら、シュレッダーを買いに行きましょう。

もちろんメモも、シュレッダーにかけます。
みじん切りです。
機密性が低いドキュメントなら安物のシュレッダーで幅1cm
くらいに切ってやるとよいでしょう。
0820デフォルトの名無しさんNGNG
どうしてといわれても、下らない文書書くのはSEの仕事じゃなかったのか?
そこまで仕事奪っちゃうと可哀想でさ。
0821デフォルトの名無しさんNGNG
>>819
…なんだこいつ。

今ここで話題になっている「メモ」は、多少のリファクタリングでは
変更されないものだろうに。

スレの流れに沿ってないし、そもそも文意がさっぱり取れないし。

愚痴か? それとも煽りのつもりか?

アフォなのは間違いないところだが…
0822デフォルトの名無しさんNGNG
仕事でプログラムしてんならドキュメント必須だろ。
アホなやつでも保守できるようにしとかなきゃいけないんだから。
3000行ならドキュメントいらんとかぬかしてる奴は腐ったドキュメントしか見たことないんだろ。

GNUみたいに自分の趣味でプログラムしてんならドキュメントなんていらん。
0823デフォルトの名無しさんNGNG
>>822 仕事っていうより 労働でプログラミングしてるならでしょ
0824デフォルトの名無しさんNGNG
>>823
仕事と労働、どうちがうの?
0825デフォルトの名無しさんNGNG
労働契約でプログラムを生産しても 知的所有権には一切関与出来ない。
それらは全て雇用者のものであり、雇用者はあなたの代わりに誰にでもコードを
触らせる事が出来る。だからドキュメントを書く事も労働として要求される。

普通に仕事としてプログラムを作れば、知的所有権はあなたのものだ。
たとえば著作権は自動的に付与され、他人が勝手に改変する事は出来ない。
0826デフォルトの名無しさんNGNG
>>825
普通に仕事、ってのがよくわからんのだが・・・
あんたはシェアウェア作家ってこと?
0827デフォルトの名無しさんNGNG
>>825 形の上で請負契約でも同じようなもんだよ。 成果物は全て発注会社のもの。

個人で営業して仕事するしか今時 著作権が自分のものなんて契約はないよ
まあいつこんな道に迷い込んだのか 年寄りの一人としては責任も感じるけどね
0828デフォルトの名無しさんNGNG
たしかに企業が占有するなら著作権法でプログラムを保護する必要ないよなあ・・・・単なる愚痴だけど

結局そんなこんなが、魅力的なプログラムを作ろうという動機みたいなのを摘んで、
結局は効率良く成果を上げる事を阻んでるような気がするな

それが結局 オブジェクト指向なんて戦場で必要無しの遠因かもね
0829デフォルトの名無しさんNGNG
職業プログラマにはプログラミングを追求しようって人が少ないからねぇ。
0830デフォルトの名無しさんNGNG
>>822
>GNUみたいに自分の趣味でプログラム
それも立派な仕事だよ。

はたくというのはね はた(他人)を楽にすることだよってうちのおかあちゃんは教えてくれました。

はたをらくにするとお金は自然についてくるから気にするなとも・・・・これってほんとかなあ
0831デフォルトの名無しさんNGNG
>>830
こじつけです。

> ドウ ハタラク 動 の俗字なり。勞働、自働は勞働、自動なり。
> (大系漢字明解)
0832デフォルトの名無しさんNGNG
>>831
 それは感じの語源では?
はたらくの語源じゃないでしょ

それを語源という説もあるし
ttp://www.geocities.co.jp/SweetHome-Green/9087/hataraku.html

畑をひらくという説もあるし
0833デフォルトの名無しさんNGNG
たまにage
0834デフォルトの名無しさんNGNG
CVS と JavaDoc だと何が不都合?メモも全てJavaDocの流儀で書いているが
何か不満があるのだろうか・・・
0835デフォルトの名無しさんNGNG
(´-`).。oO(>>834は誰がJavaDocに不満を抱えていると思ったんだろう…)
0836デフォルトの名無しさんNGNG
(´-`).。oO(身近にいるやつじゃないかな…)
0837デフォルトの名無しさんNGNG
(´-`).。oO(Javaなんてつかわねーからなあ・・・)
0838デフォルトの名無しさんNGNG
どうでもいいけど漏れは
BASIC → C → C++
と進むごとにコードが破錠しやすくなった。
今までの中で一番きれいに書けた言語はHSPかな(藁
0839デフォルトの名無しさんNGNG
>>838

スレ違い。
こっち↓逝け。
http://pc.2ch.net/test/read.cgi/tech/1016715717/l50
0840838NGNG
後場苦。
でももう逝かない。
0841デフォルトの名無しさんNGNG
sage
0842デフォルトの名無しさんNGNG
ファイル分けがやっぱ最強。
クラスは糞。
0843デフォルトの名無しさんNGNG
世の中の2割の人は抽象的に考える力が劣っているといわれています。
悲しいことに、抽象的な思考が苦手な人にはオブジェクト指向は向きません。
0844デフォルトの名無しさんNGNG
抽象的なクラスを作られても周りが迷惑です。
0845デフォルトの名無しさんNGNG
一ファイルがやっぱ最強。
ファイル分けは糞。
0846john ◆0z.4Is5E NGNG
まだこんな事やってるんだな(w
0847デフォルトの名無しさんNGNG
あんた誰?
0848デフォルトの名無しさんNGNG
たぶんジョン=ジョバンニ
0849デフォルトの名無しさんNGNG
>>847
http://pc.2ch.net/test/read.cgi/tech/1013995470/
ここの悲惨な>>1
0850デフォルトの名無しさんNGNG
sage
0851デフォルトの名無しさんNGNG
いつのまにか、新スレ?
http://pc.2ch.net/test/read.cgi/tech/1021468476/
0852デフォルトの名無しさんNGNG
まだまだ使えるのに何故新スレができているんだろう。
0853デフォルトの名無しさんNGNG
ここだって、その2が600くらいの時に立ってるし・・・
0854デフォルトの名無しさんNGNG
保守あげ
■ このスレッドは過去ログ倉庫に格納されています