- わかりずらいソースコードのこと
- そのファイルの役割に関係ないコードがある状態
- 1つのファイルにいろんな種類の機能が入って重なってるのがラザニアっぽい
ここまでで7秒!もっとくわしく知りたい人は続きをどうぞ!
ラザニアコードをわかりやすく
ラザニアコードをわかりやすく説明すると
設計で決まってるファイルの役割を無視して、そのファイルの役割以外のソースコードが入ってる、ラザニアのように、1つの層にいろんな具がゴチャ混ぜに入ってる状態のソースコードのこと
ラザニアコードと正常なコードの違い
下記のソースコードは、2つの数値の大小とプラスマイナスを判別して出力するのが目的でそれを処理する用のファイル。それなのに、ラザニアコードには、正常なコードにはない不要なコードが入っている。ラザニアコードは、このファイルでは必要のないコードがあり、「なんでこのファイルで処理してるの?」ってなる。
ラザニアコードとは わかりやすい例
落とし込んだ例を交えて、わかりやすく解説すると
コードを書く前に設計書があって、その設計書には、「このファイルはデータベース接続用ね」、「このファイルはユーザーが見る部分ね」とそれぞれのファイルに役割があったんだけど、その設計書を無視して、「データベース接続用のファイルだけど、ユーザーが見る部分の機能のコードを書いちゃおう」とすると、そのファイルに不要なソースコードが残ってしまう。ちゃんと設計されてない状態でコードを書き始めてもラザニアコードになってしまいやすい。
ラザニアコードコードの手順
下記の手順でコードを書けば立派なラザニアコードになる。ラザニアコードを意識的に作るひとはいないはずなので、無意識にやってしまっている場合が多い。ラザニアコードにならないように意識が必要。
- ステップ1モジュール分割を無視する
適切にモジュール分割せずに、全ての機能を1つのファイル(モジュール)にゴチャ混ぜに入れる。※プログラムを機能単位で分割し、各機能をモジュール(ファイル)単位で切り分けること。
- ステップ2機能を分類しない
モジュール分割後に、それぞれのコードを分けずにゴチャ混ぜに入れる。
- ステップ3役割を無視する
ファイルが持つべき役割を無視して、別の役割のコードも関係なく書き込んでいく。
- ステップ4層や階層を無視する
各層や階層構造を完全に無視して、あらゆる種類のコードを1つの層(ファイル)に詰め込む。
ラザニアコードの類似語
名称 | 説明 |
---|---|
ラザニアコード | 複数のレイヤーが密接に絡み合い、階層構造が複雑なコード。 ラザニアの層のように見えることから名付けられた。 |
ゴミコード | 無駄なコードや、本来必要のないコードが混在しているコード。 まるでゴミ箱のように汚いことから名付けられた。 |
クリスマスツリーコード | インデントが過剰に使用され、コード全体がクリスマスツリーのように見えるコード。 見づらく、理解が困難であることから名付けられた。 |
スパゲッティコード | 複雑で絡み合った構造で、理解や保守が困難なコード。 まるでぐちゃぐちゃに絡まったスパゲッティのようであることから名付けられた。 |
呪いのコード | バグや問題が多く、修正を試みるとさらに悪化するようなコード。 まるで呪われているように扱いにくいことから名付けられた。 |
妖怪コード | 理解不能なほど複雑で、まるで妖怪のように扱いにくいコード。 |
泥沼コード | 複雑で冗長なコードで、修正や変更が困難な状態。 まるで泥沼に足を取られたように抜け出せないことから名付けられた。 |
迷路コード | 複雑な分岐やループが絡み合い、まるで迷路のように抜け出せないコード。 |
カラスの巣コード | 無駄なコードやコメントが散乱し、カラスの巣のように汚いコード。 |
ラザニアコードまとめ
- 1つのファイルにいろんな種類の機能が入って重なってるのがラザニアっぽい、わかりにくいそのファイルの役割に関係ないコード
- モジュール分割を無視し、機能を分類せず、ファイルの役割と層や階層の構造を無視すれば、ラザニアコードができあがる
- ラザニアコードの類似語として、ゴミコード、クリスマスツリーコード、スパゲティコード、呪いのコード、妖怪コード、泥沼コード、迷路コード、カラスの巣コードなどがある
ラザニアコードについて理解は深まりましたか?
まだわからない点や疑問点があれば、ぜひコメント欄で質問してください。生の声を聞かせていただければ、より良い内容を提供できるはずです。
以上、ラザニアコードについてでした。コメント欄での活発な意見交換を心よりお待ちしています!
コメント