Hardcoded Là Gì

Đây là bài bác chia sẻ được dịch từ bài viết của người sáng tác Anmãng cầu Monus (https://www.hongkiat.com/blog/code-optimization-coding-antipatterns/). Trong bài chia sẻ này, bao gồm một số trong những vị trí được bản thân sửa đổi, bổ sung cập nhật khiến cho phù hợp.

Bạn đang xem: Hardcoded là gì

*

Thiết kế phong cách xây dựng của một trang web hay như là một ứng dụng, hoặc thiết lập một coding workflow hiệu quả tiếp tục khiến họ bắt buộc đương đầu với các vấn đề nan giải, tiếp tục chạm mặt cần. Chúng ta không quan trọng yêu cầu giải quyết và xử lý đa số vấn đề xây cất này từ số lượng 0, do ta có thể tái sử dụng được phần nhiều chiến thuật ngơi nghỉ cấp độ phong cách xây dựng tương tự như mọi đoạn code ở tầng vi mô.

Design patterns là 1 trong những giữa những giải pháp tái sử dụng trong một trong những ngôi trường đúng theo nhất quyết, hoàn toàn có thể hữu ích nhằm xử lý đầy đủ sự cụ thường xảy ra và hoàn toàn có thể giúp họ về tối ưu đầy đủ đoạn codes của bản thân mình.

*

Mặc cho dù Design patterns là phương tiện hoàn hảo nhằm cải thiện quá trình cách tân và phát triển của họ bằng phương pháp sử dụng đều bí quyết đã có kiểm triệu chứng xuất sắc. Tuy nhiên, nhiều khi phần lớn Design patterns đó cũng đem đến hồ hết kết quả tiêu cực so với chúng. Hiện giờ, bọn chúng được Call là phần nhiều Antipatterns.

Antipatterns là gì?

Thuật ngữ "antipatterns" lộ diện lần đầu tiên vào một cuốn sách mang tên AntiPatterns vào năm 1998.

Nó đề cập đến các giải pháp tái sử dụng mà ban đầu trông dường như hữu ích, nhưng dần dần sau đó, chúng lại trsinh sống đề nghị có hại hơn là lợi.

Như vậy hoàn toàn có thể xảy ra vì chưng nhiều nguyên nhân khác biệt, ví dụ như ví như bọn họ ko thực hiện số đông patterns đúng bối cảnh, thiết đặt, giỏi thời hạn tương xứng (những giải pháp gồm kết quả trong vượt khđọng không phải cơ hội nào thì cũng hoạt động đúng sống thời khắc hiện tại tại), hoặc trong số những ngôi trường hòa hợp xấu hơn là toàn thể quy mô dường như không giỏi ngay lập tức trường đoản cú Lúc bước đầu rồi (>""Antipatterns cũng thường được Call là mọi mô hình thất bại. Tuy nhiên, tin vui là họ hoàn toàn hoàn toàn có thể nhận ra và nên tránh chúng.

Trong bài viết này, tôi đã trình làng qua đến các bạn 10 antipatterns phổ cập hay gặp đề nghị vào quá trình trở nên tân tiến website. (Crúc ý rằng đa số antipatterns tôi liệt kê tiếp sau đây ko trọn vẹn giống như cùng với đông đảo gì bạn cũng có thể tìm kiếm thấy trong cuốn sách tôi đã kể ở trên).

10 Antipatterns phổ biến

1. Premature Optimization (Tối ưu sớm)

Thời điểm tốt là một trong những nhân tố quan trọng đặc biệt trong Việc về tối ưu hóa những đoạn codes. Nếu chúng ta để ý đến những tác dụng nhỏ tuổi và buổi tối ưu hóa bọn chúng vượt sớm trong quá trình phát triển, trước lúc bọn họ biết đúng đắn gần như vấn đề cần có tác dụng, cực kỳ rất có thể họ sẽ thuận tiện phạm phải antipattern "Tối ưu sớm".

*

Theo lời nói danh tiếng của Donald Knuth: "Tối ưu nhanh chóng là căn nguyên của mọi điều ác", nó hoàn toàn có thể hơi bị cường hóa lên một chút ít, dẫu vậy có thể cho biết rằng phần đa sự việc rất lớn về buổi tối ưu hóa sớm có thể gây ra trong tương lai thế nào.

Nếu bọn họ tối ưu hóa tính năng trước khi kiến thiết một bản vẽ xây dựng công dụng, nó hoàn toàn có thể gây ra codes trngơi nghỉ nên nặng nề đọc, bài toán debug với duy trì khó khăn hơn, và phần đông đoạn codes quá bị đẩy vào mã nguồn của chúng ta.

Một phát minh xuất sắc nhằm ngăn chặn Việc về tối ưu nhanh chóng là tuân theo lý lẽ lập trình sẵn YAGNI (You Aren’t Gonmãng cầu Need It), nó khuyên ổn bọn họ đề xuất vâng lệnh "cần vật gì thì thêm mẫu đó", chđọng đừng tất cả mà "chắc là sau này đang buộc phải đến".

2.Reinventing the Wheel

Reinventing the wheel - Tái phát minh bánh xe có thể đọc nôm na là mẫu bánh xe cộ nó đã được phát minh sáng tạo từ bỏ rất lâu rồi, và nó cũng tốt nhất rồi, đừng tất cả mất thời gian đi phát minh sáng tạo lại nó nữa

*

Reinventing the wheel không chỉ có tạo ra lãng phí thời hạn, ngoại giả phần lớn phương án tùy lựa chọn, nhất là những công dụng cơ bạn dạng thảng hoặc lúc xuất sắc hơn các chuẩn cơ mà nhiều nhà cách tân và phát triển xuất xắc người dùng đã làm nghiệm siêu kĩ rồi.

3. Dependency Hell

Trái ngược cùng với "reinventing the wheel", chúng ta gồm một antipattern khác cũng phổ cập sẽ là "dependency hell".

Nếu, vậy vì hùi hụi viết phần đa trang bị từ đầu, họ lại vượt sử dụng quá Việc áp dụng thư viện bên sản phẩm công nghệ cha dựa vào hồ hết phiên phiên bản rõ ràng của rất nhiều thỏng viện khác. Điều này sẽ khiến cho chúng ta thuận tiện bắt buộc đối mặt cùng với phần đông trường hợp khó khăn làm chủ mỗi một khi ước ao update tlỗi viện, bởi vì nhiều khi phần đa dependencies này sau khi cập nhật lại ko tương xứng cùng với những chiếc khác.

*

Dependency hell có thể được giải quyết bằng phương pháp áp dụng các package managers có tác dụng update hợp lý các dependencies nhằm bọn chúng vẫn hoàn toàn có thể tương xứng được cùng nhau. Nếu họ vấp váp đề nghị vô số vấn đề, bài toán refactoring cũng rất có thể là 1 phát minh giỏi.

4. Spaghetti Code

"Spaghetti code" chắc rằng là antipattern nổi tiếng độc nhất. Nó miêu tả một áp dụng khó debug cùng điều chỉnh bởi thiếu hụt bản vẽ xây dựng phù hợp.

Xem thêm:

Kết quả của một thiết kế kiến trúc kém là một gò codes ông xã chất lên nhau y hệt như một chén bát mì Spaghetti vậy, vô cùng rối rắm cùng phức tạp. Những Spaghetti codes hết sức khó khăn để hiểu cùng hầu như cạnh tranh có thể đọc được nó vận động thế nào (>"Don"t Repeat Yourself (DRY), ráng do tạo nên phương án xử lý vụ việc, bạn lại đi cóp nhặt từng mẩu codes không còn nơi này mang đến chỗ khác, sau đó chỉnh sửa lại nó mang lại phù hợp cùng với ngữ cảnh.

*

Kết trái của phương thức này là chúng ta gồm gần như đoạn codes bị lặp đi lặp lại, vì chưng hầu như chúng chỉ không giống nhau ở 1 vài ba điểm nhỏ dại.

Copy và paste programming không những thấy làm việc hầu hết lập trình sẵn viên mới, ngoại giả nghỉ ngơi mọi lập trình sẵn viên đang có kinh nghiệm, bởi vì nhiều người trong số họ gồm xu hướng sử dụng đầy đủ đoạn codes đã làm được viết sẵn, soát sổ kĩ lưỡng của họ đến mọi tác vụ cố thể, điều đó thuận lợi chạm mặt yêu cầu sự tái diễn không hề mong muốn.

7. Cargo-Cult Programming

Cái thương hiệu “cargo-cult programming” được bắt đầu từ một hiện tượng lạ dân tộc học tập có thương hiệu "cargo cult". Cargo cults mở ra sống Nam Thái Bình Dương sau vậy chiến sản phẩm công nghệ II, lúc xúc tiếp với nền vnạp năng lượng minc tiên tiến, người bạn dạng địa cứ đọng cho rằng những sản phẩm nlỗi Coca-Cola, TVs, tốt tủ giá buốt trong số những tàu chngơi nghỉ hàng có lên đảo, gần như được sản xuất bởi số đông thế lực cực kỳ nhiên, cùng bọn họ tin rằng mỗi lúc triển khai hầu như nghi lễ ma thuật tương tự nhỏng phong tục của người phương thơm Tây, hầu hết thùng chất đầy hàng hóa đó sẽ lại mở ra trở lại.

*

Antipattern này cũng đều có mọi biểu lộ tương tự như như thế. Ta thực hiện phần lớn frameworks, tlỗi viện, giải pháp, giỏi các thiết kế patterns,...bổ ích đến chúng ta, mà lại ko thực thụ gọi vì sao họ cần được dùng mang lại chúng hay phần nhiều công nghệ kia vận động ra sao.

Cargo cult programming xảy ra nghỉ ngơi hồ hết thiết kế viên không có kỹ năng Hay những lập trình sẵn viên bắt đầu (Hay những những người dân thiếu kỹ năng về khía cạnh như thế nào đó), bọn họ coppy các mã mối cung cấp từ bỏ chỗ này mang lại vị trí không giống trong vận dụng mà phần nhiều không nhiều hoặc thiếu hiểu biết nhiều biết về chân thành và ý nghĩa thật sự của chúng. Antipattern này không chỉ tệ bởi vì tạo cho áp dụng của bọn họ bị "bơm căng phồng", bên cạnh đó có thể thuận tiện đưa hầu hết lỗi bắt đầu vào mã nguồn của bọn họ.

8. Lava Flow

Chúng ta nhắc tới "Lava flow" antipattern mỗi một khi cần phải cách xử trí phần nhiều đoạn mã codes vượt hoặc gồm unique thấp nhưng dường như cần thiết tách bóc rời với ứng dụng, nhưng chúng ta không trọn vẹn phát âm được chúng gồm chức năng gì hoặc ảnh hưởng của bọn chúng đến toàn thể ứng dụng thế nào. Vì vậy, việc vứt bỏ bọn chúng là một bài toán khôn xiết khủng hoảng rủi ro.

Như vậy liên tục xảy ra với hầu hết legacy codes, hoặc là khi đoạn codes này được viết vì những người khác (thường xuyên thiếu thốn tài liệu chủ yếu xác), hoặc là lúc dự án công trình được chuyển trường đoản cú tiến độ development sang production thừa nhanh hao.

Cái thương hiệu của antipattern này biểu hiện sự tương đồng cùng với dung nmê man núi lửa, ban đầu thì dịch chuyển nhanh hao, trôi tan cực nhọc chống ngừa, nhưng mà tiếp nối thì cứng lại với khó khăn loại trừ.

*

Trên kim chỉ nan, ta rất có thể sa thải lava flows sau khi vẫn soát sổ với refactoring kĩ lưỡng, dẫu vậy vào thực tế, bài toán triển khai nó giống như rất khó khăn hoặc thậm chí còn là ko thể. Do lava flows thường có ngân sách triển khai cao, yêu cầu giỏi rộng không còn để ngăn ngừa chúng là ta tùy chỉnh thiết lập được kiến trúc xây dựng tốt và một workflow làm việc công dụng tức thì trường đoản cú thuở đầu ^_^.

9. Hard Coding

"Hard coding" là 1 trong những antipattern được nói tới rất nhiều trong số những cuốn sách về phát triển website tức thì sống tiếng nói đầu. Hard coding xảy ra Khi chúng ta lưu trữ phần nhiều thông số kỹ thuật Hay là tài liệu đầu vào (ví dụ như các đường truyền tệp tin, remote host name hay là 1 đoạn văn bạn dạng ngơi nghỉ ngôn ngữ ví dụ như thế nào đó) sinh hoạt trong mã nguồn ứng dụng chũm bởi lưu lại chúng sinh sống trong số những file thông số kỹ thuật, database, user input đầu vào giỏi xuất phát điểm từ một external api nào đó.

*

Vấn đề gặp yêu cầu sinh hoạt đây là phần nhiều hard code này sẽ chỉ vận động đúng mực vào một môi trường nhất định như thế nào đó, với Lúc mà lại ĐK chuyển đổi, bọn chúng đã không hề chuyển động đúng mực nữa.

ví dụ như nlỗi, ngơi nghỉ môi trường development, bạn thực hiện một s3-bucket có tên s3-foo-development, tuy thế làm việc môi trường production chúng ta lại áp dụng một s3-bucket không giống mang tên s3-foo-production, thử tưởng tượng, gần như s3 access key đã có fix cứng sinh hoạt trong code rồi thì làm thế nào bạn có thể sử dụng 2 s3-bucket khác nhau trên 2 môi trường thiên nhiên không giống nhau như thế. Cách giải quyết sinh sống đấy là các bạn nên lưu lại các s3 access key kia sinh hoạt trong vươn lên là môi trường xung quanh mang lại từng môi trường xung quanh ví dụ.

10. Soft Coding

Nếu như cứ nỗ lực trên mức cần thiết nhằm tránh hard coding, bạn có thể vô tình va trán với một antipattern trở lại cùng với nó Điện thoại tư vấn là "soft coding".

Trong soft coding, bọn họ gửi đều lắp thêm cơ mà lẽ ra nó phải được để tại vào mã nguồn ứng dụng ra hầu như tài nguyên ổn mặt ngoài, ví dụ họ tàng trữ business logic trong database ==". Lý vì chưng phổ cập độc nhất vô nhị nhưng họ thường xuyên làm cố, là do lo lắng phần đa business rules vẫn biến đổi sau này, với thời điểm này sẽ nên viết lại codes.

Trong gần như trường hòa hợp cực đoan, một vận dụng cùng với gần như soft coded có thể trnghỉ ngơi đề xuất vượt trừu tượng và phức tạp đến cả gần như là tất yêu phát âm được nó (nhất là so với rất nhiều thành viên bắt đầu vào team), và rất là khó khăn để debug với bảo trì.

Kết luận

Bài share trên sẽ trình làng qua đông đảo Antipatterns mà bọn họ thường xuyên phạm phải vào quy trình cải tiến và phát triển áp dụng cũng tương tự phương pháp để khắc chế bọn chúng. Hi vọng độc giả đã để ý nhằm rời mắc phải bọn chúng trong sự nghiệp lập trình sẵn của mình nhé ^_^.