ホーム
おまかせ表示
ログイン
設定
MonoBookについて
免責事項
MonoBook
検索
「
スパゲッティコード
」を編集中
警告:
ログインしていません。編集を行うと、あなたの IP アドレスが公開されます。
ログイン
または
アカウントを作成
すれば、あなたの編集はその利用者名とともに表示されるほか、その他の利点もあります。
スパム攻撃防止用のチェックです。 けっして、ここには、値の入力は
しない
でください!
'''スパゲッティコード'''([[英語]]:spaghetti code)とは、スパゲッティのように複雑に絡み合い、理解に苦しむ[[ソースコード]]のことである。 == 概要 == スパゲッティコードは初級者から中級者までの[[プログラマー]]に好発する精神疾患である。 == 主な原因 == === 中級者病 === [[中級者病]]とは、初級者から中級者へ昇格する時期はほぼどのような[[ソースコード]]でも読める程度に[[プログラミング言語]]に精通し、また偉い[[プログラマー]]の提唱した[[デザインパターン]]も一通り理解したくらいである。 すると、[[プログラミング言語]]の持つあらゆる機能と、偉い[[プログラマー]]の提唱するあらゆる技術を使わねばならないという思い込みが発生する。 そして[[Hello World]]にまで崇高な[[オブジェクト指向]]や[[デザインパターン]]を適用しようとしだすのである。 その結果、 * 大量のクラス * 迷路のような変数渡し * 底なしに深いネスト などといった凄いものが生まれる。 <ref>[http://www.atmarkit.co.jp/ait/articles/1210/17/news146.html IT用語解説系マンガ:食べ超(9):スパゲッティコード・モンスターがやってきた! - @IT]</ref> [[善意]]のスパゲッティコードである。 === デスマーチ === [[デスマーチ]]に陥ったら誰もが迷わず「[[Write Once, Run Away]]」を考える。 これには初級者も上級者もない。 むしろ逃げるのは場数を踏んでいる上級者の方が早い。 [[緊急避難]]のスパゲッティコードである。 === オブジェクト指向 === [[オブジェクト指向]]では絡み合う[[クラス]]のすべての[[メンバー変数]]の状態を完全に把握していないとスパゲッティコードが生まれる。 つまり[[オブジェクト指向]]は愚かな考えである。 と、[[関数型プログラミング言語]]の支持者たちは主張している。 彼らは[[Haskell]]と[[モナド]]こそ正義であると信じている。 実は[[オブジェクト指向]]の提唱者である[[アラン・ケイ]]も古くから同様の主張をしている。 それでもオブジェクト指向を作った理由を「関数型プログラミング言語は素晴らしいが難しすぎる」のだという。 [[LISP]]は理想的だが、使いこなせるのは一握りであり、実質的に価値がない。 == 対策 == 個人による独断と偏見で物事を進めるとスパゲッティコードを発生させやすい。 なぜなら、他人に読ませる前提ではないからである。 [[履歴書]]を書くときは一語一句に気を配ったであろう。普通は他人に読ませる前提ならば気を配るものである。 こそで登場するのが[[コードレビュー]]と[[ペアプログラミング]]である。 == 関連項目 == * [[中級者病]] * [[ペアプログラミング]] * [[不完全にしておよそ正しくないプログラミング言語小史]] == 参考文献 == {{reflist}} [[category: プログラミング]]
編集内容の要約:
MonoBookへの投稿はすべて、他の投稿者によって編集、変更、除去される場合があります。 自分が書いたものが他の人に容赦なく編集されるのを望まない場合は、ここに投稿しないでください。
また、投稿するのは、自分で書いたものか、パブリック ドメインまたはそれに類するフリーな資料からの複製であることを約束してください(詳細は
MonoBook:著作権
を参照)。
著作権保護されている作品は、許諾なしに投稿しないでください!
このページを編集するには、下記の確認用の質問に回答してください (
詳細
):
1たす1は?(全角で入力してください)
キャンセル
編集の仕方
(新しいウィンドウで開きます)
このページで使用されているテンプレート:
テンプレート:Reflist
(
編集
)