Thế Nào Là Hardcode Là Gì – 4298 Cho Mình Hỏi Hardcore&39&39 Nghĩa

Đây là bài share được dịch từ bài viết của tác giả Anna Monus (https://www.hongkiat.com/blog/code-optimization-coding-antipatterns/). Trong bài share này, có một số ít chỗ được mình sửa đổi, bổ trợ để cho thêm vào.Bạn đang xem: Hardcoded là gì

Thiết kế kiến trúc của một trang web hay một ứng dụng, hoặc kiến thiết kiến thiết xây dựng một coding workflow hiệu suất cao tiếp tục khiến chúng tôi phải đương đầu với những yếu tố nan giải, thường xuyên gặp phải. Chúng mình không quan trọng phải khắc phục những yếu tố phong cách phong cách thiết kế này từ số lượng 0, vì ta trọn vẹn trọn vẹn hoàn toàn hoàn toàn hoàn toàn hoàn toàn hoàn toàn hoàn toàn hoàn toàn hoàn toàn hoàn toàn hoàn toàn hoàn toàn có thể tái sử dụng được những giải pháp ở mức độ kiến trúc cũng như những đoạn code ở tầng vi mô.Bạn đang xem: Hardcode là gì

Bạn đang xem: Hard coded nghĩa là gì

Thiết kế patterns là một trong những giải pháp tái sử dụng trong một số trường hợp nhất định, có thể hữu ích để khắc phục những sự cố thường xảy ra và có thể giúp chúng tôi tối ưu những đoạn codes của mình.

Mặc dù Thiết kế patterns là phương tiện tuyệt vời để cải thiện quy trình tăng trưởng của chúng tôi bằng chiêu thức sử dụng những công thức đã được kiểm chứng tốt. Tất nhiên, đôi lúc những Thiết kế patterns đó cũng mang lại những hậu quả xấu đi so với chúng. Lúc này, chúng được gọi là những Antipatterns.

Antipatterns là gì?

Thuật ngữ “antipatterns” Open lần trước hết trong một cuốn sách mang tên AntiPatterns vào năm 1998.

Nó đề cập đến những giải pháp tái sử dụng mà bắt đầu trông có vẻ như hữu ích, nhưng dần sau đó, chúng lại trở nên có hại hơn là lợi.

Điều này có thể xảy ra vì nhiều nguyên do khác nhau, ví dụ như nếu chúng tôi không sử dụng những patterns đúng bối cảnh, cài đặt, hay thời hạn thêm vào (các giải pháp có hiệu suất cao trong quá khứ không phải khi nào cũng hoạt động giải trí giải trí đúng ở thời hạn hiện tại), hoặc trong những trường hợp xấu hơn là hàng loạt quy mô đã không tốt ngay từ khi khởi đầu rồi (>””Antipatterns cũng thường được gọi là những mô hình thất bại. Tất nhiên, tin vui là chúng tôi hoàn toàn có thể nhận biết và tránh né chúng.

Trong bài viết này, tôi sẽ giới thiệu qua cho những bạn 10 antipatterns thông dụng hay gặp phải trong quy trình tăng trưởng internet. (Quan tâm rằng những antipatterns tôi liệt kê dưới đây không hoàn toàn giống với những gì bạn có thể tìm thấy trong cuốn sách tôi đã đề cập ở trên).

10 Antipatterns phổ biến

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

Thời điểm tốt là một trong những yếu tố quan trọng trong việc tối ưu hóa những đoạn codes. Nếu chúng tôi chú ý đến những hiệu suất cao nhỏ và tối ưu hóa chúng quá sớm trong quá trình tăng trưởng, trước khi chúng tôi biết chuẩn xác những điều cần làm, rất có thể chúng tôi sẽ thuận tiện mắc phải antipattern “Tối ưu sớm”.

Theo câu nói nổi tiếng của Donald Knuth: “Tối ưu sớm là gốc rễ của mọi điều ác”, nó có thể hơi bị cường điệu hóa lên một tí, nhưng có thể cho thấy rằng những vấn đề nghiêm trọng về tối ưu hóa sớm có thể gây ra trong tương lai ntn.

Nếu chúng tôi tối ưu hóa hiệu năng trước khi xây dựng một kiến trúc hiệu quả, nó có thể gây ra codes trở nên khó đọc, việc debug và bảo trì khó khăn vất vả hơn, và những đoạn codes thừa bị đẩy vào mã nguồn của chúng tôi.

Xem thêm: 【Tổng quan】Khái niệm lớp mạng network layer là gì?

Một ý tưởng sáng tạo tốt để ngăn ngừa việc tối ưu sớm là tuân theo quy tắc lập trình YAGNI (You Aren’t Gonna Want It), nó khuyên chúng tôi nên tuân thủ “cần cái gì thì thêm cái đó”, chứ đừng có mà “chắc là sau này sẽ cần đến”.

2.Reinventing the Wheel

Reinventing the wheel – Tái ý tưởng bánh xe có thể hiểu nôm na là cái bánh xe nó đã được phát minh từ rất lâu rồi, và nó cũng rất tốt rồi, đừng có mất thời gian đi phát minh lại nó nữa

Reinventing the wheel không chỉ gây ra phung phí thời gian, mà còn những giải pháp tùy chọn, đặc biệt quan trọng quan trọng là những tính năng cơ bản hiếm khi tốt hơn những chuẩn mà nhiều nhà tăng trưởng hay user đã thưởng thức rất kĩ rồi.

3. Dependency Hell

Trái ngược với “reinventing the wheel”, chúng tôi có một antipattern khác cũng phổ cập đó là “dependency hell”.

Nếu, thay vì cặm cụi viết mọi thứ từ đầu, chúng tôi lại quá lạm dụng việc sử dụng thư viện bên thứ ba dựa trên những phiên bản đơn cử của những thư viện khác. Điều này sẽ khiến bạn thuận tiện phải đương đầu với những trường hợp khó quản trị mỗi khi muốn update thư viện, vì thỉnh thoảng những dependencies này sau khi cập nhật lại không thích hợp với những cái khác.

Dependency hell có thể được khắc phục bằng phương pháp sử dụng những bundle managers có khả năng cập nhật mưu trí những dependencies để chúng vẫn có thể tương thích được với nhau. Nếu chúng tôi vấp phải quá nhiều vấn đề, việc refactoring cũng có thể là một ý tưởng hay.

4. Spaghetti Code

Kết quả của một thiết kế kiến trúc kém là một đống codes chồng chất lên nhau như một bát mì Spaghetti vậy, rất rối rắm và phức tạp. Những Spaghetti codes rất khó để đọc và hầu hết khó có thể hiểu được nó hoạt động ntn (>”Don”t Repeat Your self (DRY), thay vì tạo ra giải pháp khắc phục vấn đề, bạn lại đi cóp nhặt từng mẩu codes hết chỗ này đến chỗ khác, sau đó chỉnh sửa lại nó cho thêm vào với ngữ cảnh.Xem thêm: Top Sàn Vàng Uy Tín Tại Việt Nam, Sàn Foreign exchange Uy Tín: Sàn Vàng Uy Tín

Kết quả của phương pháp này là chúng tôi có những đoạn codes bị lặp đi lặp lại, vì hầu hết chúng chỉ khác nhau ở một vài điểm nhỏ.

Sao chép and paste programming không chỉ thấy ở những lập trình viên mới, mà còn ở những lập trình viên đã có kinh nghiệm, bởi vì nhiều người trong số họ có xu hướng sử dụng những đoạn codes đã được viết sẵn, kiểm tra kĩ lưỡng của họ cho những tác vụ cụ thể, điều này thuận tiện gặp phải sự lặp lại không muốn.

7. Cargo-Cult Programming

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

Antipattern này cũng có những biểu hiện tương tự như vậy. Ta sử dụng những frameworks, thư viện, giải pháp, hay các thiết kế patterns,…có lợi cho chúng tôi, mà không thực sự hiểu vì sao chúng tôi cần phải sử dụng đến chúng hay những công nghệ đó hoạt động ra sao.

Xem thêm: Kĩ năng nhận thức (Conceptual Skills) trong quản trị là gì? Ví dụ về kĩ năng nhận thức

Cargo cult programming xảy ra ở những lập trình viên không có skill hoặc là lập trình viên mới (hoặc là những người thiếu skill về mặt nào đó), họ sao chép những mã nguồn từ nơi này đến nơi khác trong ứng dụng mà phần đông ít hoặc không hiểu biết về ý nghĩa thật sự của chúng. Antipattern này không chỉ tệ vì làm cho ứng dụng của chúng tôi bị “bơm căng phồng”, mà còn có thể dễ dàng mang những lỗi mới vào mã nguồn của chúng tôi.

8. Lava Movement

Chúng mình nhắc đến “Lava circulation” antipattern mỗi khi cần phải xử lý những đoạn mã codes thừa hoặc có chất lượng thấpdường như không hề tách rời với ứng dụng, nhưng chúng tôi không hoàn toàn hiểu được chúng có tính năng gì hoặc tác động của chúng đến toàn bộ ứng dụng ntn. Vì vậy, việc vô hiệu chúng là một việc rất rủi ro.

Điều này thường xuyên xảy ra với những legacy codes, hoặc là khi đoạn codes này được viết bởi những người khác (thường thiếu tài liệu chuẩn xác), hoặc là khi dự án Bất Động Sản được chuyển từ quá trình growth sang manufacturing quá nhanh.

Cái tên của antipattern này bộc lộ sự tương đồng với dung nham núi lửa, khởi đầu thì di chuyển nhanh, trôi chảy khó phòng ngừa, nhưng sau đó thì cứng lại và khó loại bỏ.

Trên lý thuyết, ta có thể vô hiệu lava flows sau khi đã kiểm tra và refactoring kĩ lưỡng, nhưng trong thực tế, việc thực hiện nó có vẻ như rất khó khăn hoặc thậm chí còn là không thể. Do lava flows thường có ngân sách thực hiện cao, nên tốt hơn hết để ngăn chặn chúng là ta xây dựng được kiến trúc thiết kế tốt và một workflow thao tác hiệu quả ngay từ khởi đầu ^_^.

9. Laborious Coding

“Laborious coding” là một antipattern được nhắc đến rất nhiều trong những cuốn sách về tăng trưởng internet ngay ở lời nói đầu. Laborious coding xảy ra khi chúng tôi lưu trữ những thông số kỹ thuật hoặc là tài liệu đầu vào (ví dụ như các đường dẫn file, distant hosting title hay một đoạn văn bản ở ngôn ngữ đơn cử nào đó) ở trong mã nguồn ứng dụng thay vì lưu chúng ở trong những file cấu hình, database, person enter hay từ một exterior api nào đó.

Vấn đề gặp phải ở đây là những laborious code đó sẽ chỉ hoạt động chuẩn xác trong một thiên nhiên và môi trường tự nhiên nhất định nào đó, và khi mà điều kiện kèm theo thay đổi, chúng sẽ không còn hoạt động chuẩn xác nữa.

Ví dụ như, ở môi trường growth, bạn sử dụng một s3-bucket có tên s3-foo-development, nhưng ở môi trường manufacturing bạn lại sử dụng một s3-bucket khác có tên s3-foo-production, hãy thử tưởng tượng, những s3 entry key đã được repair cứng ở trong code rồi thì làm sao bạn có thể sử dụng 2 s3-bucket khác nhau trên 2 môi trường khác nhau như vậy. Phương pháp khắc phục ở đây là bạn phải lưu những s3 entry key đó ở trong biến môi trường cho từng môi trường cụ thể.

10. Comfortable Coding

Nếu như cứ cố gắng nỗ lực quá mức để tránh laborious coding, bạn có thể vô tình chạm trán với một antipattern trái lại với nó gọi là “comfortable coding”.

Trong comfortable coding, chúng tôi mang những thứ mà đáng ra nó nên được để ở trong mã nguồn ứng dụng ra những tài nguyên bên ngoài, ví dụ chúng tôi tàng trữ enterprise logic trong database ==”. Lý do phổ biến nhất mà chúng tôi thường làm thế, là do sợ những enterprise guidelines sẽ thay đổi trong tương lai, và lúc đó sẽ phải viết lại codes.

Trong những trường hợp cực đoan, một ứng dụng với những comfortable coded có thể trở nên quá trừu tượng và phức tạp đến mức phần đông không hề hiểu được nó (đặc biệt là so với những fan mới vào workforce), và cực kỳ khó để debug và bảo trì.Xem thêm: Dược Lực Học Là Gì – Đại Cương Về Dược Lực Học

Kết luận

Bài share trên đã giới thiệu qua những Antipatterns mà chúng tôi thường mắc phải trong quá trình tăng trưởng ứng dụng cũng như phương pháp để khắc phục chúng. Hello vọng fan hâm mộ sẽ để ý để tránh mắc phải chúng trong sự nghiệp lập trình của mình nhé ^_^.

Xem thêm: The Extensible Stylesheet Language Family (XSL)

Trả lời

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *