オブジェクト指向は戦場では必要無し その3
■ このスレッドは過去ログ倉庫に格納されています
0001うつつつつ
NGNG引き続きOO厨とアンチOO厨の血で知を笑う戦いきぼ。
その1 http://pc.2ch.net/test/read.cgi/tech/1011997945/
その2 http://pc.2ch.net/test/read.cgi/tech/1013266554/
0703デフォルトの名無しさん
NGNGasmが無いYO!
0704デフォルトの名無しさん
NGNGここがマ板とム板に別れた頃にそんなスレッドあったよ。
0705デフォルトの名無しさん
NGNGすべてを把握しないと気がすまない超管理主義者。付き合う人間は一苦労。
0706デフォルトの名無しさん
NGNG俺アセンブラ使いだけどOO的設計 管理が面倒だから
行き当たりばったりで思いついたところからかけるアセンブラが好き
0707デフォルトの名無しさん
NGNG>行き当たりばったりで思いついたところからかける
アセンブラなら許されるってもんじゃないと思うぞ。
OOPLだって行き当たりばったりにクラスを書くことは出来る。
0708デフォルトの名無しさん
NGNG0709デフォルトの名無しさん
NGNG0710デフォルトの名無しさん
NGNG0711デフォルトの名無しさん
NGNG0712デフォルトの名無しさん
NGNG0713デフォルトの名無しさん
NGNG0714デフォルトの名無しさん
NGNGるーちん・くらす・こんぽーねんと
がでてきたあ
0715デフォルトの名無しさん
NGNG0716デフォルトの名無しさん
NGNG方法論ばっかやってる連中にありがちだねえ。
俺も一度見たことあるけど、全部捨てさせた。
0717デフォルトの名無しさん
NGNG藁
0718デフォルトの名無しさん
NGNG最悪なのは複数人とか クロス開発でテスト環境がしっかりしてないとかで
「この部分をブラックボックスとして」
いきあたりばったりでやった場合だね。
0719デフォルトの名無しさん
NGNG一人がチンタラとクラス設計してるうちに俺がコーディング
始めて、結局おれがクラス設計が終わってないうちに
100%コーディングを済ませたことがある。
0720デフォルトの名無しさん
NGNG相方は719が作ったコードのクラス設計を理解した?
0721デフォルトの名無しさん
NGNG漏れのはクラスじゃない。
数千行程度のプログラムならサクサク書いたほうが
早いってことよ。
0722デフォルトの名無しさん
NGNG0723デフォルトの名無しさん
NGNG今はそれで良くても仕様変更があったら719しかそのコードいじれなくなるよ。
そんなにサクサク作れるスキルがあるならペアプロとまでは言わないけど、相方に
設計を説明しながら作ればよかったのに。
0724デフォルトの名無しさん
NGNGいると便利。けど、よそ様にはお見せ出来ない。
作ってる暇があったら、先に仕様書書けゴルァ。
0725デフォルトの名無しさん
NGNG俺はこれ作ればそれで終わり。
管理まで頼まれてねえや
0726デフォルトの名無しさん
NGNGSmallTalkじゃなくてSmalltalkね。
ところでSmalltalkもCもJavaもやる俺の場合は一体
俗物なのか理想主義者なのか、はっきりしてくれい。
0727デフォルトの名無しさん
NGNG> ところでSmalltalkもCもJavaもやる
ふつー、多言語を使う。
0728デフォルトの名無しさん
NGNGところで、719がサクサクと作ってるのはどんな分野のプログラム?
0729デフォルトの名無しさん
NGNGただのプログラミング言語好きなだけじゃん
0730デフォルトの名無しさん
NGNG>>726
他人のプログラムは決して信じない俗物。
現実を認めようとせず、箱庭に楽しみを求める。
>>729
他人のプログラムは決して信じない変人。
協調性がなく、箱庭に楽しみを求める。
0731デフォルトの名無しさん
NGNG0732デフォルトの名無しさん
NGNGただ、昔ファミコンのころのゲームのプログラムなんかは(今は知らないが)
売っちまったら二度と手入れられないので、中身はめちゃくちゃ。
とにかく納期に間に合わせてパッチ当てまくればよかった。
その時代なら719も生きる場所があったかも。
ちなみに開発はアセンブラ。
0733デフォルトの名無しさん
NGNGまあ内容にもよるけど数千行ならクラス設計してやるような規模じゃないと思うが?
普通に構造化設計しながらコメント入れてはサクサクコード書いていけば
数千行ならデバックしながら7日もあれば書けるよ。
もちろんOOPL使えば構造化設計としてクラスも作るけどさ
0734デフォルトの名無しさん
NGNG0735デフォルトの名無しさん
NGNG今だとプログラムの規模がでかくなっていて、プログラマだけでも最低 3 人、
多いと二桁って世界になってるから、
中身めちゃくちゃ
本人も把握してない
だと話にならんよ。
0736デフォルトの名無しさん
NGNG数千行程度の小さなプログラムで設計をするのはどうかと思う。
まぁ新人ならば数千行程度の小さなプログラムでも
設計しといた方がいいと思うけど
0737デフォルトの名無しさん
NGNG数千行を仮に 5 千行としておくが、それで 7 日? 内容にもよるが、一日に
間違いのないコードを 700 行きっちり書き連ねていくのは、かなり辛いぞ。
設計を適当にすませるってことは、ある程度の行き戻りは覚悟することに
なるから、実質的に書くコードはもっと増えるし。
> 行数だけでカタってる時点でアウト。
全くその通りなんだが、まぁ、おおざっぱな話をするときには使える指標では
あるよな。(勤務評定で使ってはダメだが)
アプリケーションよりのコードで、同期やらなにやらが込み入ってない部分だ
と、俺は平均して一日 300 行(コメント、空行込み、修正や削減分は差し引い
て)ぐらいだよ。これがスレッドの同期が絡んだり、ハードウェアよりのプログラ
ムだと、さらに少なくなる。
0738デフォルトの名無しさん
NGNGだけど、>>719のやり方とは、大きな差があると思う。
0739デフォルトの名無しさん
NGNGさらっとでも、しっかりした設計が出来てるから、数千行でコンパクトに
収まったプログラムの差、くらい大きな差かも。
0740733
NGNG千〜9千って事だから√(1000*9999) でおよそ3千行程度を考えてたよ
俺の場合は1日に、だいたい2千行くらい書いて、3/4捨てるような感じかな
関数・クラス単位にデバックして、動かなかったらさっさと捨てては作り直してるし
0741733
NGNG0742737
NGNG納期直前はともかく、私は基本的に1日8時間しかコードは書かないなぁ。
それ以上は集中力が続かなくて、1 時間よけいにコードを書くと、翌日に
2 時間デバックする羽目になる(w
あまった時間は集中力のいらない書類整理とか、Web やメールを読んで
技術動向をチェック、なんて方に回してます。
> 関数・クラス単位にデバックして、動かなかったらさっさと捨てては作り直してるし
何が問題なのかをつきとめないと、また同じミスを繰り返すぞ。人が書いた
コードを回収しているような場合には
「腐ったモジュールは丸ごと捨てて、作り直しちまえ」
とすることはあるが、自分が書いたコードではさすがに無いよ。
0743デフォルトの名無しさん
NGNG> 私は基本的に1日8時間しかコードは書かないなぁ。
え?デバッグする時間は?
コードを書く時間ってそんなに必要ないでしょう。
プログラムを書く場合に必要な時間って多くの場合、
設計とデバッグ。
0745デフォルトの名無しさん
NGNG書けるんだから、そんなもんじゃないの?
0746デフォルトの名無しさん
NGNGデバッカで延々トレースしたり悩んでるの見たら さっさと作り直した方が楽だろうにと思うし
こんだけ動いてるなら作り直すよりデバックした方が速いだろうにと思うし
0747デフォルトの名無しさん
NGNGでも、捨てる前に、ちゃんと動作することを確認してるけど。
0748デフォルトの名無しさん
NGNG0749デフォルトの名無しさん
NGNGデータフローを中心に考えるプログラムならば再構成でなんとかなる。
で、短いプログラムにはデータフロー中心で考えるものが多い。
0750デフォルトの名無しさん
NGNG実際にプログラミングして、作業記録をつけてみ。
0751デフォルトの名無しさん
NGNGタイピストとプログラマの仕事をごっちゃにしてないか?
0752デフォルトの名無しさん
NGNGそこまでの条件書くようにしてる。たとえば、
# ここまででax,bxはフリー cxは処理済みのビット数 es:[di-1]までは処理済み
# ds:[si+bx]は全ビット処理済みでないことに注意
とか。
で、書きなおすときは、一息ごと(w にやるようにしてる。
0753デフォルトの名無しさん
NGNGその感覚は同感。
俺の場合は1日かけて完成できないクラスは
なんか間違っているということで、破棄することにしている。
0754デフォルトの名無しさん
NGNG0755デフォルトの名無しさん
NGNG俺は一日にはこだわってないけど、数日かけて1つのクラス実装してると、
たいがい途中で、「あ、これは別のクラスにしなくちゃだな」って思う。
思ってもそのまま実装しちゃうことも、よくあるけど。
0756デフォルトの名無しさん
NGNGあんたがいなくなった後、メンテするやつにその数千行だけを読ませるの?
なんかドキュメント書くだろ。それって設計書を読ませるんでないの?
規模によって、設計書のレベルは変わるかもしれんが。
0757デフォルトの名無しさん
NGNGなんかタイトルと離れた話題だけど、
数千行(3千行程度)のプログラムとしての設計書はソース自身になるように作るのが普通では?
仕様書ならともかく、設計書を別に作らされてるってかわいそうとしか思えないのだが
0758デフォルトの名無しさん
NGNGきちんとした書式の設計書でなくていいから、どんな作りになってるのか、メモくらいのこせ。
0759デフォルトの名無しさん
NGNGコメントで十分では? :)
0760デフォルトの名無しさん
NGNG0761デフォルトの名無しさん
NGNGそんなやつのなら、だらだら書いてたら数千行になっちゃったようなクソコードだろ。
せめて、「どんな作りになってるのか」くらい書いとけ、ソースの先頭でもいいから。
それも必要無いようなのは、コメントもいらん。
一目でクソだとわかるほうが、捨てる判断もしやすいからな。
0762デフォルトの名無しさん
NGNGどんな言語で開発してるんだ? もしかして素のbasicか?
そんなキミにいいこと教えてやろう アセンブラなら ':' をgrepしろ
pascal なら procedure / function で grepすればいい
cなら一度コンパイルしてマップファイルを見ればいい
0763デフォルトの名無しさん
NGNG数千行程度なら、いわゆる紙の仕様書は要らんと思うなぁ。
構造体とグローバル変数、それに関数の頭に簡単なコメントがつけてあれば
間に合う。それでは間に合わない腐ったコードもあるけど、それはコメントが
あってもやっぱりダメだし(w
0764デフォルトの名無しさん
NGNG結局 自分のスタイルと違う設計は解読し難いというだけだろ。それは結局勉強不足さ。
0765デフォルトの名無しさん
NGNG0766デフォルトの名無しさん
NGNG参考になるURLだけ書いとく事もあるけど、勉強しろゴルァって
言うよりも、ソースの先頭に全部書いてあるから読めゴルァ
のほうが、手離れがいい。
勉強不足なやつに、いちいち聞かれるの、うざいし。
0767デフォルトの名無しさん
NGNG別に新人教育のためにプログラム書くわけじゃないし。
0768.
NGNG0769デフォルトの名無しさん
NGNG0770デフォルトの名無しさん
NGNG> 設計の概念の無いやつのコメントなんて、信用できるかよ(w
> そんなやつのなら、だらだら書いてたら数千行になっちゃったようなクソコードだろ。
設計書を書かない奴と設計書を書けない奴を混同する奴の方が信用できない。
常に設計書を書かなければ気が済まない強迫観念をもったキチガイの方が信用できない。
設計書なんてエレベータみたいなもの。
3階建ての民家にあるのは馬鹿
5階建てくらいのマンションにはあれば便利だが、無くとも何とかなる。
20階建て以上もある高層建築にないのも馬鹿
3000行ほどの小さなプログラムも組んだことのない
新人君 or 学生君ならば設計しといたほうがいいと忠告しておく。
0771デフォルトの名無しさん
NGNGどんな作りになってるかのメモくらい残せよって言ってるんだが。
物作りするとき、走り書きくらいするだろ。
それがあとでコード読む手がかりになるなら、残さない理由が知りたい。
あ、もしかして、3000行程度のプログラムが脳内設計で書ける自慢?
ならしょうがないな。
おれがわるかったよ。
0772デフォルトの名無しさん
NGNG行数で語るから、話が混乱するんだと思うが。
べつに 1 万行でも単純なプログラムなら要らんし、百行でも複雑な
アルゴリズムを使ってるなら参考文献なり具体的な説明なりを残さ
ないと、後で自分が困る。
それだけだろ?
0773デフォルトの名無しさん
NGNG0774デフォルトの名無しさん
NGNG0775デフォルトの名無しさん
NGNGWin32 あたりで既存の API を呼び出すだけなら書かない。
そうではなく、整数中点円スキャン変換アルゴリズムを自前で実装してる
なら、関数の解説(これは引数で指定された点を中心とする半径 n の円
を描く、云々)と、アルゴリズムに関する参考文献か解説を書いておく。
0776デフォルトの名無しさん
NGNG記憶力が良いか頭がイーかたなんでしょう。
私は1月前に書いた自分のコードが
コメント無しでは読めません。
0777デフォルトの名無しさん
NGNG書けだの、その関数仕様書には「処理概要」とかいって、ソース見ればわかる
制御構造とか、下手すりゃフロチャートまで書けとか、そのくせ関数名は
命名規則で8文字以内とか、そんな経験があると、「ドキュメントなんかいらん!!」
と言いたくなるよな(藁
だけど、ここで出てるのは、そういう定型的なドキュメントじゃなく、
どこがどうなっているかの概略を説明する簡単な文書だろ?
もちろんどんなプログラムかによるけど、3000行なら、A4 1〜2枚くらいは
説明書があったほうがいいと思う。
コメントでいいという意見もあるようだけど、コメントはソースの
「その場所」に関する説明だから、全体を概観する文書は、やっぱ別に要るよ。
0778デフォルトの名無しさん
NGNGどこが居間でどこが台所なのか、台所から今に行くにはどうすればいいのか
という事くらいは、(後でメンテナンスするつもりなら)書いておいたほうが
いいと思われ。
その3000行を、クラスなりなんなりで分割したそれぞれが、ちゃんと「居間」
であったり「トイレ」であったりするなら、それ以上の詳細を説明する文章
までは要らないと思うが。
3000行がmain関数一本と言うアホなプログラムじゃなければ、そういった
メモには価値があると思われ。
0779デフォルトの名無しさん
NGNGこれって結構本当。
詳細設計がちがちでなければ、書きながら
考えてるし。
0780デフォルトの名無しさん
NGNG自分は大昔からこれを書くようにしているので、馴染み深いのですが、
他の人はそうでもないようです。
0781デフォルトの名無しさん
NGNG設計概要説明書。
0782デフォルトの名無しさん
NGNGソースと一緒に公開してくれる人はいないかな。。。
これに尽きる。
この方向でさらに突つきまわしても何も出てこないだろう。
OOブームを冷たい視線で眺めていた開発者達は今こそ見えてきた
頂上を目指す。
0784デフォルトの名無しさん
NGNGそのうちコードを書きながらメモを書くようになった
今は、行分割エディタでコメント部にメモを書きながらコードを書く
0785デフォルトの名無しさん
NGNG> それがあとでコード読む手がかりになるなら、残さない理由が知りたい。
C言語のプログラムだという前提で言うと
ディレクトリ構成でシステムの構成と階層を示している。
ファイルでモジュールを示している。
ヘッダコメントでそのモジュールの役割を示している。
includeで各モジュール間の依存関係を示している。
関数名で機能を示している。
ややこしい場所にはコメントを入れる
他に何が必要?GNUではこれで数万行を超えるプログラムが
何の問題もなく作られている。
もちろん、大規模なプロジェクトの場合、ドキュメントが一切ないのは
太平洋を横断するのに地図を持たずに航海するのと同じくらい無謀
だが、近所を散歩するのに地図を持って散歩する馬鹿はいまい
0786デフォルトの名無しさん
NGNG0787デフォルトの名無しさん
NGNG0788デフォルトの名無しさん
NGNG0789デフォルトの名無しさん
NGNG感情的な1行煽りしかできなくなった約1名に捧げる
「なんでこのスレにしがみついてるの?」
「なんでこのスレにしがみついてるの?」
0790788
NGNG0791788
NGNG作り始めに簡単なメモくらい書くだろ、それを残さない理由が知りたいって言ってるんだが。
無くても大丈夫とか、GNUでは大丈夫、は理由にならんだろ。
だから脳内設計で物作りが出来る自慢にしかならないのに…
ま、いいや、「あったほうがいい」っていう意見がいくつか出てるから。
0794789
NGNG> 無くても大丈夫とか、GNUでは大丈夫、は理由にならんだろ。
理由は以前に示したが、君の目がフシアナサンのようなのでもう一度書く
ディレクトリ構成でシステムの構成と階層を示している。
ファイルでモジュールを示している。
ヘッダコメントでそのモジュールの役割を示している。
includeで各モジュール間の依存関係を示している。
関数名で機能を示している。
ややこしい場所にはコメントを入れる
これ以上に何の情報が必要?
必要ないから書かないだけ。
必要ないのに存在する情報は必要な情報を隠す働きしかしない。
つまり有害無益
で、こちらからも質問?
作り始めの簡単なメモってどういう情報があるの?
モジュール構成やモジュールの役割以外の役に立つ情報って何?
0795789
NGNG> 時間がたってからソース読む時間を節約するため。
> とくに、書いた人以外が読むとき。
で、その「作り始めの簡単なメモ」のメンテナンスは
大幅な修正が発生したら忘れずに修正するんだよね?
その修正コストってソース読む時間を節約するコストよりも
十分に小さいの?特に小さなソースの場合。
2重管理するだけの価値が本当にあるの?
0796788
NGNGけど、それは分散してるより、まとまってたほうが見通しがいい。
3000行程度なら、最初に決めたとおりで作れるだろう。
(当然、規模が大きくなれば、ちゃんとした設計書の必要性が高くなるし、最初の設計のとおりに
ならない確立も高くなる)
だから、モジュール構成やモジュールの役割の説明として、役に立つ。
(そのメモが実際の作りと違ってたときにどーするよ?っていう反論なら認めたんだがなぁ…)
ディレクトリ構成は、どんなモジュールがあるか、は示していても、モジュール間の依存関係
を必ず示しているとはかぎらない。
ファイルとモジュールも1対1に対応しているとは限らない。
もし、ファイル構成が、プログラムの作りを的確に反映しているのなら、
「モジュールの構成はファイルの構成に対応してる」
って事を書いたメモがあるのと無いのとでは、やはり、コードを読む時(特に読み始め)の効率が違う。
ちゅーことだ。
0797788
NGNGしたら、最初のメモに追加しとけばいい。
0798788
NGNG0799789
NGNGそんなメモは想像もしてなかった。
> モジュール間の依存関係を必ず示しているとはかぎらない。
includeで示している
> ファイルとモジュールも1対1に対応しているとは限らない。
まぁそれは「全て大文字のシンボルはマクロとは限らない」と同じくらい
少ないと思うが。
特にJavaの場合、1ファイル1クラスに対応しているので、
> 「モジュールの構成はファイルの構成に対応してる」
とは、Javaの場合は絶対に必要ないし、
少なくとも俺がCでプログラムを書く場合はモジュール=ファイル。
0800デフォルトの名無しさん
NGNGどういう意味?
0801デフォルトの名無しさん
NGNG789じゃないけど、
関数を、機能単位で分類したものをモジュールと言うとして、
ひとつのソースファイルに、ちゃんと機能単位で分類したソースを入れると
いうことだろ。
下手な奴はわけのわからん分類をして関数を変なソースに突っ込むが、
俺はちゃんと機能単位で分類してるんだぜ、ってことだと思われ。
あと、staticで情報隠蔽したりとかね。
当たり前のことですわな。
0802777
NGNGヘッダファイル見ながら楽勝で書ける… ってことをこのスレのずっと前の方に
書いたのは俺だ(w
「作り始めに簡単なメモ」も書かないなあ。書いてるときは、ちゃんと
わかってるから、メモなんか不要だよ。
でも、後で読む人のことを考えたら、やっぱり多少のメモは必要だと思う。
3000行だと微妙なとこだけどな。「まずどこから読み始めるか」なんて
情報は必要だよ。
>>795
>2重管理するだけの価値が本当にあるの?
マネージャクラスが書かせたがるような定型の仕様書の類は確かに
2重管理の弊害が大きい。
でも、「どこがどうなっているかの概略を説明する簡単な文書」と俺が
言ってるのは、それに変更が加わるようなときはプログラムを捨てる時だって
ぐらいに大まかなものなので問題なし。
コメントじゃ図がかけないしね。モジュール間の構造とか、データ構造とか、
図の方がわかりやすい事って多いだろ。
■ このスレッドは過去ログ倉庫に格納されています