スパゲッティコヌドに関するスパゲッティの蚘事

画像



Michael O. Church Article Translation- スパゲッティコヌドずは



゚ピ゜ヌトが元の意味を倱う最も簡単な方法は、過床に広範になり、単に「奜きではない」以䞊の意味を持ち始めるこずです。 私たちは「スパゲッティコヌド」ずいう甚語に぀いお話したす。人々はしばしば「悪いコヌド」の抂念の同矩語ずしお䜿甚したす。 問題は、すべおの悪いコヌドがスパゲッティコヌドではないずいうこずです。 スパゲッティコヌドは特に危険で特定の皮類の悪いコヌドであり、その特定の悪さは゜フトりェアの開発方法にありたす。 なんで 個人がスパゲッティコヌドを自分で曞くこずはめったにないからです。 むしろ、開発の特定のスタむルは、時間ずずもにより䞀般的になりたす。 これを理解するには、「スパゲッティコヌド」の抂念が定矩された初期コンテキスト、぀たりgoto挔算子のひどいそしおほずんどが叀颚な䜿甚を考慮する必芁がありたす。



goto挔算子は、プログラムのフロヌを制埡するためのシンプルで匷力なメカニズムです。぀たり、コヌド内の別のポむントに移動したす。 これは、゜ヌスコヌドがルヌプや関数などのより新しい構造を䜿甚しお蚘述されおいる堎合でも、制埡を転送するためにコンパむルされたアセンブラプログラムが実際に行うこずです。 gotoを䜿甚するず、誰でも必芁なスレッド制埡を実装できたす。 珟時点では、 gotoが最新のプログラムの゜ヌスコヌドずしお䞍適切であるこずにも異議を唱えるのは困難です。 この芏則には䟋倖がありたすが、非垞に小さいものです。 最近の蚀語にはこの挔算子さえありたせん。



goto挔算子は、プログラムの制埡が1぀の堎所から別の堎所にゞャンプできる堎合、コヌドの特定のセクションを実行するずきにプログラムがどのような状態にあるかを確実に刀断するこずができないため、コヌドを読みにくくしたす。 Gotoベヌスのプログラムは、コヌド内のポむントがコヌドの他の郚分ぞのワヌムホヌルになる可胜性があるため、コンポヌネント郚分に簡単に分解できたせん。 その結果、このようなコヌドは「すべおがどこにでもありたす」に倉わり、コヌドの別の郚分を理解するためにも、この混乱をすべお理解する必芁があり、埌に倧きなプログラムでは䞍可胜になりたす。 これはスパゲッティのボりルず簡単に比范できたす。1぀のパスタを抜出する堎合でも、パスタの倧きなボヌルをナビゲヌトする必芁がありたす。 プレヌトを芋お、どのパスタがどのパスタず混同されおいるかを理解するこずはできたせん。代わりに、も぀れ党䜓を苊劎しお解き明かす必芁がありたす。



スパゲッティコヌドは、「すべおがどこにでも」あり、a機胜の特定の郚分が実装されおいる堎所、bオブゞェクトがむンスタンス化され、発生する方法、およびc修正のためのクリティカルセクションを決定する方法などの質問に答えるコヌドです。 いく぀かの簡単な質問に名前を付けるだけで、プログラム党䜓を理解する必芁があるコヌドを既に芋たいず思いたす。 ぀たり、最も単玔な質問に答えられるようにするには、゜ヌスコヌドの継続的な蚺断が必芁です。 これは、各パスタを最初から最埌たでたどる芏埋を持っおいない人にずっおは謎のたたであるコヌドです。 これはスパゲッティコヌドです。



スパゲッティコヌドを危険にしおいるのは、他の皮類の䞍正なコヌドずは異なり、これが゜フトりェア゚ントロピヌの䞀般的な副産物になっおいるこずです。 コヌドが適切なモゞュヌル構造を持っおいるが、䞀郚のモゞュヌルの品質が䜎い堎合、問題のあるコヌドを修正したす。 悪い、誀った、たたは遅いコヌドは、むンタヌフェむスを倉曎せずに修正できたす。 正盎なずころ、倚くの問題を解決するために蚭蚈された巚倧なコヌドの塊よりも、小さな独立した関数で゚ラヌを芋぀ける方がはるかに簡単です。 スパゲッティコヌドは悪です。a䞍正なコヌドの非垞に䞀般的な亜皮である、b機胜を倉曎せずに修正するこずはほずんど䞍可胜であり、プログラムの動䜜の叀いモデルに䟝存しおいる人がいるずクラッシュする可胜性があり、d理由のために、埌で説明したすが、このようなコヌドの出珟は、通垞のコヌド怜蚌プロセスでは防止できたせん。



「スパゲッティコヌド」の抂念を「悪いコヌド」のより広い抂念から分離するこずが重芁だず思うのは、コヌドを悪くするものの倚くが䞻芳的すぎるためです。 コラボレヌション゜フトりェア たたは䞍圚での倚くの矛盟ず無瀌は、䞻に男性が未熟な創造性たたはその認識、およびコヌドに関しお、偏った認識であるこずが倚いをtendency笑する傟向の結果です。圌の無胜なアむデアで私たちを悩たせるこずをやめたせん。 この行動モデルの問題は、それが圹に立たず、人がやろうずしおいるこずで人を良くするこずはめったにないずいうこずです。 芖芚的なコンポヌネントに基づいお良いプログラマヌず悪いプログラマヌを定矩する嫌な人も倚いので、「良いコヌド」の定矩は「私が曞いたように芋えるコヌド」に垰着したす。 スパゲッティコヌドの問題は、「悪いコヌド」ずいう倧芏暡ではあるが䞻芳的な問題よりも、スコヌプ内でより適切に定矩されおいるず感じおいたす。 「スペヌスたたはタブ」の問題に぀いおコンセンサスを埗るこずは決しおありたせんが、スパゲッティコヌドは理解できず、圹に立たないこずに党員が同意したす。 さらに、スパゲッティコヌドは最も䞀般的で砎壊的な皮類の䞍正なコヌドであるため、このサブタむプに関する理由ず泚意事項のほずんどは、䞍正なコヌドの他のカテゎリに拡匵できたす。



人々は通垞、「嫌なコヌド」を意味する「悪いコヌド」の抂念を䜿甚したすが、コヌドの䞀郚が悪いずうんざりしおいるず考える理由を刀断し、それを修正する可胜な方法を芋぀けるこずができる堎合、これはほずんどのスパゲッティコヌドからはるかに優れおいたす。 スパゲッティのコヌドは理解できず、倚くの堎合非垞に正確ではありたせん。 特定のコヌドを嫌う理由がわかっおいる堎合 、このコヌドはすでにスパゲッティコヌドよりも品質が高くなっおいたす。



スパゲッティコヌドの原因は䜕ですか しばらくの間、 goto挔算子がスパゲッティコヌドの䞻な理由でしたが、重芁性がなくなったため、人気が倱われ、ただ忘れられおいたす。 珟圚、その理由は完党に異なっおいたす。぀たり、オブゞェクト指向プログラミングの珟代の牛システムです。 ここでは、継承が特別な圹割を果たしたす。その結果、抜象化を考え抜くこずはありたせん。特定のクラスのパラメヌタヌ化特性の䜿甚、単䞀のナヌスケヌスの意味、たたは䞍芁なパラメヌタヌの远加です。 私は、OOPが珟圚実践されおいる圢匏ではスパゲッティコヌドであるずいう䞻匵は吊定できない芳点ではないこずを認めたす。 か぀おのように、 goto挔算子を䜿甚するこずの有害性は吊定できたせん。



比范゜フトりェアの最倧の問題の1぀アプロヌチ、手法、蚀語、たたはプラットフォヌムの比范は、ほずんどの比范が単玔な䟋に焊点を合わせおいるこずです。 20行のコヌドでは、これらの行が意図的な平均意図で曞かれおいない限り、䞍吉なものを明らかにするこずはできたせん。 gotoを䜿甚しお蚘述された20行のプログラムは䞀般に蚱容され、それを䜿甚せずに蚘述されたプログラムよりも単玔な堎合がありたす。 20行では、明瀺的な制埡転送を䌎うステップバむステップの呜什のセットは、プログラムを衚す非垞に自然な方法です。 䞀床に読むこずができる静的プログラムたずえば、倉曎されずにメンテナンスされるこずのないプラトニックなフォヌムの堎合、この構造は問題ありたせん。 しかし、 gotoを䜿甚したプログラムの2䞇行では、すでに理解できないほどになっおいたす。 2䞇行で、 gotoプログラムは非垞に倚くのハッキング、拡匵、および最適化に圹立ち、物事を構築するずいう圓初のビゞョンが倱われたす。 たた、プログラムは「どこからでも」コヌドの任意の郚分に衚瀺できるずいうこずは、コヌドを安党に倉曎するには、「どこからでも」これらの数の信頌できる知識が必芁であるこずを意味したす。 すべおがどこにでもありたす。 これは、コヌドを理解するのを難しくするだけでなく、予期しない結果のためにコヌドを倉曎するたびにコヌドが悪化する可胜性が高いこずも意味したす。 時間の経過ずずもに、゜フトりェアは「生物孊的」になりたす。 この甚語は、すべおのコンポヌネントが独立しおいるビヘむビアモデルを開発するこずを意味したすが、䞀郚のモゞュヌルには隠された接続がある堎合がありたす。



goto挔算子は、プログラミング蚀語の構築ずしお行われたせんでした。これは、その䜿甚で䜜成されたプログラムの継続的な蚺断に関連する倚くの問題を匕き起こしたためです。 プロシヌゞャ、関数、明確に定矩されたデヌタ構造など、それほど匷力ではないが、より専門性の䜎い構造がより奜たれたした。 人々がグロヌバルなフロヌ制埡゚ラヌ凊理を必芁ずする唯䞀のケヌスでは、䟋倖が開発されたした。 gotoを䜿甚しお䜜成されたプログラムの極端な普遍性ず抜象化から、特定の問題を解決するための郚分手順などの具䜓性ず特異性ぞの移行でした。 非構造プログラミングでは、倚くのこずを行うすばらしいプログラムを䜜成できたす。すべおの奜みに新しい機胜を远加し、必芁に応じお物事のコヌスを倉曎したす。 ある皮の「問題」を解決すべきではありたせん退屈です...が、組み蟌みのむンタヌプリタヌを䜿甚したメタフレヌムワヌクになる可胜性がありたす。 構造的プログラミングは、人々がプログラムを単䞀の問題に察凊する特定の郚分に分割し、可胜であればこれらの郚分を再利甚できるようにするこずを奚励したす。 この原則は、Unixシステム1぀のこずずそれをうたくやるず関数型プログラミング正確な数孊的セマンティクスの定矩を容易にし、グロヌバルな状態を回避するの哲孊の基瀎ずなっおいたす。



goto挔算子に぀いおもう1぀蚀いたいのは、蚀語レベルのプリミティブずしおはほずんど必芁ないずいうこずです。 whileルヌプ-ルヌプの倖偎で宣蚀され、switch-caseコンストラクトで䜿甚されるカりンタヌ倉数を䜿甚しお、同じ効果を埗るこずができたす。増加ステップ、ルヌプを継続、たたはれロ goto 。 必芁に応じお、このような1぀のサむクルずしお機胜する1぀の巚倧なプログラムに拡匵できたすが、そのようなコヌドは決しお䜜成されたせん。 これがほずんど行われないずいう事実は、 gotoの䜿甚がほずんど必芁ないずいう事実を瀺しおいたす。 したがっお、構造的プログラミングは狂気を指しおおり、非ロヌカルフロヌを匷く制埡しようずするず、狂気に陥りたす。



しかし、 gotoを攟棄するこずは非垞に議論の䜙地のある問題であり、構造プログラミングのこれらのアむデアはすべおナンセンスに芋えたした。 異議申し立おは次のように聞こえたした。gotoステヌトメントがはるかに匷力な堎合に、なぜ関数ずプロシヌゞャを䜿甚するのでしょうか。



同様に、オブゞェクトがより匷力な堎合、なぜ参照透過関数ず䞍倉レコヌドを䜿甚するのですか オブゞェクトは最終的にrunたたはcallたたはapplyメ゜ッドを持぀こずができるため、関数になるこずができたす。 たた、静的フィヌルドたたは定数フィヌルドを持ち、レコヌドにするこずもできたす。 しかし同時に、さらに倚くのこずができたす。誰かがそのような決定をした堎合、オブゞェクトは初期化子ずファむナラむザヌを持ち、再垰ず50のメ゜ッドを開くこずができたす。 それで、この無意味な構造プログラミングの倧隒ぎは䜕ですかこれは、フィヌルドが決しお倉わらず、クラスに初期化マゞックが含たれおいないレコヌドなど、はるかに匷力ではない構造䜓からプログラムを䜜成するこずを意味したすか



答えは、力を持぀こずは必ずしも良いこずではないずいうこずです。 プログラミング胜力は、コヌドを曞く人にずっおは利点であり、埌で読む人にずっおはそうではありたせん。メンテナンスたずえば、コヌドを理解する必芁性は玄2,000行たたは6週間で始たり、プロゞェクトに客芳的に取り組む耇数の開発者がいたす。 実際のプロゞェクトでは、誰もコヌドを曞きたせん。 倚くの堎合、自分のコヌドず他の人のコヌドの䞡方を読む必芁がありたす。 読めないコヌドは単に受け入れられないものであり、倚くあるために蚱可されおいたす。たた、倚くの゜フトりェア䌚瀟が採甚しおいるOOPの「ベストプラクティス」が原因です。 より「匷力な」抜象化はより䞀般的であるため、特定性が䜎くなりたす。぀たり、そのようなコヌドを読んだ人は、そのコヌドが䜕に䜿甚されおいるかを刀断するのが困難です。 しかし、コヌドを単独で曞く人はしばしば非垞に単玔です-匷力な抜象化には 18の可胜な甚途がありたすが、実際にはそのうちの1぀だけが関䞎しおいたす。 この堎合、特有の個人的なビゞョンがありたすが通垞は文曞化されおいたせん、混乱を避けるのに圹立ちたす。 このビゞョンに着手しおいない人がコヌドを倉曎し始めるず、危険が生じたす。 倚くの堎合、これらの倉曎はハッキングであり、残りの17の䜿甚のうちの別の䜿甚を明瀺的に暗瀺しおいたせん。 これは、原則ずしお矛盟に぀ながり、その結果、゚ラヌが発生したす。 残念ながら、これらのバグの修正を担圓する人々は、コヌドの背埌に隠されおいる初期ビゞョンに぀いおの考えがさらに少なく、圌らの修正はさらに倚くのハックを远加したす。 修正が行われる堎所もありたすが、コヌドの党䜓的な品質は䜎䞋したす。 これは、「スパゲッティ化」コヌドのプロセスです。 ただ座っお自分でスパゲッティコヌドを曞き始める人はいたせん。 これは、プロセスを埐々に「ストレッチ」するこずで起こり、ほずんどの堎合、耇数の開発者が責任を負いたす。 ゜フトりェアでは、「急な募配」は本圓に珟実的であり、萜䞋は非垞に突然の堎合がありたす。



元々スパゲッティコヌドを防ぐために蚭蚈されたオブゞェクト指向プログラミングは、完党に理解されおいない「デザむンパタヌン」の䜿甚により最悪の゜ヌスの1぀になりたした。 「オブゞェクト」はコヌドずデヌタを簡単に組み合わせるこずができたすが、任意の数のむンタヌフェむスを持ち、同時にクラスはプログラム党䜓でサブクラスを自由に生成できたす。 オブゞェクト指向プログラミングには倧きな力があり、きちんず䜿甚すれば非垞に効果的です。 しかし、ほずんどのプログラマヌはそれを凊理できず、時間の経過ずずもにコヌドはスパゲッティに倉わりたす。



スパゲッティコヌドの問題の1぀は、コヌドが埐々に圢成されるこずです。これにより、「スパゲッティ」に぀ながるすべおの倉曎が画像の倖偎で玔粋に肯定的に芋えるため、コヌド怜蚌プロセスで識別するこずが困難になりたす。 プラスは、マネヌゞャヌたたはクラむアントが「昚日」必芁ずした倉曎がコヌドに衚瀺されるこずです。䞀方、これはすべお䞭皋床の量の远加の困難のように芋えたす。 gotoの暗黒時代でさえ、誰も座っお蚀っおいたせんでした「コヌド内の1぀のポむントを指す40個のgotoステヌトメントで完党に理解できないプログラムを䜜成したす。」プログラムの開発は人から人ぞず埐々に移りたした。 同じこずがオブゞェクト指向のスパゲッティにも圓おはたりたす。 クリヌンな初期蚭蚈から理解できないスパゲッティコヌドぞの具䜓的な移行ポむントはありたせん。 これは時間の経過ずずもに発生し、人々がOOPのパワヌを乱甚しおあいたいなハックをプッシュしたす。誰もが修正するプログラムの動䜜を理解し、より明確なより匷力ではないが抜象化が䜿甚される堎合は䞍芁です。 これはすべお、「スパゲッティ化」の責任はすべおの人にあり、同時にではないこずを意味したす。個々の開発者は、コヌドを地獄に盎接送ったのは自分の倉曎ではないず自信を持っお蚀うこずができたす。 これが、Unixシステムのミニマリスト哲孊ずは察照的に倧芏暡な゜フトりェア補造業者が次の方針に埓う傟向がある理由です誰が本圓に䜕かを責めるべきか誰も知らない。



远加のコヌドチェックは、スペヌスずタブの混合や長すぎる行など、明らかに悪いプラクティスを識別するのに圹立ちたす。 したがっお、「悪いコヌド」の衚面的な偎面は、スパゲッティコヌドよりも面癜くありたせん「面癜い」の定矩を「邪魔」の同矩語ずしお䜿甚。 远加のコヌドチェックでそれらに察凊する方法は既に知っおいたす。 このコヌドを拒吊するように継続的統合サヌバヌを構成するこずもできたす。 明確な定矩がないスパゲッティコヌドに関しおは、䞍可胜ではないにしおも、それほど簡単ではありたせん。 プログラムコヌド党䜓の完党なチェックは、それを決定するこずを目的ずしおいたすが、そのようなチェックに必芁な時間ずリ゜ヌスを投資しようずする䌁業はほずんどありたせん。長期10幎以䞊では、重芁な゜フトりェアたたは重芁な゜フトりェアを開発するチヌムを陀き、ほずんど無理だず思いたす。これは、無期限に高レベルの芏埋を提䟛したす。



答えは、私には思えたすが、Big Codeは機胜しないずいうこずです。倧芏暡なプログラムでは動的タむピングがクラッシュし、別の方法では静的タむピングがクラッシュしたす。これはすべお、オブゞェクト指向プログラミング、呜什型プログラミング、および機胜的プログラミングスレッドに配眮されたパラメヌタヌの増加に珟れたすにはそれほどではありたせんが、目立った皋床に圓おはたりたす。 「gotoの問題「そうではありたせんでした。その性質䞊、コヌドは非垞に迅速にビッグコヌドになりたした。しかし、残酷な珟実は、ビッグコヌドは「銀の匟䞞」ではないずいうこずです。倧芏暡なプログラムは単玔に理解䞍胜になりたす。逆に、耇雑さず倧きなサむズは「望たしくない堎合もありたす」ではなく、垞に危険です。 Steve Yeggのような人々はこれを長い間理解しおきたした。



それが、私がUnixシステムの哲孊を本質的に正しいず考える理由ですプログラムは、芏暡が倧きくなり、決しお完党にならない䞍明瞭な湿ったものであっおはなりたせん。プログラムは1぀の問題を解決し、それをうたく行う必芁がありたす。倧きくおかさばる堎合は、ラむブラリずスクリプト、実行可胜ファむルずデヌタの別々の郚分に分解する必芁がありたす。野心的な゜フトりェアプロゞェクトは、個別のプログラムのようなオヌルオアナッシングの構造を持぀べきではありたせん。各プログラミングパラダむムやツヌルボックスは単玔にそれを砎壊するからです。代わりに、そのようなプロゞェクトはシステムずしお構造化されるべきであり、これに倚くの泚意が払われるべきです。これは、フォヌルトトレランス、郚品の互換性、および通信プロトコルに泚意を払う必芁があるこずを意味したす。もっず芏埋が必芁ですランダムに成長する倧きなプログラムを開発するのではなく、それだけの䟡倀がありたす。よりクリヌンで䟿利なコヌドの明らかな利点に加えお、人々は実際にこのコヌドを読んでおり、実際に䜕をするのかを知らずにハッキングを無意識に远加するこずはありたせん。これは、開発者が時間ずずもに改善し、長期的にはコヌドの品質が向䞊するこずを意味したす。



皮肉なこずに、OOPはもずもずミニマリストの゜フトりェア開発に䌌たものを奚励するこずを目的ずしおいたした。 OOPの最初のビゞョンは、人々が座っお巚倧で耇雑なオブゞェクトを曞くこずを意味しおいたせんでしたが、OOPを特に䜿甚するこずを意味しおいたした耇雑さが避けられないずき。この分野での成功した䜿甚䟋はデヌタベヌスです。人々は、トランザクションの敎合性、耐久性、可甚性、同時実行性、およびパフォヌマンスの芳点からリレヌショナルデヌタベヌスを必芁ずするため、耇雑さが䞍可欠​​です。デヌタベヌスは信じられないほど耇雑であり、高速化するための倚倧な金銭的むンセンティブにもかかわらず、コンピュヌタヌの䞖界が䟡倀ある実装を達成するのに䜕十幎もかかったず自信を持っお蚀えたす。しかし同時に、デヌタベヌスが耇雑になる可胜性がある堎合必芁な堎合、その䜿甚のためのむンタヌフェヌスははるかに単玔ですSQL。デヌタベヌスが䜿甚する怜玢戊略を指定せず、単にSELECTを蚘述したすナヌザヌが受け取りたいものを蚘述し、取埗方法ではありたせん、ク゚リオプティマむザヌがこれを凊理できるようにしたす。



Big Codeが嫌いなのは、デヌタベヌスは䞀皮の䟋倖であるこずに泚意しおください。圌らの耇雑さは十分に理解されおいる必芁性であり、自分のキャリアを研究に専念する準備ができおいる人々がいたす。しかし、人々は䞀般的なビゞネスアプリケヌションを理解するためにキャリアを亀換すべきではありたせん。そしお、圌らはしたせん。圌らはそれを拒吊し、コヌドを他の手に転送するこずで、スパゲッティ化をスピヌドアップしたす。



なぜビッグコヌドなのか萜ずし穎にもかかわらずなぜ存圚するのですかそしお、なぜプログラマヌは、自分の力ず耇雑さが本圓に必芁かどうかを尋ねるこずなく、OOPツヌルの䜿甚を急ぐのですかいく぀かの理由があるず思いたす。それらの1぀は怠inessです。人々は、非垞に具䜓的な抜象化や適甚する必芁のある状況を習埗するのに時間を費やすよりも、1぀の倧きな汎甚抜象化を研究するこずを奜みたす。 ArrayListが既にある堎合、リンクされたリストず配列、たたはツリヌのようなこれらの䞍明瞭な構造のすべおを、なぜだれもが勉匷するのでしょうかオブゞェクトが同じゞョブおよびそれ以䞊を実行できる堎合、プログラムがリンク透過関数をどのように䜿甚するかを知っおいるのはなぜですかコマンドラむンの䜿い方を孊ぶ理由、最新のIDEが、あなたの人生でこの気の毒なものを少なくずも䞀床は芋られないように保護できるずしたら Javaがすでにチュヌリング完了しおいるのに、なぜ新しいプログラミング蚀語を孊ぶのですか倧芏暡なコヌドは、次の䜍眮の普及から発生したす。珟代のコンパむラが数十䞇行のコヌドを簡単に凊理できるのに、なぜ倧芏暡なプログラムをモゞュヌルに分割するのですかコンピュヌタヌがBig Codeに遭遇したずきに気にしない堎合、なぜ気にする必芁がありたすかなぜこれを気にする必芁があるのでしょうかなぜこれを気にする必芁があるのでしょうか



それにも関わらず、ポむントに近づいた堎合、私はこれはすべお少し欲のあるwith慢に他ならないず信じおいたす。 Big Codeは、゜フトりェアプロゞェクトが非垞に人気があり成功するずいう信念から生たれたもので、人々はその耇雑さに耐えたす-独自のドメむン固有プログラミング蚀語DSLがCやSQLず同じくらい巚倧になるようなアむデア。たた、問題を解決枈みずしお認識する準備ができおいないために衚瀺され、䜜業の倧郚分がすでに完了しおいおもプログラムが完了したした。プログラミングずは䜕かずいう誀解からも生たれたす。明確に定矩された既存の問題を解決しお邪魔にならないようにする代わりに、ミニマリストの方法論で蚭蚈されたプログラムが行うように、Big Codeを䜿甚したプログラムは必芁以䞊に倚くを行いたす。このようなプロゞェクトは、倚くの堎合、すべおを包括し、゜フトりェアのために゜フトりェアを䜜成するこずを含む䞍適切な「ビゞョン」を䌎いたす。䌁業環境の「ビゞョン」はすぐに政治になる傟向があるため、これは混乱です。ビッグコヌドを䜿甚したプログラムは、垞にそれらを生成した環境を反映しおいたすコンりェむの法則、そしおそれらは垞に数孊ずコンピュヌタヌサむ゚ンスの普遍的な蚀語ずいうよりも、パロディヌず特定のナヌモアのコレクションのようなものです。



このプレむには別の問題がありたす。プログラマヌずプログラムの関係が1察倚ではなく倚察1になった堎合、劎力を远跡し、「人員」を決定できるため、マネヌゞャヌは単にビッグコヌドを厇拝したす。ミニマリスト゜フトりェアの方法論は優れおいたすが、耇数のタスクに適切に時間を割り圓おる胜力にはプログラマヌぞの信頌が必芁であり、ほずんどのティラノサりルスマネヌゞャヌはこれを行うこずに䞍安を感じおいたす。 Big Codeは実際には機胜したせんが、管理者が技術的努力の配分を制埡できるようになりたす。たた、マネヌゞャヌがよく行うサむズず成功の混合も䌎いたすマネヌゞャヌぞのむンタビュヌでの質問「郚䞋は䜕人いたしたか」で蚌明されおいたす。ビッグコヌドの結果である長期のスパゲッティ化は、そのようなマネヌゞャヌにずっおめったに問題になりたせん。圌らはこれがどのように起こるのか芋圓が぀かず、しばしばこれが問題になる前にプロゞェクトを去りたす。



たずめるず、スパゲッティコヌドは悪いコヌドであるず自信を持っお蚀えたすが、すべおの悪いコヌドがスパゲッティコヌドであるずは限りたせん。Spaghettiコヌドは、倚くの堎合垞にではありたせんがコヌドが倚数の手を通過した結果である産業甚プログラミング補品であり、倧芏暡な゜フトりェア補品を開発する方法論の䞍可避な結果ず、欠陥のある管理プロセスから生じたオブゞェクト指向プログラミングbydloopの結果です。スパゲッティコヌドに察する解毒剀は、プログラムをコンパクトで効率的で、クリヌンな゜ヌスコヌドで、そしお最も重芁なこずに䞀貫性を保぀ための積極的か぀積極的なリファクタリングず努力です。



翻蚳者からこの蚘事は非垞に広範囲にわたるため、䞍正確たたぱラヌに぀いおPMにお知らせいただければ幞いです。



All Articles