✨Mã spaghetti

Mã spaghetti

nhỏ|Mã spaghetti Mã spaghetti (Spaghetti code) là một cụm từ mang tính cho mã nguồn có tính phi cấu trúc và khó bảo trì. Mã spaghetti có thể được gây ra bởi vài yếu tố, chẳng hạn như do bản yêu cầu dự án có tính không ổn định, thiếu quy tắc phong cách lập trình, và do người viết không đủ năng lực hoặc kinh nghiệm.

Ý nghĩa

Mã mà dùng quá mức các hơn là các cấu tạo lập trình có cấu trúc – kết quả sinh ra là các chương trình lộn xộn và không thể bảo trì được – thì hay được gọi là mã spaghetti. Mã như vậy có cấu trúc điều khiển phức tạp và rối rắm, kết quả sinh ra là một luồng chương trình mà về mặt khái niệm thì giống như một bát mì spaghetti – xoắn và rối. Trong một xuất bản năm 1980 của Cục Tiêu chuẩn Quốc gia Hoa Kỳ, cụm từ chương trình spaghetti được sử dụng để mô tả các chương trình trước đây có "các tệp bị phân mảnh và rải rác". Mã Spaghetti cũng có thể được dùng để mô tả một trong đó mã hướng đối tượng được viết theo phong cách thủ tục, chẳng hạn như bằng cách tạo các lớp có các phương thức quá dài và bừa bãi, hoặc vứt bỏ đi các khái niệm hướng đối tượng như đa hình. Sự hiện diện của hình thức mã spaghetti này có thể làm giảm đáng kể tính dễ lĩnh hội của một hệ thống.

Lịch sử

Người ta không rõ rằng từ khi nào mà cụm từ mã spaghetti được sử dụng phổ biến; tuy nhiên, một số tài liệu tham khảo xuất hiện vào năm 1977 bao gồm Macaroni is Better Than Spaghetti bởi Steele được xuất bản trong 'Biên bản lưu' của hội nghị chuyên đề năm 1977 về trí năng nhân tạo và ngôn ngữ lập trình. Trong cuốn sách năm 1978 A primer on disciplined programming using PL/I, PL/CS, and PL/CT, Richard Conway đã sử dụng thuật ngữ này để mô tả các kiểu chương trình rằng "có cùng cấu trúc sạch có tính logic giống như một đĩa mì spaghetti", một cụm từ được lặp đi lặp lại trong cuốn sách năm 1979 An Introduction to Programming mà ông là đồng tác giả với . Trong bài báo khoa học năm 1988 A spiral model of software development and enhancement, thuật ngữ này được sử dụng để mô tả sự thực hành trước đây của mô hình mã và sửa lỗi (code and fix model) – nói về sự thiếu việc kế hoạch của nó, và cuối cùng đã dẫn đến sự phát triển của mô hình thác nước. Trong cuốn sách năm 1979 Structured programming for the COBOL programmer, tác giả Paul Noll sử dụng các cụm từ mã spaghettitổ của chuột làm các từ đồng nghĩa để mô tả mã nguồn có cấu trúc kém.

Trong hội nghị Ada – Europe '93, ngôn ngữ Ada đã được mô tả là nó ép lập trình viên phải "tạo ra mã code dễ hiểu, thay vì mã spaghetti", vì cơ chế lan truyền ngoại lệ (exception) mang tính hạn chế của nó.

Vào năm 1981 trong một bài viết biếm nhại các ngôn ngữ máy tính trong sách The Technic Michigan có tiêu đề "BASICally speaking...FORTRAN bytes!!", tác giả đã mô tả FORTRAN là "bằng chứng rành rành rằng các nhà đồng sáng lập của IBM là người Ý, vì nó toàn là từ mã spaghetti mà ra cả".

Cụm từ có liên quan

Mã Ravioli (Ravioli code)

Mã là một thuật ngữ riêng cho lập trình hướng đối tượng. Nó mô tả mã bao gồm các lớp có cấu trúc tốt, về mặt cô lập thì dễ hiểu, nhưng về mặt tổng thể thì lại khó hiểu.

Mã Lasagna (Lasagna code)

Mã Lasagna dùng để chỉ mã có các tầng lớp rất phức tạp và đan xen với nhau, đến nỗi việc tạo ra một thay đổi trong một tầng lớp sẽ đòi hỏi phải thay đổi trong tất cả các tầng lớp khác.

Ví dụ

Đoạn mã dưới đây được coi là một ví dụ thông thường của mã spaghetti trong ngôn ngữ BASIC. Chương trình in từng số từ 1 đến 100 lên màn hình cùng với bình phương của nó. Ở đây việc thụt đầu dòng không hề được sử dụng để làm rõ sự khác nhau giữa nhiều hành động khác nhau do mã lệnh thực hiện, và các câu lệnh GOTO của chương trình tạo ra một sự lệ thuộc chặt chẽ vào . Luồng thực thi từ miền này sang miền khác khó dự đoán hơn. Sự xuất hiện của mã spaghetti trong thế giới thực thì phức tạp hơn và có thể thêm rất nhiều vào chi phí bảo trì cho chương trình. 1 i=0 2 i=i+1 3 PRINT i; "bình phương=";i*i 4 IF i>=100 THEN GOTO 6 5 GOTO 2 6 PRINT "Chương trình đã hoàn tất." 7 END

Đây cũng là mã trên nhưng được viết lại theo kiểu lập trình có cấu trúc: 1 FOR i=1 TO 100 2 PRINT i;"bình phương=";i*i 3 NEXT i 4 PRINT "Chương trình đã hoàn tất." 5 END Chương trình trên đây cũng nhảy từ miền này sang miền khác, nhưng bước nhảy đấy thì mang tính hình thức và dễ dự đoán hơn, bởi vì và hàm đều cung cấp sự điều khiển luồng có kiểm soát còn câu lệnh _goto_ lại khuyến khích điều khiển luồng tùy ý.

Mặc dù ví dụ trên này thì nhỏ, các chương trình trong thế giới thực thì được cấu thành từ nhiều dòng mã và nếu được viết theo kiểu cách mã spaghetti thì sẽ khó bảo trì.

Đây là một ví dụ khác về mã Spaghetti trong đó câu lệnh GOTO bị lạm dụng (ăn sâu vào logic của chương trình) và được dùng với các nhãn (label) có tên không rõ ràng. SCREEN 0 INPUT "Bao nhiêu số để sắp xếp? "; T DIM n(T) FOR i = 1 TO T PRINT "SỐ THỨ:"; i INPUT n(i) NEXT i 'Nhiều tính toán: C = T E180: C = INT(C / 2) IF C = 0 THEN GOTO C330 D = T - C E = 1 I220: f = E F230: g = f + C SWAP n(f), n(g) f = f - C IF f > 0 THEN GOTO F230 E = E + 1 IF E > D THEN GOTO E180 GOTO I220 C330: PRINT "Liệt kê theo thứ tự là" FOR i = 1 TO T PRINT n(i) NEXT i

👁️ 1 | 🔗 | 💖 | ✨ | 🌍 | ⌚
nhỏ|Mã spaghetti **Mã spaghetti** (Spaghetti code) là một cụm từ mang tính cho mã nguồn có tính phi cấu trúc và khó bảo trì. Mã spaghetti có thể được gây ra bởi vài yếu tố,
**Spaghetti** () là một loại pasta dài, mỏng, đặc, hình trụ. Nó là một thực phẩm thiết yếu của ẩm thực Ý truyền thống. Giống như các loại mì ống khác, mì spaghetti được làm
**_Spaghetti all'assassina_** (tiếng Ý nghĩa là 'spaghetti của kẻ ám sát (giống cái)', ), hay còn được gọi là **_spaghetti bruciati_** (tiếng Ý nghĩa là 'spaghetti cháy', ) là một món mì spaghetti từ thành
nhỏ|_Touched by His Noodly Appendage_ (Được chạm bởi chi phụ bằng mì ống của Ngài), bản nhại _[[The Creation of Adam_ của Michelangelo, một hình tượng của Flying Spaghetti Monster]] **Flying Spaghetti Monster** (**FSM**, tạm
nhỏ| Bức ảnh người phụ nữ thu hoạch spaghetti, giả lập lại theo phóng sự của BBC. **Trò lừa bịp cây spaghetti** là một phóng sự lừa bịp dài ba phút được phát sóng vào
Gia Vị Làm Nước Sốt Mỳ Ý Spaghetti Bolognese KnorrSản phẩm dành cho bé và những ai nghiền mỳ ý sốt Spaghetti.Shop xin giới thiệu sản phẩm : Gia vị làm nước sốt Mỳ Ý
Với sự kết hợp hoàn hảo giữa sợi mỳ mềm dai, nước sốt cà chua thơm lừng và thịt bò băm ngọt vị, món ăn này không chỉ hấp dẫn người lớn mà còn đặc
Bơ đậu phộng ăn có thể kết hơp cùng nhiều món như mì spaghetti trộn bơ đậu phộng, kẹo chocolate bơ đậu phộng, sinh tố chuối bơ đậu phộng...Bơ đậu phộng là một loại bơ
phải|nhỏ|[[Lưu đồ thuật toán (thuật toán Euclid) để tính ước số chung lớn nhất (ưcln) của hai số _a_ và _b_ ở các vị trí có tên A và B. Thuật toán tiến hành bằng
**_Il buono, il brutto, il cattivo_** (tựa tiếng Anh: _The Good, the Bad and the Ugly_, tạm dịch: _Thiện, ác, tà_) là một bộ phim điện ảnh đề tài sử thi Viễn Tây của Ý
**_Per un pugno di dollari_** (tiếng Anh: _A Fistful of Dollars_; tiếng Ý: _Per un pugno di dollari_) là một bộ phim viễn tây kiểu Ý do đạo diễn Sergio Leone sản xuất năm 1964.
**Once Upon a Time in the West** (Tiếng Ý: C'era una volta il West), _Miền Tây ngày ấy_, là một bộ phim Viễn Tây Ý do Sergio Leone làm đạo diễn. ## Nội dung Bộ
**_Núp xuống, đồ ngu!_** (, , ) là một phim Viễn Tây nằm trong bộ ba _Ngày xửa ngày xưa_ (Once upon a time trilogy) do Sergio Leone đạo diễn, xuất phẩm ngày 29 tháng
thumb|Ẩm thực Ý (theo chiều kim đồng hồ): [[Pizza Margherita, mì spaghetti alla carbonara, cà phê espresso, và kem gelato.]] **Ẩm thực Ý** đã phát triển qua nhiều thế kỷ với những biến động chính
**Tin vịt** là tin không đúng với sự thật thực tế, được báo chí truyền thông đưa ra nhằm đánh lừa, tạo sự hiểu sai về một vấn đề hay sự kiện nào đó. Nó
**Guns N' Roses** (còn viết tắt là **GNR**) là một ban nhạc hard rock người Mỹ xuất thân từ Los Angeles, California, thành lập vào năm 1985. Khi ban nhạc ký hợp đồng với hãng
nhỏ|phải|Một cô bé đang ăn Pizza **Lịch sử của pizza** bắt nguồn từ thời cổ đại, khi nhiều nền văn hóa cổ đại làm ra bánh mì dẹt với một lớp phủ bên trên. Họ
**Cá minh thái** hay còn gọi là **cá pôlăc** (Danh pháp khoa học: **_Pollachius_**) là tên gọi thông dụng chỉ về các loài cá biển thuộc chi này. Cả hai loài _Pollachius pollachius_ và _Pollachius
**Ẩm thực Hy Lạp** là một nền ẩm thực Địa Trung Hải. Nó có một số đặc điểm trung với ẩm thực truyền thống của Ý và Thổ Nhĩ Kỳ. Hiện nay người nấu ăn
**Ngày Chơi Khăm**, hay **Ngày lừa dối** là một phong tục hàng năm vào ngày 1 tháng Tư dương lịch bao gồm những trò đùa và trò lừa bịp vô hại, trò chơi khăm đánh
nhỏ|Một bữa tối kiểu Nhật nhỏ|Đồ ăn sáng kiểu Nhật nhỏ| [[Udon|mì udon tempura]] Dưới đây là **danh sách các món ăn trong ẩm thực Nhật Bản**. Ngoài gạo, món chính trong ẩm thực Nhật
**_HaDugmaniot, Mùa 2_** là mùa thứ hai của _HaDugmaniot_, được phát sóng từ ngày 11 tháng 1 đến ngày 12 tháng 4 năm 2006 trên Channel 10 và chứng kiến ​​14 cô gái sống trong
nhỏ|[[Cơm Hayashi]] Trong ẩm thực Nhật Bản, đề cập đến một phong cách nấu ăn phương Tây chịu ảnh hưởng mà có nguồn gốc trong thời Minh Trị Duy Tân. Đây là những hình thức
nhỏ|phải|Món thịt viên đã được chế biến. nhỏ|phải|Các thành phần thường làm nên thịt viên, như thịt, trứng, hành tây, [[vụn bánh mì, tỏi,...]] **Thịt viên** là một món ăn được làm từ một số
**George Walton Lucas Jr.** (sinh ngày 14 tháng 5 năm 1944) là một nam nhà làm phim người Mỹ. Ông được biết đến nhiều nhất với vai trò tác giả của loạt phim khoa học
**Peter Albert David Singer**, (sinh ngày 6 tháng 7 năm 1946) là một triết gia đạo đức học người Úc, hiện là Giáo sư Đạo đức Sinh học tại Đại học Princeton. Ông chuyên về
Mỳ ý sốt dầu hàu rau củ là một món ăn phù hợp cho những ai yêu thích ẩm thực phương Tây nhưng cũng muốn thử một sự kết hợp mới mẻ và thú vị
nhỏ|[[Clint Eastwood vai 'Gã Không Tên' trong ảnh quảng bá cho phim Một nắm đô la, đạo diễn bởi Sergio Leone (1964). |202x202px]] **Viễn Tây Ý** hay **cao bồi Ý** (, ) là thể loại
**Neapolitan ragù** (tiếng Napoli: và tiếng Ý: hoặc **_ragù napoletano_**) là một trong hai loại nước sốt thịt nổi tiếng nhất được gọi là ragù. Nó là đặc sản của Napoli, như tên gọi của
_Pokémon_, một bộ manga nổi tiếng của Nhật Bản, còn có tên khác là , là một bộ phim truyền hình anime của Nhật Bản dựa trên loạt trò chơi video _Pokémon_ do Nintendo phát
**Tôn giáo tại Hoa Kỳ** đặc trưng bởi sự đa dạng các niềm tin và thực hành tôn giáo. Theo các cuộc thăm dò ý kiến gần đây, 76% tổng số dân Hoa Kỳ nhận
**Phim Viễn Tây** () là thể loại điện ảnh chuyên khai thác những số phận bôn tẩu giang hồ lấy cảm hứng từ thời kì Tây tiến, nay được mở rộng thành dòng văn nghệ
**Cộng hòa Dân chủ Đức** (**CHDC Đức** hay **CHDCĐ**; - **DDR**), thường được gọi là **Đông Đức** dựa trên việc nước này quản lý phần lãnh thổ phía Đông của Đức (để phân biệt với
**New Hollywood** (Hollywood mới) hay **American New Wave** (Làn sóng mới Mỹ) là một giai đoạn trong lịch sử điện ảnh Hoa Kỳ từ giữa thập niên 1960 đến đầu thập niên 1980 khi một
**Duisburg** [dyːsbʊʁk] là một thành phố trong bang Nordrhein-Westfalen của nước Đức. Thành phố có diện tích 232,82 km², dân số thời điểm cuối năm 2022 là 507.073 người. Đây là thành phố lớn thứ
**Hard rock** (hay **heavy rock**) là một thể loại rock được định nghĩa không rõ ràng, ra đời vào giữa những năm 1960 cùng với các thể loại garage rock, psychedelic rock và blues rock.
**_Định mệnh_** () là bộ phim chiến tranh Mỹ sản xuất năm 2009 được viết kịch bản và đạo diễn bởi Quentin Tarantino, cùng với sự góp mặt của các diễn viên như Brad Pitt,
nhỏ|Ryan Valentine đá phạt đền ghi bàn vào lưới Boston United F.C. 5/5/2007, góp phần cho Wrexham A.F.C. [[English Football League|trụ hạng|260x260px]] **Phạt đền** (còn gọi là **đá phạt 11 mét**, **penalty** hay gọi ngắn
Nam giới ăn cà chua mang đến nhiều lợi ích tích cực cho sức khỏe, tuy nhiên bạn cần tiêu thụ đúng cách. Bài viết này 1shop.vn sẽ giúp bạn hiểu hơn về những công
nhỏ|250x250px| Một đĩa ăn TV dinner của Đức (cà [[Currywurst|ri với khoai tây chiên).]] **TV dinner** (hay còn được gọi là **bữa ăn đóng gói sẵn**, **bữa ăn làm** **sẵn**, **bữa ăn sẵn**, **bữa tối**
nhỏ|phải|Cá cơm nhỏ|phải|Cá cơm thành phẩm **Thịt cá cơm** là thịt cá (cơ cá) của các loài cá cơm. Cá cơm được bảo quản bằng cách làm sạch ruột, ướp muối, làm chín và sau
**Bordighera** (; tiếng Liguria: _A Bordighea_, tiếng địa phương _A Burdighea_) là một thị trấn và xã thuộc tỉnh Imperia, Liguria (Ý). ## Vị trí địa lý Bordighera cách Pháp và có thể thấy bờ
liên_kết=https://en.wikipedia.org/wiki/File:Chicago_Circle_Interchange_2018.jpg|phải|nhỏ|Một ví dụ về sự phức tạp tiềm ẩn của việc phân mức, được thấy ở [[Nút giao thông Jane Byrne ở Chicago]] Trong kỹ thuật xây dựng dân dụng (cụ thể hơn là kỹ
**_Vua đầu bếp: MasterChef Vietnam 2015_** là mùa thứ ba của chương trình truyền hình thực tế **_Vua đầu bếp: MasterChef Vietnam_**. Đây là phiên bản của cuộc thi nấu ăn trên truyền hình _MasterChef_
**_Listen_** là album phòng thu thứ sáu của Pháp DJ David Guetta, được phát hành vào 21 tháng 11 năm 2014. Nó có tính năng cộng tác với các nghệ sĩ từ R&B, hip hop,
**Kem thịt lợn muối xông khói** (hoặc **kem thịt lợn muối xông khói và trứng**) là một loại kem thường được tạo ra bằng cách thêm thịt lợn muối xông khói vào sữa trứng và
**Saul Hudson** (sinh ngày 23 tháng 7 năm 1965), nổi tiếng hơn với nghệ danh **Slash**, là một nhạc công và nhạc sĩ sáng tác bài hát người Anh - Mỹ. Ông là cây lead
Tôm khô hoàn toàn có thể mix với món Âu, thậm chí tạo ra những hương vị độc đáo, mới lạ và đầy sáng tạo khi kết hợp ẩm thực Á – Âu. Tuy nhiên,
**Họ Cá trổng** hay **họ Cá cơm** (danh pháp khoa học: **_Engraulidae_**) là một họ chứa các loài cá chủ yếu sống trong nước mặn, với một số loài sống trong nước lợ và một
nhỏ|phải|Một tô mì sợi **Mì sợi** () là một thực phẩm thường dùng trong nhiều nền văn hóa làm từ bột không men. Tất cả được kéo căng, ép đùn, rồi cán phẳng và cắt