1read 100read
2013年17プログラマー90: スパゲッティコーダーについて語ろう (199) TOP カテ一覧 スレ一覧 2ch元 削除依頼
スパコンとパソコンの違いってスピードだけだよね? (148)
救世主として偽装派遣されました。 (218)
A型のプログラマーは神 (353)
プログラマーなら単体テスト(UT)も実装しよう (196)
お前らがプログラム書いているときに聴く音楽 (363)
特許庁に関わってしまったマ (125)

スパゲッティコーダーについて語ろう


1 :2012/07/07 〜 最終レス :2013/09/21
-スパゲッティコード、スパゲッティコーダーとは
-スパゲッティなコードはどうやったら回避できる
-こんなスパゲッティーなコード書いてるマがいた
-マが考えるおいしいスパゲッティの作り方
-何が原因で人はスパゲッティなコードを生み出してしまうのか
-スパゲッティを解くときのコツ
みたいな、スパゲッティに関することを話すスレがなさそうなのでたてました。
スパゲッティに関する持論や、職場での体験談などお聞かせください。

2 :
んでとりあえず自分から
この間スパゲッティを履き違えてる人いたんだ
自分が理解できないコードは全部スパゲッティらしい
だから、自分が理解できる自分のコードはスパゲッティじゃないと思っているらしい
この人に、どうやって真実を伝えれば、事を穏便に済ませられ、みんなハッピーになれると思う?

3 :
1メソッドに処理つめこんであったら、
コメントとかで処理概要な意図などしっかり書かれててもスパゲッティと呼べる
どうみてもマに向いてないタイプの糞コーダーはだいたいこのタイプ
新しいクラス作るときでも、まず似たようなクラス全体をコピペしてきて、処理を削る作業からコーディングに取り掛かる
無駄な手打ちをしろとは言わん
だが、まず最初に他のソースコピペからはじめる奴は、ほぼスパゲッティ職人の素質あると思うわ
メソッド呼ぶコストとか意識しないといけないような環境なら1本道処理も意味ある場合もあんのかもしらんが、
少なくともうちの職場でやってる仕事にそういうのはねーしな

4 :
http://www.codeodor.com/About.cfm

5 :
麺は少し塩を多めにいれ、茹でるだけ。ソースと同時並行でやるのがいい。
ソースはオイルソースがお手軽で簡単。
芯をとって縦に薄くスライスしたにんにくと、オリーブオイルを50cc〜くらいを、適当なパンに入れて弱火で加熱し、
種とった唐辛子を適当にちぎって入れる。(辛いほうが好みな人は、唐辛子の種も入れちゃってもいい)
にんにくに薄く色がつくくらいまで、じっくり香りと唐辛子の辛味をオイルに移したら、
一度オイルとにんにく唐辛子をパンから出して、ベーコン、セロリ(具は割と何でも合う)なんかを炒めて、
白ワインをちょっと加え(なくてもいいけど個人的にオススメ)、火が通るまで軽く炒める。
オイルと唐辛子、にんにくを戻して、麺の茹で汁をお玉一杯分くらい加えてソース完成。
味付けが足りないときは、軽く塩なんかを足して調整するといい。
同時作業は2口コンロないと鍋変えながら並行作業とかになって結構面倒だけど、
お手軽でおいしい、ペペロンチーノの完成です。

6 :
スパゲッティなら解けるが、お団子は解けない

7 :
既存メソッドにフラグ引数追加すんなや!!

8 :
コピペを繋ぎ合わせてたら、絡まっちゃったw (テヘペロ

9 :
疎結合だった所をいくつもまとめて密結合にしないで下さい
あんただけレビューに時間かかるし手戻りも多いんだから自覚してるだろうに

10 :
コピペコーダーはスパゲッティ職人でもある

11 :
スパゲットーニコーダーやスパゲッティーニコーダーは?
フェデリーニコーダーやカッペリーニコーダーも。
マカロニコーダーとかはまた別?

12 :
むしろ、仕様変更繰り返すと、簡単にスパゲティになるよ。

13 :
マカロニって見た目だけで中身はスカスカってことか?

14 :
コンキリエコーダーとかなんかKHTMLとそれの派生関連の開発してそう。

15 :
パスタ全般の話してたら、きりがない

16 :
ここはいっそうどんコーダーで。

17 :
スパゲッティコードの修正頼まれたらさらに意味不明なフラグを用意してジャンプ先でさらにフラグをセットして
そのフラグを元にジャンプしたりさせてさらに難解にする

18 :
>>12
要求者のクセを先読みしないと無理だよな。
毎回リリース間際にスペシャルifを要求してくるし。

19 :
スパゲッティ食べたくなってきたぞどうしてくれる

20 :
>>19
スパゲッティを食べたいのならスパゲッティを食べればいいと思います。

21 :
>>2にもあるけど、スパゲッティの定義も人それぞれだから、何を持ってスパゲッティというかは微妙なとこだな
馬鹿の考えるスパゲッティは、実は保守しやすく見通しがいい、クラスがきちんと作られてるいい実装だったりもするしww

22 :
賢いフリしてる馬鹿の文章そのままなんだよなぁ

23 :
>>21
そういうのはスパゲットーニと言って、ミートソースのような重いソースでも比較的ほぐれやすい。

24 :
具体的に、どういうのがスパゲッティだと思う?

25 :
>>24
メソッドが入り組んでる
aの中でb
bの中でc
cのなかでd
特に理由もなく

26 :
>>25
それじゃ、a->b->c->dの一本道じゃないか。
せめてdからbを呼ばないと。

27 :
一メソッドに20行超とか、アホみたいに機能詰め込んでるやつは、
そのメソッドのなかがこんがらがっててとてもスパゲッティ

28 :
・公開されてるメソッド名やフィールドが俺々略語。
・1メソッドが無駄に長かったり、内部処理が全く分割されてない多機能メソッド。
・似た処理をコピペしたコードが点在している(仕様変更が入ると、修正箇所が増大するのでスパゲティ)。
・リテラルのハードコーディング'(同上)。
・インナークラスや匿名クラスの多用。
・他所の参照を持ちすぎ。
・temp/tmp/hoge/moge/hage のような汎用名の多用。
最後の派、1メソッドが長くなければローカル変数名は何でもいいと思うけど、
一本糞メソッド作る奴はローカル変数もこういうのばっかり使うしな
とにかく後の事何も考えてないあほ実装は、糞コードでとてもスパゲッティだと思ってる
あちこちに依存しててこんがらがってたり、コピペ量産しまくってたり
>>25
メソッド多いってだけじゃ読み解く側の理解力不足ってだけな事もあるだろうから、
入り組んでるかどうかは、実際のコード見てみないと判断つかない希ガス
メソッド名も理解しようとしなければ、IDEもろくすっぽ使えなくて
スクロールしまくってメソッド参照さがしたりしながら、複雑だーって言ってたりする奴うちにいるしw

29 :
>コピペ量産しまくってたり
ネットで拾った大量のコピペを繋ぎ合わせて、コンパイルが通っただけで俺スゲェ
1日にコピペした「ステップ数」が俺スゲェ
…そんな文系脳の偽プログラマを混ぜないで下さい、本当に。

30 :
スパを書き他人のスパを紐解くところから修行は始まるのじゃよ

31 :
リゾットを分けるとリゾットごとにやってることが分かりやすくなるけど、
リゾットを呼ぶごとにかかるペナルティがわりとシャレにならないこともある。

32 :
やっぱスパゲッティとリゾットは一人暮らしの料理として最適だよな
すぐできるし、ごはんたかなくてもいいし

33 :
>>31
メソッドコールの負荷なんかも考えないといけないようなアレな環境だったらそうだけど、
今日日そうじゃないほうが多いからなー
コンパイラーさんのおぷちまいざーがやってくれるくらいで十分だったりする
微々たる差を埋めるより、あとで見返したとき考えないですぐ作業できるようなのが望ましい

34 :
「オブジェクト指向」と「オブジェクト指向プログラミング」と「オブジェクト指向プログラミング言語」
http://engawa.2ch.net/test/read.cgi/poverty/1342142253/

35 :
スパゲッティだと女性うけしないからパスタにしよ

36 :
つってもスパゲッティ以外を食う機会なんてそんなに多くないけどなw

37 :
日本人なら蕎麦コードだろ。
いや、たれ流し的に作っていくから、流しそうめんコードか?
流した後は俺シラネって意味でもしっくり来るな。

38 :
トコロテンもあるでー

39 :
納豆コード

40 :
当たり前なんだけど、 obfuscatiin したコードは強烈なスパゲッティで全く読めなかった

41 :
>>37
盆栽コードと呼びたいね
意図不明に捻じ曲がって何処と繋がっているかよくよく目を凝らさないと判らないようなところなんか特にね

42 :
>>40
ウィルスの(検出を逃れる為の)変種って単に obfuscation 追加してるだけらしいね
スパゲッティにもプロダクトとしての実用性がある例だね

43 :
「なんで、このクラスにその関数や変数を突っ込んじゃったんですか!(ありえないっしょ・・・)」
「そこに、クラスがあったから」

マロリーかお前は

44 :
何をどのクラスやネームスペースに入れるかは熟練した人でも結構悩む設計に直結するから
ましてや新人やスパゲッティストにわかるわけがない

45 :
とりあえず動くし

46 :
明日までにとりあえず動くサンプルを用意して
元凶は客に良いかっこ見せたいアホのこんな一言の積み重ねにある

47 :
しかも「朝イチまでに」

48 :
「とりあえず動くし」をやめれば、デバッグの工数が激減すると思うのだが、
あくまでも思うだけなんだよな・・・・実際はどうなんだろう・・・・・?

49 :
生産性が下がります

50 :
クラス設計、テストの実装がきちんと出来ていればデバッグ工数は格段に減るよ
改修コストもかなりかるいし、UTあるとリファクタリングしやすいからいかようにも出来る
Excelチェックシートのテストとか頭悪い事この上ないって思うようになるよ

51 :
曜日と時間から漂う絵に書いた餅感が尋常じゃない件

52 :
>>51
こういうのは恨み節というんだよ
実感こもっている

53 :
>>51
週末は早寝しなくていいからなw
普段は朝6時起き、8時半始業〜の5時定時だから、その反動で夜更かししたくなるんだ
ああでも絵に描いたもちなのは確かにそうだ
最近やってるのはずっとそういうのが全くない環境で、頭の悪い仕事ばっかやってて気が狂いそう
腐ったスパゲッティをどうほどくのが今後楽になるか、ってことばっか考えてる
ほどく蕎麦からバグ出てくるし…

54 :
>>53
麺類好きだな

55 :
いま一つなSEの仕様書や設計書内容も、顧客が示す受け入れテストの内容も、開発工数には影響するけど、
アレな人が自分のアイディアで編み込むスパゲティーの原因にはならない。
当然、スパゲティーによって後日の改修工数が膨れる事の予防にもならない。

56 :
貸し借り無しの、20年前に戻してあげよう。

57 :
>>50
そもそも後でリファクタリングしないといけないようなものなんて・・・・・・

58 :
ソフトウェアの開発能力:アメリカ、韓国、台湾産>>>>>>越えられない壁>>>>>>日本
国産スマホ期待の星 富士通ARROWSがカクカク・誤タッチ
http://ggsoku.com/2011/11/arrows-x-lte-f-05d/
181:名無しさん@涙目です。(dion軍):2011/11/30(水) 01:17:58.93:ID:zDKGRYD00
アメリカ、韓国、台湾産>>>>>>越えられない壁>>>>>>>>>>>>国産
なんでこんなに差つけられてんの?ほんと終わってるわ
192:名無しさん@涙目です。(茸):2011/11/30(水) 01:21:24.29:ID:79rmmTkM0
>>181
根本的にはソフトウェアの技術者を育成しなかったから
ただし賃金に見合うスペックの技術者を育てられたかというと難しい
205:名無しさん@涙目です。(アラバマ州):2011/11/30(水) 01:25:04.49:ID:6LGomvLY0
GALAXY Sとか1年半前の端末に負けるって終わりすぎてるだろ
327:名無しさん@涙目です。(長崎県):2011/11/30(水) 02:33:08.04:ID:bE6U4pHC0
本当にソフトウェアの開発能力がないんだな、日本は…どうすんだ、これ…
ガジェ大好き名無しさん 投稿日:2011年11月30日 15:53 返信
日本の開発環境→二次三次四次下請けへ丸投げ人員ピンはね業
実際にコードを書いてるのは五次下請けあたり
派遣まみれでプログラミングなんて知らない人達が書いてます
ガジェ大好き名無しさん 投稿日:2011年12月2日 09:47 返信
プログラミングを知ってるのは逆に一番下請の人たちだけど
何故か設計は元請けのプログラム知らない自称SEが設計してますwww
そりゃ日本の端末はダメだわwww
ガジェ大好き名無しさん 投稿日:2011年12月2日 12:30 返信
だってプログラミングのプの字も知らない奴らがポンチ絵描いて下請けに投げてるだけだもん
日本の産業糞すぎ

59 :
>>58
いつも思うんだけど、日本ができていないのは
個々の技術者のスキルを一定水準に持ち上げることじゃなく
開発設計フローの組織化と最適化じゃないのか

さらに言えば、「ものづくり神話」(←勘違い!)のせいで
メカ>>>>>>エレキ>>>>>>ソフト
の順で技術者の「エラさ」が固定されているから
マイクロソフトやアップルのような企業は日本では出現しない
「昔の家電がiPhoneひとつに収まっちゃいました(電機業界が儲からないわけだよね)」って
画像を見たことがあるけど、まさにそれ

60 :
日本のソフトウエア技術者と掛けて原子力保安院と解く。
その心は、
おまえら全員素人じゃないか!
(記者会見でブチ切れた記者のヤジ)

61 :
うぉーたーふぉーるで縦に割れまくってるくせに出来上がるものはスパゲッティ
流すなら素麺みたいにもっとつるっとおいしく頂きたいもんだわ
ソフト系の業界はほんとアレだよな
何がダメって、大手が技術力を持たなさ過ぎ軽視しすぎでアレ
伸びっこないわ

62 :
日本のIT産業の失敗には次の2つの理由がある
他産業への従属化に舵をきったこと
利益を重視してヒトやモノへの投資より消費を優先させたとこ
これのおかげで使い捨て奴隷ばかりが増し人材を作る環境が潰え
知識や技能の向上を人任せにさせ人材を作ろうという風潮まで潰えた

63 :
ジョブスのスピーチを有難がって買い求めるサラリーマンとか笑えるwwwww
笑える・・・

64 :
ジョブズに限った話じゃないだろ

65 :
カッコいいところだけ一流の経営者のまねをしたいだなんてどんだけ小児的なんだよ
まるで現政権の首脳陣だよ

66 :
ジョブズのスピーチって全部ゴーストライターが書いてて、本人は教養もなくゲスなアホだったらしい。
ジョブズが本当にドヤ顔で言ってた言葉としてAppleの幹部が非公式に認めているのは
ゲイツのチンコはマイクロでソフト
事あるごとにこのオヤジネタ繰り返して悦に至ってたらしいね

67 :
>>66
wwwwwwwwwwwwwww
グッジョブw

68 :
ジョブスも一応半田付けくらいはやったぞ。ほとんど肝心なところはウォズが作ったけど。

69 :
自分の作った会社から追い出だされるような人だしな

70 :
ジョブスは偉大だ

71 :
N-BASICあたりでは、サブルーチンなし、条件比較分とGOTOだけのプログラム書いてたよ。
いまみたらさっぱり解らん、当時の俺は天才かもと思ってしまう。

72 :
>>71
しかも、DAT文でマシン語だからね。

73 :
>>66
”自分はアホ”と自分で認識していたんで優秀なゴーストライターを雇った
ってところが賢いと思うんだが

74 :
引継ぎさせられると素人PHPerのスパゲティソースがマジでむかつく
更地にしてやりたくなる

75 :
>>74
フレームワークの使い方わかってなくて、めちゃくちゃなことしてたりするよな。

76 :
あるあるすぎる
こっちは納品後のソースに対し客が内部で開発してぶち壊した挙句
バグだってこっちに障害報告あげてきててマジはげそうだわ
内部開発自体もう数年繰り返してるんだから、少しくらい言語仕様学べよ…

77 :
納品先が中身いじったんなら当然追加費用取れるだろ?
なら、別によくね?

78 :
いや金の問題じゃなくて、いつまでたっても成長しない相手を嘆いてるんじゃまいかと

79 :
最初なら丁寧に説明して対応する
二回目でも次からガンバレの気持ちで普通に対応する
でもそれが三度四度と続くと、お前等いい加減に汁!と怒りたくもなる

80 :
いや、最初に譲歩しちゃダメ
ビジネスなんだから
そこ納得してくださいってことは丁重に説明するけど譲歩はダメだ客がつけあがる

81 :
>>77
大手だから、客とやり取りしてる立場じゃないからなぁ
コード自体全て向こうの持ち物だっていう契約で、
渡されたコードに対して機能改修とかを加えるっていうアレなスタンスだから、どうにもならん
ぶっちゃけスパゲッティが量産されすぎてて、もう手に負えない

82 :
>>78
それもあるなー
自分なんて、今の仕事始めて1年半弱くらいだし、プログラミング言語経験もほぼ同じくらいしかないにわかマ
そこに入ってから勉強しただけだってのに、なんか気づいたら一番詳しい人みたいな扱いされてたりする
客で開発してる奴も、うちで開発してる奴も、そういうの勉強する意思みたいなのあんまないしなぁ
動けばいい、あとの事は知らんって感じ
>>80
直接相手したことはないけど、うちのとこもだいたいそんな感じになってるっぽいな
客の客が相当馬鹿なこと言ってるらしくて、客がそれを丸呑みする状況になってるくさい…
やっぱ水が落ちてくるような感じの仕事はもうだめだと思うわ
とてもておくれている

83 :
ウォーターフォールモデル、死すべし!

84 :
>>83
ちゃんと設計やレビューがあるなら良いと思うの。実際は分析者なり設計者が思い付いたことだけ書き付けて、責任は後工程になすりつけるのが問題かと。
途中参加で仕様確認したら、何となくわかるやろとか、いい感じでと言われたよ。しかし、作り上げたもの見て思ったのと違うと言う。

85 :
本当にほしいと思ってる人間と、作る人間の間に無駄に人が挟まりすぎるのが問題

86 :
更に、仕様変更と言う名の手戻りが頻発するしな。
元の落水教授の論文では、それは全く別案件として新規料金が発生する
としてるが、現実問題としてIBMでも無い単なる派遣SIerの営業がそんな
交渉力持ってるはずもなく…
パンダは、タイヤブランコにブラ下がってれば良いと思うよ。

87 :
あって当然の機能だから仕様にはないがあるものと思ってた。
なんのための仕様確認だよ。

88 :
<?php
function();
?>
HTMLタグ
<?php
require(・・・);
?>
HTMLタグ
<?php
$・・・=new xxx();
・・・
?>
こういうソースがマジで嫌い。
javascriptとHTMLでスパゲティなのに、更にPHPでスパゲティw
しかもクライアントからコメントつけんな、引継ぎ前のソースそのままにしろとか、そういう仕事が回ってきたときの頭痛がハンパない

89 :
>>88
アクセスカウンター埋め込むだけとかなら、そういう方が楽だけどな。大きくなってきたら変えるとか言うけど、大きくなってくると変えるの大変とか言い出すんだよな。

90 :
そんな人達のためにRailsがある
というか、PHPでもMVCベースのフレームワークがあるんじゃねえの?

91 :
>>90
その導入コストの話です。

92 :
変えたくなくても、セキュリティの為にRubyを上げたらRailsも上げないといけなくて、
そして非互換性に泣かされる。
>>88
>引継ぎ前のソースそのままにしろとか
これ、どこのクライアントも言うよね。変更箇所は最小限にしろ、とか。
かえって大変なんですけど。それも凄く…。
そんなソースコードに限って、600万行も有って、初期は16bit MS-DOSコーダが
書いてたりして、intをshortに#defineしてたり…。それを64bit環境で元のソースを残せだと??

93 :
>>91,92
スパゲティは嫌、フレームワーク導入への意欲も無しもじゃあ単なる無能だろ

94 :
>>90
メジャーなものではCAKEPHPとかあるけど、デフォルトでソース汚いよ。
>>92
引継ぎ前のソースがスパゲティで統一感がないともうむちゃくちゃだよな。更にコメントが意味不明だったり無かったりする。
オブジェクト指向で書くのはいいんだけど、コーダーごとにルールが無茶苦茶だったりとか。
そのスパゲティソースを何万行、数百ファイル規模で現状維持と着たらもう皆こんな感じ
    /\___/ヽ  ?       
   / --=  、_:::::\nn     
  .| (●),ン <(●) 、.:|..| |^n   
  |   ,,ノ(、_, )ヽ、,, .:::::|.|..| |.|   
  .|   _,ィェエヲ`  .::::::|! : :|   
   \  `ー'´  .::::_人  :イ  
   /`ー‐--‐‐―´\|  │

95 :
変更箇所が少ない方が工数が少ないと勘違いしてるのか、
変更箇所が空くなければ管理工数が少なくて済む(=俺たちの仕事増やすな)
のどちらかだとおもうよ。

96 :
>>93
>>91でも言っているように、どこからスパゲティになるのかという話です。
スパゲティのおそろしいところは、あたたかいうちはマキマキできるが、時間が経って冷めるとマキマキしたときに全部くっついてくる依存関係。

97 :
>>96
だからここで愚痴ばかりたれていないで、スパゲティをからませない上手い方法が
ないかを真面目に考えよう、と言ってるんだが。

98 :
>>97
スパゲティなら茹で上がったら直ぐにオリーブオイルをからませば絡みません。
スパゲティは絡みやすいのでからまないパスタを使えば良いのです。

99 :
>>97
単なる無能だろうと蔑むと絡まなくなるの?

100read 1read
1read 100read
TOP カテ一覧 スレ一覧 2ch元 削除依頼
正社員で派遣(常駐)されてる奴は目覚めたら? (486)
派遣の人って一生派遣する気なの? (196)
スペランカーごっこ 7周目 (346)
面接に来たすごいやつ晒せ (114)
ベインキャリージャパン 未払い報酬 曽根原 稔人 (116)
腐れホワイトカラーはもう要らない、これだけの理由! (295)
--log9.info------------------
Espresso : Web統合開発環境 【MacRabbit】 (348)
ジョブズがビル・ゲイツに勝てないと思った瞬間 (195)
なぜMacBook Pro Retina displayは失敗したのか? (514)
iPad・iPod大幅値上げ (114)
[S] Scrivenerで物書きを楽しもう - 2 - (342)
iPod Touch & iPhone アプリ情報その2 (921)
MacOSX86 初心者およびノートPCスレ (359)
UNIX(Mac OS X等)はなぜオワコンOSになったのか (107)
【Wineベース】Windows互換レイヤ“CrossOver Mac 3 (835)
ペインター━━━━(゚∀゚)━━━━ !!!!! Part8 (689)
ATOK好きなんだけど 16 (828)
結局、Mac用2chブラウザどれが一番いいの?13 (173)
MacBook Pro Retina Display Part 29 (593)
MacFanとMacPeopleどっちが好き (130)
Macで使うのにお勧めのモニタ (753)
Thunderbird その4 (106)
--log55.com------------------
【南勝久】ザ・ファブル Part53【週刊ヤングマガジン】
【避難】☆ヤングジャンプ総合スレッドPart372★【誘導】
【避難誘導】山田恵庸 サタノファニ 34日目
【避難】原泰久 キングダム 446【誘導】
【赤坂アカ】かぐや様は告らせたい〜天才たちの恋愛頭脳戦〜 ☆432
【赤坂アカ】かぐや様は告らせたい〜天才たちの恋愛頭脳戦〜 ☆433
【避難】☆ヤングジャンプ総合スレッドPart373★【誘導】
【赤坂アカ】かぐや様は告らせたい〜天才たちの恋愛頭脳戦〜 ☆434