スパゲッティコードとは何ですか?それを回避する方法

公開: 2020-07-03

それはおいしいイタリアンディナーになるかもしれませんが、コードベースに関して最後に聞きたいことの1つはスパゲッティです。 あなたのコードがスパゲッティのプレートのように絡み合っているという考えは恐ろしいですが、多くの開発者にとって、その考えは非常に抽象的であり、それを完全に理解することはできません(またはそれを回避または修正する方法を理解することはできません)。 そのため、この投稿では、スパゲッティコードが実際に何であるかを詳しく説明し、それを回避するためのいくつかのベストプラクティスと、(発生した場合の)対処方法を示します。

私たちのYoutubeチャンネルを購読する

スパゲッティコードとは何ですか?

スパゲッティコードは悪夢です、それが何です。 上で述べたように、スラングの用語は、スパゲッティパスタの巨大なもつれのように、1つのストランド(コードの一部)を引っ張ると、それまたはすべてがもつれた部分が壊れます。

たとえば、CSSの!importantプロパティについて考えてみます。 これは非常に強力で、デザイナーが継承されたスタイルをオーバーライドし、スタイルシート全体を再コーディングすることなく特定の要素を制御できるようにします。 ただし、彼ら(または将来の開発者や設計者)が何か他のものを調整する必要がある場合、前のタグをオーバーライドするために別の!importantタグを追加する可能性があります。 等々。 ただし、戻ってそのスタック内のスタイルを削除または変更すると、ページ上の任意の数のスタイルが破損する可能性があります。

これは私たちが避けようとしていることです。

スパゲッティコードを回避するためのベストプラクティス

1.コーディング標準を開発する

スパゲッティコードを防ぐ一番の方法は、組織またはプロジェクト内で標準を作成してコーディングすることです。 コーディング標準は、WordPressのようなプロジェクトを可能にするものです。 何千人もの開発者がWPCoreに取り組んできましたが、WordPressコーディング標準により、すべて同じガイドライン内で作業し、同じパラメーター内で同じ方法でタスクを実行できるようになりました。

コーディング標準は、あなたが実施する単なる規則です。 エラーを見つけて修正しやすく、将来の開発者(またはあなたや現在のチーム)がコードの各行が可能な限り効率的に何をするかを正確に知ることができるように、すべてのコードが同じパターンで機能し続けます。 スーザンのコードがテストに合格しなかった場合、コードは入りません。ジャニーンのコードに実行するテストがない場合、プルリクエストは拒否されます。 おそらく、ダニエルは最近のプルリクエストでdivを使用していません。 物事が分割されるまでマージはありません。

また、スパゲッティコードに悩まされていた元のコードベースのいくつかは、関数型ロジックのない古い言語でした。 コードは関数ベースではなかったため、さまざまなロジックがコード内の特定の行に向けられていました。 小さなプロジェクトでは、これはナビゲートするのにそれほど悪くはありません。 プロジェクトのスケーリングを開始するときに、特定のファイルやコード行を直接参照すると、その開発が妨げられる可能性があります。 ファイルが失われたり、行が削除されたり、番号が間違ったりする可能性があります。 また、スパゲッティのどのストランドが引っ張られたかを調べるためにデバッグすると、数百人時間かかる場合があります。 コーディング標準があると、この種の混乱が頻繁に発生するのを防ぐことができます。

したがって、標準を開発することにより、スパゲッティコードのリポジトリを持つ可能性を非常に効果的に下げることができます。 一般的なコーディング標準について詳しく知りたい場合は、GeeksforGeeksに優れたガイドがあります。

2.スタイルガイドに従う

コーディング標準に加えて、従うべきスタイルガイドがあると、コードが絡まりすぎないようにすることもできます。 理論的には似ているように聞こえるかもしれませんが、2つは非常に異なります。 コーディング標準は、コードを効率的に機能させるために開発者が従う強制可能なルールとして存在します。 これらは、プロジェクトごとに、または組織内のチームごとに変わる可能性があります。

ただし、スタイルガイドは通常、言語ごとに作成され、コードを読みやすく機能的にするための一連のベストプラクティスを提供します。 たとえば、AirbnbはReact.jsに最適なスタイルガイドの1つを作成しました。 あなたがReact開発者でないなら、それはほとんど何も意味しません。 しかし、React開発者にとって、これを見ることは、将来の開発者が可能な限りソートできるようにコードを構造化および記述する方法に真の助けを与えることができます。

一般的なコーディング標準とは対照的に、スタイルガイドは必ずしも強制可能なルールではありません。 これらは、コードをより均一にし、コードを読みやすくするための提案です。 これは、いつでもどのストランドを引っ張っているのかを正確に知っているため、スパゲッティコードを防ぎます。

3.コードにコメントを付ける

コードコメントは、リポジトリがスパゲッティコードでいっぱいになるのを防ぐ最も簡単な方法かもしれません。 あなたが何かを書くとき、それが何をするかについてコメントを作成してください。 複雑な関数またはスニペットの場合は、ロジックの機能とその重要性を説明してください。

ただし、混乱を防ぐためにコードコメントに依存するいくつかの問題が発生します。 1つ目は、プロジェクトに多くの余分な時間が追加されることです。 締め切りに間に合わない場合や、機能が正しく機能していることを確認する場合は、その詳細な説明を書き出すことが常に頭の中にあるとは限りません。 そして、コメントを始めてプロジェクトの途中で落ちたり、次の開発が続行されなかったりした場合はどうでしょうか。 それはスパゲッティの大きなプレートです。

他の人は、自分たちが開発した膨大な量のために、自分のコードにコメントするという考えに圧倒されます。 これは完全に有効です。 しかし、重要な(または不安定な)行やスニペットについて時々コメントしたとしても、過去にそれを引っ張って何をするのかを理解しようとする手間を省くことができます。

まとめ

スパゲッティコードは悪夢です、繰り返します。 巨大なリポジトリで変更されたコードの行を把握するために数え切れないほどの時間を費やすことは、開発者であることの最悪の部分の1つです。 デバッグは問題ありません。 デバッグを行って、どこから始めればよいのか、何がリモートで問題を引き起こしているのかさえわからないのは、そうではありません。 しかし、チームがコーディング標準を設定し、言語スタイルガイドに従い、マイナーなコード解説ポリシーさえ持っている場合、スパゲッティのデジタルプレートが他の方法よりもはるかに絡まない可能性が非常に高くなります。

スパゲッティコードを防ぐためにあなたは何をしますか?

DonnayStyle / shutterstock.comによる記事特集画像