トップページ⇒tech
159コメント53KB

スパゲッティプログラムの読み方

■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさんNGNG
仕事で他の人が作ったソフトを任されることになったのですが、
スパゲッティプログラムなので読むのが非常に辛いです。
聞こうにもその人は会社辞めたし・・・
何かみなさんのコツのようなものはないでしょうか。
0002デフォルトの名無しさんNGNG
フォークをうまく使う。
0003デフォルトの名無しさんNGNG
スパゲッティプログラム自動整形プログラムって
どっかにないかね。
0004デフォルトの名無しさんNGNG
if((pid = fork()) < 0) ...
0005デフォルトの名無しさんNGNG
とりあえず indent コマンドをかけてみるとか。
俺流コーディングスタイルは治せる。
設計がひどいのはどうしようもないけど。
0006デフォルトの名無しさんNGNG
スレタイトルが「スパゲティプログラムの書き方」に見えた。鬱だ・・・。
0007デフォルトの名無しさんNGNG
>>1
読むな。
全部消してから書き直せ。
00081NGNG
みなさん、レスありがとうございます。
みなさんもスパゲッティプログラムには苦労されているようですね。

>>5
おっしゃる通り設計が悪くて・・・
読んでも読んでも色々な条件が増えるだけ。

>>7
確かにその通りかもしれませんが、時間がないので(藁
0009デフォルトの名無しさんNGNG
その辛さが快感に変わります。
その身をゆだねて快楽に身をまかせましょう。
0010デフォルトの名無しさんNGNG
まー、丁寧に一本一本よりわけて整理するか、
まとめて飲み込むしかないような

関係ないところはまとめて飲み込んで済ましたいのこころ
0011デフォルトの名無しさんNGNG
ファウラーのリファクタリング本を読みながら、体系立てて慎重に(=UnitTestとかもしながら)直す、
ってのが正しい答えなんだろうけど、そのファウラー本でも、
「設計が全然駄目な」奴は、捨てて作り直すしか無いぞと書かれていた(ぷ
やはり、菩薩のようになんでも救済ってのは無理だな。
0012デフォルトの名無しさんNGNG
goto label;
みたいのがたくさんあるんですか?
エディタの検索コマンドを駆使するといいかも。
0013デフォルトの名無しさんNGNG
厨ですまん。
スパゲッティプログラムってなに?
0014デフォルトの名無しさんNGNG
>>13

スパゲティコード=
スパゲティのように、(主にgotoなどで)ぐちゃぐちゃになって、
何をしているのか、ロジックがさっぱり分からないプログラムのこと。




または、オレの書いたコードのこと(藁
0015デフォルトの名無しさんNGNG
わざとスパゲッティにして配布するって手があるよ
0016デフォルトの名無しさんNGNG
クラス?モデル?何それ?
っていうコードを見ると眩暈がするねえ・・・
0017デフォルトの名無しさんNGNG
とりあえず、コメント追加してくところから始めたら?
0018デフォルトの名無しさんNGNG
>>14
gotoくらいなら大したことはない。関数内にしか飛ばないから。
グローバルなフラグでぐちゃぐちゃ飛んでくやつは始末におえん。
0019デフォルトの名無しさんNGNG
longjumpのこと?
0020デフォルトの名無しさんNGNG
>>15
わざとスパゲティにするフィルタが掛かってるソース渡されて、
移植してくれって仕事やったことあるよ
0021デフォルトの名無しさんNGNG
>>18-19
要するに、ワケのわからない再帰を行っているプログラムだと思ワレ
0022デフォルトの名無しさんNGNG
>>21
それは>>18-19の逝ってることとは違うんじゃ…
002321NGNG
そーか?
例えば、こんなコードはどうだ?

void Funk1()
{
<略>
Funk2();
<略>
}

void Funk2()
{
<略>
if(Chk())Funk3();
else Funk4();
<略>
}

void Funk3()
{
<略>
Funk1();
<略>
}

void Funk4()
{
<略>
Funk2();
<略>
}
0024デフォルトの名無しさんNGNG
GOTO使うのってアセンブラくらいだと思ってたけど、
Cとかでも使う人いるの???
0025デフォルトの名無しさんNGNG
>>24
GOTOをCで見たことのないあなたは運がいい、と思う。
0026デフォルトの名無しさんNGNG
gotoを使った方がソースが短くなる場合は使う。
関数内にreturnやbreakステートメントが多い場合は、素直に
gotoを使った方が可読性に優れる。
じっくり考えればどちらも回避出来るが、その時間が無いなら、
1関数を1ページ以内にプリント出来る事を厳守すべき。
longjmpはやっぱりX。
0027デフォルトの名無しさんNGNG
>26
ANSIはc++に行番号を導入する事を決めたらしい。
目的の一つにgotoを使い易くすることが挙げられる。
http://www.reuters.com/news_article.jhtml?type=sciencenews&StoryID=157548
0028デフォルトの名無しさんNGNG
これでモジュール化がいっそう進み、
共同開発が楽になるね。
>27
0029デフォルトの名無しさんNGNG
C++もやっとCOBOL並みに実用言語なってきたね>>27
0030デフォルトの名無しさんNGNG
>>25
運がいいっていうか仕事とかに使ったことない(学校でやっただけ)ので
他人のソース見る機会なかったもんで・・・。
うちの大学の先生はアセンブラじゃないだから使うなみたいなことを
いってたような。
0031デフォルトの名無しさんNGNG
>>27
へぇ、ロイターがこんな記事を。それだけ皆に注目されているということか。
0032デフォルトの名無しさんNGNG
>>30 学習方針としてはgoto使うなというのは正しい。
出題がfor/while/do/switchで解決できる範囲なのでしょう。

実務上は、必要な場合にgotoを使うのは正しい。
二重ループの脱出やエラー検出時に、gotoを使うのを嫌って
フラグ変数を使って制御しようとするのは愚かです。
0033デフォルトの名無しさんNGNG
>>27
ネットのおかげで最新情報が手に入るな。これだから2CHからは目が離せん。
いくつかの翻訳ソフトで訳してみたが、この分野の翻訳がまともに出来るソフトは未だ少ないな。見当違いな医学用語に訳されたりして苦労したよ。

"I don't want to put too much of a damper on this but I think one has to be realistic about this. This is work at a very early stage," Dr. Carsten Korth told BBC radio.
Korth博士は言いました。英国放送協会に。「行番号の採用だけで浮かれてはいけない。これはまだ序の口だ。」

In a study appearing in the Proceedings of the National Academy of Science, the California university researchers reported finding drugs effective in treating mouse cells infected with prions.
加州大学の研究者はは報告しました。まもなく発行される米科学学会の予稿集に。ネズミでもコードが書けるようになる画期的な方法の発見を。

半日もたてば、impressあたりのページで全文訳が掲載されるか
0034デフォルトの名無しさんNGNG
すごいニュースだけど、よそでは騒いでないな。
まともなやつはお盆で帰省中か?
0035デフォルトの名無しさんNGNG
>34
掲示板に入り浸ってる場合じゃないぞ。
ジャスダックを見てみろ。
0036デフォルトの名無しさんNGNG
ラベルに数字が使えるのがそんなにうれしいか?
0037デフォルトの名無しさんNGNG
>>36
アホ
0038デフォルトの名無しさんNGNG
>36
ラベルが無くても、どこにでも飛べる。
これでプログラマは翼を得た。
0039デフォルトの名無しさんNGNG
BASIC経験ないから分からんです。
行番号ってそんなに便利なの?>ALL
0040デフォルトの名無しさんNGNG
>>27
ANSIがC++に行番号を導入するのか...
ちょっと信じられんが、ロイターなら信じざるを得ないな。
gotoが使い易くなるのもまあ嬉しいが、それよりもgosubを
実装してくれた方がより実戦的だ。
関数が乱立しているソースは読み辛くていかん。
gosubが有ればmain()1個でプログラムが出来て美しい。
0041デフォルトの名無しさんNGNG
>>39
>>27のリンク先を読んでからじっくり考えてみろ。
君にもすぐわかるよ。
0042デフォルトの名無しさんNGNG
>>38
おいおい。自分でお買い上げの商品をよく見ろよ。
「自分の足を撃てる拳銃」を手に入れただけだろ。

どこにでも飛べることは、「殆ど」メリットにならんぞ。
0043デフォルトの名無しさんNGNG
.NETは行番号に対応するため、リリースが遅れるらしい。
ttp://mlcrosoft.com/developer/news?topic=linenumber&fake
0044名無しさんNGNG
英語わからんですたい
0045デフォルトの名無しさんNGNG
>42
そのとおり。
今後、C++に標準化された行番号をどう活用するかが課題だな。
その点に関しては、>>27の記事にも関係者の警告が出ている。
一つの解決策が40の言ってたgosubではないかな?
>44
33に部分訳が出ている。全貌は未だわからんが。
0046デフォルトの名無しさんNGNG
on_error_gosub は無いのか?
例外機構は冗長になっていかん。
0047デフォルトの名無しさんNGNG
壮大なネタスレ???
0048デフォルトの名無しさんNGNG
>>43
アクセスが集中しているらしい。重くて見れない。
見れたひと、情報きぼん。
urlの最後のあたりにmlcrosoftの良心がうかがえるな。
0049名無しさんNGNG
.NETいくらぐらいになんだろ?
アカデミックあんのかな?
0050デフォルトの名無しさんNGNG
>>49
行番号が実装されても、値段はそれほど上がらないと思う。
bcbやdelphiの行番号対応が遅れれば、足元を見られて値上げ
される可能性は有るが...
>>48
43のは、アクセス集中でサーバが落ちたみたいだ。
今のところ、>>27のロイター報道が唯一の情報だな。

しかし、特殊な専門用語を使っているから読むのに骨がおれる。
"Mad Cow"というのは、行番号が無くてgotoが普及しないc++の
現状を、狂った牛が柵の中に閉じ込められて暴れる様子に例えた
ものだ。
こんなフレーズは、市販ソフトでの翻訳は無理だな。
0051七氏NGNG
f
0052デフォルトの名無しさんNGNG
>>50
そうなんだ。"Mad Cow"って、てっきり「狂牛病」のことかと・・・
0053デフォルトの名無しさんNGNG
>>27のサーバ復旧したみたい。あいかわらず激重だが。
その内容だが、行の途中への分岐も可能になるそうだ。
これはドキュメント性を損なう改悪ではないかと一瞬思ったが、大きな間違いだった。この仕様は「一行プログラム」を実現するための布石だったのだ。
ベーシックマガジンでC一行プログラムに打ち興じた時代が走馬灯のようによみがえる。
しかも時代は32bit。一行に1600万文字も書ける。>>40の言ってたmain()1個だけのプログラムが、なんと一行で実現する。
夢のような世界。
コンパイラのリリースが遅れるそうだが、もうじっとしていられない。今から仕掛りソースの書直しだ。
005453NGNG
>53
興奮して改行わすれた。

俺はプログラム一行化のため、しばらくここには来れない。
みんな元気でな。
0055デフォルトの名無しさんNGNG
>>27-50(一部除く?)
おまえら暇すぎ。
005655NGNG
>>27のリンク先読んでるうちに>>53-54が・・・
俺も暇かも(w
0057デフォルトの名無しさんNGNG
>>45
関係者の警告を自動翻訳してみました。

>"I don't want to promise them a cure or even a treatment since we don't have any experience of
> how these programs will...act in a clinical coding," Korth said.
> Korthは言った。私は、極限に記述されたプログラムがどう振る舞うであろうか、
>全く経験したことがないため、この行番号が必ずしも有効な記述であると約束する
>ことはできない。

>But Korth said the question was would he try the treatment if
> he had the disease with no known cure. His answer was "yes."
> しかし、Korthは言った、彼がもし有効なコーディング方を知らずにいた
>として、行番号化を試みたいと言ったとしたら、その答えはYesである。

 これによれば、行番号は常に最上の手段ではないが、他の手段(gosub、
ラベル等)と並ぶべき手段であると言えることは間違いなさそうです。
0058デフォルトの名無しさんNGNG
お盆の今、ライバルに差をつけるチャンスかも知れん。
俺もやってみるか。
ところで、一行プログラムで#defineは使えるのか?
53よ。たまには帰ってきて教えてくれ。
0059デフォルトの名無しさんNGNG
>>57
やっぱりメインフレームの翻訳ソフトにはかなわん。
ちゃんと意味が通ってるじゃないの。
0060デフォルトの名無しさんNGNG
参考にしてくれ
http://www.cuj.com/experts/1909/hyslop.htm?topic=experts
006153NGNG
53だ。
みんな元気そうでなによりだ。一行化は始めは大変だったがだいぶ慣れた。
今、23関数をmain()に統合した所だが、エディタが32bit/lineに対応して
いるかどうかをサポートに問合わせたら、即答出来ないというので一休みだ。
心地よい疲労感が全身をつつむ。
サポートは「何に使うの?」なんて不審がってた。例の発表を未だ知らない
らしい。もちろん教えなかったよ。しめしめ。笑いがとまらん。
>>57
Kurthは謙虚だな。もっとも、k&r以上の名誉を約束された勝者の余裕か。
>>58
一行化の真の価値を理解しておらんな。
すべてのソースが一行になるのに、何で#defineが必要なのだ?
やる前からあれこれ心配せずに、コーディング有るのみだ。
検索/置換なんて一発だ。
なにしろ一行しか無いんだからな。
>>60
すまんな。英語よ読むのはもうつかれた。
0062デフォルトの名無しさんNGNG
将来プログラマになりたいのですが
頭が構造化に慣れきっており
gotoを駆使したプログラムを書けるか不安です。

どうやって勉強したらいいですか?
0063デフォルトの名無しさんNGNG
>>62
お若いのにご立派ですね。
さて、お問合せの件ですが、
かつてはgotoの達人は珍しくなかったですが、今は昔ですね。
知り合いに55歳以上のプログラマが居たら聞いてみて下さい。
でも結局はあなたのやる気次第だと思います。
実は私も始めたばかりで、手始めにswitch文をgotoに変換して
いるところです。これならとっつきやすいでしょう?
それでも不安なら、gotoをペアで使って元の場所に戻るという
裏技もあります。なるべく離れたところに使えば、時空を越える
かのようなgotoの魅力を堪能出来るでしょう。
これからは、あなた方の若い力が奔放にgotoを駆使する時代なのです。
21世紀なのですから。
0064デフォルトの名無しさんNGNG
時代が変わっていく。音とも振動ともつかない地響きを立てて。
魔女狩りのようなgoto撲滅の嵐は、今は影も無い。
予想出来なかった訳ではない。
cそしてc++の規格が変わるたび、静かに、しかし着実にgotoの
機能が強化されていたのは知っていた。
そして、それを見て見ぬ振りをしてきた俺。
まさかこんなに早くgotoの時代が...
今回のうねりを乗り切ることが出来るのか、俺は。
0065デフォルトの名無しさんNGNG
終戦に日に発表されるなんて。
彼等はパールハーバーを覚えていたんだ。
0066デフォルトの名無しさんNGNG
このスレッドを上げてはいけない。
少しでも長くこのムーヴメントを世間から隠蔽するのだ。
今となっては、俺たちに残された最後の抵抗手段だ。
0067デフォルトの名無しさんNGNG
そろそろ、Cマガあたりがgotoの特集組んだりするのか。
楽しいような、怖いような・・・
0068デフォルトの名無しさんNGNG
>>66
そうだな。
微力ながら協力しよう。
俺は2倍下げるぞ。
0069デフォルトの名無しさんNGNG
Cマガは既に特集を組んでたはずだ。
5月号か6月号だったと思う。
その時は気にも留めなかったが、こういう事だったとは。
よし、おれは2バイト下げるぞ。
0070デフォルトの名無しさんNGNG
あの、理解できないんですが
どうしてGOTOが見直されてるんですか?

あまり安易に使いすぎると、やはり可読性に欠けるとおもうのですが。
0071デフォルトの名無しさんNGNG
>>70
あなたはGoto使った時ありませんね?
例えば、Whileなどの場合、
while(xxxx)
ですが、
Gotoの場合
xxx:

xxxxxxxxxxxx

if(xxxx)goto xxx;

いいじゃないですか・・・
最高です。

これから時代はGotoです。
オブジェクト指向?
それよりGotoです。
0072デフォルトの名無しさんNGNG
>>70
>>27あたりからの流れを追いましょう。
0073デフォルトの名無しさんNGNG
xxx:

    xxxxxxxxxxxx

if(xxxx)goto xxx;

>>71せめてループの内側は字下げして戴きたいですね。
わたしも構造化プログラミングが染み付いてしまったので。
007471NGNG
>>73
タブ入れてたからインデント無くなっちゃった・・・
0075デフォルトの名無しさんNGNG
これって、ようするに LineSpace パターンだよね。
0076デフォルトの名無しさんNGNG
>>71
私も後藤派だったのですが、先日OO派に鞍替えしました。

オブジェクト指向言語である C++ も才能ある人間が使うと、

- ぐちゃぐちゃに拡張され入り組んだ仮想関数
- 例外の嵐

で非常に美しいコードをかけることが分かったからです。goto + setjmp
を超えるのでは?




……頼む。このコードを捨てて、一から書き直させてくれ。
0077デフォルトの名無しさんNGNG
>>76
Javaでそういうのを見たことがあるよ
コンストラクタで自分自身の仮想関数バンバン呼びまくってすごいことになってたよ
OO最高ですよ
007853NGNG
よし、1本終わった。
しかし32bit/lineとは想像を絶する空間だな。まだまだ入るぞ。
早くもtipsを発見した。フォントをterminalの4ポイントにすれば広範囲を
見渡せて能率が上がった。VSは3ポイント以下を選択出来んな。
vectorフォントなら0.1ポイントまで可能なはずだが。明朝また問合わせよう。
しかし、スクリーンエディタでは無駄が多いな。Edlinまだ持ってたかな?
>>71-74
インデントの概念は一行プログラムにはそぐわん。
>>75
俺の友人がLifeSpiceというアフリカ音楽バンドをやっていたが、改名した。
>>76-77
一から書き直せ。一行でな。

じゃあ寝る。しっかり下げておくように。
0079デフォルトの名無しさんNGNG
>>78
sageる気ないだろう。
008026だがNGNG
娘とバナナワニ園へ行ってる間に、こんな事になっていたのか。
この業界は盆暮れ無しだな。>>26-71
今朝は誇りを持って1関数1ページを主張した俺だが、素直に認めよう。

1プロジェクト1行には負けた。 >>53

今にして思えば、これまでのソースコードに何と空白の多い事よ。
学校や趣味ならこれでも良いが、こんな無駄使いをしているようでは
ISO14000は取れない。奴らは捕鯨禁止などを主張する一方で、密かに
実の有る事も進めていたのだ。今日は終戦の日だ。
0081デフォルトの名無しさんNGNG
あと問題はコメントだな。
俺は常々コメントなぞ不必要なものだと考えていたんだが
これについて意見はないだろうか?
008226だがNGNG
>80
終戦の日は昨日だ。光陰矢の如し。
>81
このテクノロジをもってすればコメントはもはや不要だ。
ANSIではコメントを.hにする事を推奨しているが、これも
過渡的な対応に思える。近い将来、コメントは.dllとして
柔軟に結合されるというのが大方の声だ。
0083通りすがりのものだがNGNG
一行プログラムと聞いちゃあ、黙っていられねぇ。
81はコメントの心配をしているようだが、確かにCでは課題が多かった。
しかし、C++になった今、悪い事ばかりではないぞ。
行頭にダブルスラッシュを置いてみろ。あらゆる問題が解決出来る。
0084デフォルトの名無しさんNGNG
C++をつまみ食いしてthrowを使うとか。
0085◆dElPHlKoNGNG
Delphiにもgotoあったような。
よし今日からオレもバシバシ使うぜ!!
0086デフォルトの名無しさんNGNG
遅レスだけど。
>>36-38
36の言ってるのはFORTRANの行番号のことだと思う。
0087デフォルトの名無しさんNGNG
行番号への対応はどこも苦労してるな。
delphiは新バージョン出たとたんにANSI規格変更で気の毒だ。
tp://www.borland.com/delphi/news/LINENUMBER
0088デフォルトの名無しさんNGNG
>86
FORTRANも分岐先は明示的なラベルが必要ではなかったか?
20年前の記憶なのでうろ覚えだが。
0089デフォルトの名無しさんNGNG
>>87
 DLLとして結合された関数の中にgotoするための「DLLブラウザ」が
professional以上にしか搭載されないのはナメてるな。
 結局金出して買わないといかんのか?
0090デフォルトの名無しさんNGNG
心配はもっともだが、安心しろ。
DLLブラウザは、互換性を維持するための、むしろ特殊な方法だとおもわれ。
これからは、DLLのソースもまとめて行番号をふり直すのが正攻法だ。
関数ごとの行番号では一貫性が無くなり、行番号採用の効果が半減するからな。
最初は面倒に感じるかも知れんが、すべてのDLLの中身を理解する近道だ。
0091デフォルトの名無しさんNGNG
スパゲティーコードってなんですか。教えてください。
0092デフォルトの名無しさんNGNG
このスレは壮大なネタスレですか?
それともコードの追いすぎで壊れた人たちの集まりですか?
009363でございますNGNG
>91-92
やあ、またお若い方たちがお見えですね。
驚くのも無理はありません。
なにをかくそう、わたくしも最初は戸惑いました。
行番号の採用だけなら驚きませんが、行の途中への
分岐も可能になるんですからね。行番号x桁番号で、
アクロバティックなコーディングが思いのままです。
でも、自由は往々にして堕落をもたらします。
堕落を阻止出来るのはあなた方の若い力なのです。
21世紀なのですから。
009471NGNG
>>90
Parl などのScript系も対応するのかな?

さすがにParlは対応すると思うけど(対応が速いから)、他はどうなんだろ?

あと、Java も近々対応させるって。

http://java.san.com/features/?topic=javatech&id=line_num

なんかやっと goto にちゃんとした定義ができたね。
0095デフォルトの名無しさんNGNG
... 自作自演、楽しい?

ほとんどすべての URL は嘘。または関係のない英文サイトへのリンク。
英語読めない馬鹿向けに翻訳結果をならべて煙に巻いているんだろうが。

どうせやるならひとつくらい、内容でっち上げた英文サイトをおいとけば?
0096デフォルトの名無しさんNGNG
>>95
わかってないなぁ・・・

>... 自作自演、楽しい?
わかってないなぁ・・・

>ほとんどすべての URL は嘘。または関係のない英文サイトへのリンク。
わかってないなぁ・・・

>英語読めない馬鹿向けに翻訳結果をならべて煙に巻いているんだろうが。
わかってないなぁ・・・

>どうせやるならひとつくらい、内容でっち上げた英文サイトをおいとけば?
わかってないなぁ・・・
0097デフォルトの名無しさんNGNG
>>96
違う。
わかってないのはお前だ。

>>95はわかってないわけではない。
わかっててあえて、あのような行動に出ているのである。
なんでそんなことするかって?

>>95は北朝鮮のスパイだからだ。
日本においてgoto復権が達成される事への危機感を深めた北朝鮮が
妨害工作を始めたのだ。
009896NGNG
しまった・・・

どうも変な文章を書いたと思ったら、
北朝鮮のスパイにマインドコントロールされてたのか!

くそっ 不覚だった・・・
009926だがNGNG
日テレの津田梅子物語を見ていた。
分野は違えども真の開拓者の姿には共通点が有る。
さすがのDr.Korth(>>27)も、自らの革新に対する風当たりの強さには
戸惑っている事だろう。時代が変化する時はいつもこうだ。>>27-71
>>53のように果敢に前進する者、
>>63のように老獪に身をゆだねる者、
>>64(95)のようにうろたえる者..
誰が勝者となるかは今は解らない。
彼等を非難することを咎めはしない。
それが自分自身への精神の叫びであることを自覚しているのならば。
0100デフォルトの名無しさんNGNG
うましかじゃん
010126だがNGNG
みやみに上げてはいけない。
たとえそれが、霧番取得の魔力に負けた結果であっても。
どんな小人にも、決して侵されざる尊厳があるのだから。
0102デフォルトの名無しさんNGNG
>>101
つまり下げるときは全角でってことッスね?
0103デフォルトの名無しさんNGNG
人間は思想を隠すためでなく、思想を持ってない事を隠すために語ることを覚えた。
−キルケゴール−
0104デフォルトの名無しさんNGNG
>>57が原文をいじくった時点で、英語分かんなくても気づくと思うんだがどうよ?
0105デフォルトの名無しさんNGNG
文章は引用された時点で作者の意思から開放される。
ただし、この事を学校では教えない。
010626=53=63=64(!95)NGNG
このスレッドは使命を果たした。
いつかどこかで、また会おう。
0107デフォルトの名無しさんNGNG
>>26>>53>>63>>64>>!95
スパゲッティプログラムの読み方はどうでもよくなったのか?
010862とか97とかNGNG
>>104
>>57まで逝かなくても>>27の話が胡散臭いし、英語わかんなくても
リンク先にもC++やANSIって単語がないことから気づくと思うんだがどうよ?

>>106
あんた結構いい線逝ってると思うよ。
010986NGNG
>>88
任意の行にラベルを振ることができて、そこへGOTOできるんだけど、
そのラベルが数字しか許されてない(行番号=ラベルとなる)のがFORTRANじゃなかった?
0110デフォルトの名無しさんNGNG
Rubiy-talk で紛糾してたよ。
Rubiyの行番号を Fixnum のサブクラスとするか Continuation のリテラル表現とするかで
意見が割れてるみたい。すべてがオブジェクトというのも厄介ですな。
0111デフォルトの名無しさんNGNG
既に行番号と呼ぶにふさわしくないと思われ
0112デフォルトの名無しさんNGNG
ていうか狂牛病病原プリオンの話題を行番号ネタとして紹介した>>27のセンスに脱帽だなコリャコリャ
0113デフォルトの名無しさんNGNG
>>112
センスがあるとは思わないが....

つまらなかったし。
0114デフォルトの名無しさんNGNG
...
↑これ使ってる人って少数派だよね。
最近>>95と>>113しか見てないよ…。
0115デフォルトの名無しさんNGNG
確かに・・・とか…はあるけど...は見ないな
0116デフォルトの名無しさんNGNG
そうか?

プログラム技術板だけでも数人いるようだが?
http://piza2.2ch.net/test/read.cgi?bbs=tech&key=995694473&st=93&to=93&nofirst=true
にもいるし...
0117デフォルトの名無しさんNGNG
ふふ
0118デフォルトの名無しさんNGNG
他にも味の有るのが居たのに、26と共に去りぬ か。
じゃ、おれもそろそろ行くわ。
みんな体にだけは気をつけろよ。
0119デフォルトの名無しさんNGNG
http://www.ne.jp/asahi/personal/kobayashi-osamu/Writings/Essays/Spaghetti.html
0120デフォルトの名無しさんNGNG
まぁ、スパゲッティでも何でも最終的に動けば良いさ。
綺麗なソースが安全で早いってわけでも無いし、逆もまた然り。
ってそれ言っちゃお終いなんだが。
しかもスレの主旨とずれてそうだし。
0121デフォルトの名無しさんNGNG
>>120
ってかずれてます。
0122デフォルトの名無しさんNGNG
絡まった釣り糸をほぐすには
一つ一つ丁寧に分けるか
燃やして滅して忘れ去るのどちらかしかない。
0123デフォルトの名無しさんNGNG
スパゲテイの問題点はその可読性よりも、仕様変更の難しさにある。
スパゲテイはちょっとした変更しようとも、その解が得られない場合が多い。
逆に、無理やり解を見つける作業の繰り返しが、大規模なスパゲテイを生成しているとも言え、
些細なスパゲテイから将来の大混乱へ派生することがあることを常に考慮すべきだ。
0124デフォルトの名無しさんNGNG
>>122-123
というわけで、リファクタリングの本には、絡まった結び目を
どうほどけばよいか?が、一つ一つ詳細に説明されてるってわけだ。
0125デフォルトの名無しさんNGNG
http://piza2.2ch.net/test/read.cgi?bbs=tech&key=984182993

これらはスパゲティですか??
0126「人のバグ見て、わがバグなおせ」01/09/01 01:48ID:N2P03Y3g
Excelにコードを貼り付けて、付箋とかでメモをガンガンつけて、
ハイパーリンクで関数の呼び出しを表現して、2,3人でレビュー
する。どうせいない人だから、むちゃくちゃ悪口言って、笑いながら
なおす。
ひとりでやるともっとスパゲティになるのでご注意を。
0127デフォルトの名無しさん01/09/02 00:23ID:aFbnRb8I
>126
Excel貼り付けに一票。
どうせ、紙にプリントアウトしなきゃ前に進まんだろうから。
1.複数列印刷(カット&ペーストは自力で) や
2.長い列だけ縮小(一行300文字なんてのがあるだろう?改行すると行数が変わるし。)
が出来るだけで地獄にホトケ。
0128デフォルトの名無しさん01/09/02 00:27ID:IRVzVOpk
>126-127
tabを使ってると厄介だな。
vsは設定でtabとspaceを切り替えられるが、
既に書かれたtabをspaceXnに置換する簡単な方法は有る?
0129デフォルトの名無しさん01/09/02 00:43ID:LluL/RIY
>>127
後、EXCELにペーストした後に欲しい機能
1.色分け
 カラーレーザーがこれだけ普及しているのに白黒印刷はむなしい。
 セル内の文字列を選択してプロパティイ変更は出来るが、一発で
 置換出来るコマンドが無い。よね?
2.関数の区切りで改ページできるプロポーショナル行間設定
0130デフォルトの名無しさん01/09/02 01:07ID:xicbm3Eg
カラー印刷か。良さ気げだな。
VisualStudioのソースを印刷するとカラーになるのか?
単独キーワードや、中・小カッコの対応を色分けしてくれる
エディタって有る?
0131デフォルトの名無しさん01/09/02 03:47ID:3bXnTTWA
誰かの言葉で「動いているプログラムは全て美しい」というのがあったが
あれはウソなのか?
0132デフォルトの名無しさん01/09/04 14:09ID:36bZ5Kfo
そりゃ動いていること自体は美しいが、こっちは汚い中身をいじくる方な訳で。

美しいアヒルでも水の下では一所懸命足をバタバタ……って話があったっけ。違うか。
0133デフォルトの名無しさん01/09/04 14:48ID:y/VspVw.
>>131
生きている人間はすべて美しい、と同じぐらいにはウソ。
0134デフォルトの名無しさん01/09/05 13:17ID:dcMqU0JI
まあなんだかんだ言ってもgoto文がそこかしこに出てくるプログラムはイヤだけど、かといってgoto文を使わないとまともなプログラムを書けないってのには同意せざるを得ないね。

一番困るのがブロックを途中抜けする場合。
C++やVBは曲がりなりにもブロックを途中抜けする文があることはあるけど、Delphiにはないからその場合はイヤでもgoto文を使わざるを得ない。
たとえばこのようにね。

procedure Hogehoge;
label
ProcedureExit;
begin
なんたらかんたら
if なんたらかんたら then
begin
 なんたらかんたら
 goto ProcedureExit;
else
 なんたらかんたら
end;
なんたらかんたら
ProcedureExit:
end;
0135デフォルトの名無しさん01/09/05 13:32ID:jBt/U5BQ
>>134
CやBasicやPascalがへぼいというだけのような気が。
制御構造くらい自作できないと他の奴等に上を行かれてしまうぞ。
0136デフォルトの名無しさん01/09/05 13:38ID:s.cf87tE
gotoはよく問題になるけれど、
プログラムスイッチ的なフラグも goto と同じぐらい害悪だと思う。
必要な時には使うべきなのも同じだが。
フラグは設定する箇所と参照する箇所がどこにでも置けるのがガン。
フラグで分岐するときに、そのフラグをどこで設定しているかを、
フローを辿らないと把握できないのは非常に困る。

実体的な状態を表すフラグだったら、
設定箇所、参照箇所で独立して読めるからいいんだけどね。
0137デフォルトの名無しさん01/09/06 16:57ID:0OgeC6l2
gotoにnewをからめてつかうと
おいしい素パゲティのいっちょ出来上がり
013813401/09/06 19:38ID:2b2j3zrU
>>135
スマソ。調べてみたらDelphiでもExit文やBreak文でブロックを途中抜けできるんだった。
でもgoto文はやっぱり使わないに越したことはないわな。
かといって意地でもgoto文を使わなかったために見づらくなるのも困るが。
0139デフォルトの名無しさんNGNG
>>128

tr使え。
0140デフォルトの名無しさんNGNG
あれ?
0141デフォルトの名無しさんNGNG
じゃあ、みんなで関数型言語に移行ってことでファイナルアンサー?
0142結論NGNG
つまり、最良のスパゲッチープログラムへの対処法は。
こいつらの意見など聞かず、自分で仕様書を読んで1からプログラムを作り直せと
言う事だ。
0143デフォルトの名無しさんNGNG
オリーブ油かけて丁寧にほぐせ。
0144デフォルトの名無しさんNGNG
バターの方が好きだな、マーガリンでも可。
0145デフォルトの名無しさんNGNG
フラグ害悪論に一票
0146デフォルトの名無しさんNGNG
>>142
激同。
しかしそれをやると給料が仕事量に見合わなくなる諸刃の剣・・・。
素人にはオススメできない。
0147デフォルトの名無しさんNGNG
>>134

try使え。
0148デフォルトの名無しさんNGNG
スパゲッティプログラム自動整形ツールならつくれそうじゃない?
他人に読まれたくないプログラムは…
0149Kusakabe YouichiNGNG
In article >>148, 148 デフォルトの名無しさん wrote:

> スパゲッティプログラム自動整形ツールならつくれそうじゃない?

っていうかcb -sしろ(indentでも可)
0150デフォルトの名無しさんNGNG
あなた達はわかっていませんね。
スパゲティは暗号化の一種です。
わざと読みにくくしているのです。
0151デフォルトの名無しさんNGNG
読まずにデバッガで追え
0152デフォルトの名無しさんNGNG
同値問題停止問題。。。
0153デフォルトの名無しさんNGNG
>>読まずにデバッガで追え

正しい....。

スパゲじゃないけど、N88-Basic使って組まれた制御系プログラムを
VBに持ってくときは大変だったよ。造りなおしを許してくれないもん
だから、N88エミュに近いものをつくっただーよ。
0154デフォルトの名無しさんNGNG
スパゲッティなプログラムは、
カリ城でルパンと次元がやってたようなイメージで
読み解けばいいんですよ。
まぁ、イタリアンに限りますけどね(´ー`)y−〜〜
0155デフォルトの名無しさんNGNG
言語やgotoが悪なのではない。
カスプログラマが悪いのだ。
カスプログラマの生成物が結果としてgoto文だらけだったり、
N88-Basic製だったりするだけだ。
言語やgoto文を滅ぼすよりカスプログラムを殲滅するほうが
抜本的解決方法だ。
0156デフォルトの名無しさんNGNG
ruby!
0157デフォルトの名無しさんNGNG
腹減ってきた。。。
0158デフォルトの名無しさんNGNG
もうすぐ辞めるときにすごいのつくって置いて来た
0159デフォルトの名無しさんNGNG
逆アセンブルしてデバッガで追えば?
■ このスレッドは過去ログ倉庫に格納されています