Đây là bài bác chia sẻ được dịch tự nội dung bài viết của người sáng tác Anna Monus (https://www.hongkiat.com/blog/code-optimization-coding-antipatterns/). Trong bài bác share này, tất cả một vài chỗ được mình sửa đổi, bổ sung khiến cho tương xứng.

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

*

Thiết kế phong cách thiết kế của một trang web hay là 1 vận dụng, hoặc cấu hình thiết lập một coding workflow tác dụng thường xuyên khiến cho chúng ta đề xuất đối mặt với hầu hết vụ việc nan giải, thường xuyên gặp cần. Chúng ta không quan trọng yêu cầu giải quyết gần như sự việc kiến thiết này trường đoản cú số lượng 0, do ta hoàn toàn có thể tái sử dụng được hầu như chiến thuật làm việc Lever bản vẽ xây dựng cũng tương tự đều đoạn code ở tầng vi mô.

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

*

Mặc mặc dù Design patterns là phương tiện hoàn hảo nhất nhằm cải thiện quy trình cải cách và phát triển của họ bằng phương pháp áp dụng đều bí quyết đã có được kiểm chứng giỏi. Tuy nhiên, nhiều lúc phần lớn Design patterns này cũng đem về số đông hậu quả tiêu cực đối với chúng. Lúc này, bọn chúng được điện thoại tư vấn là gần như Antipatterns.

Antipatterns là gì?

Thuật ngữ "antipatterns" xuất hiện lần thứ nhất vào một cuốn sách có tên AntiPatterns vào khoảng thời gian 1998.

Nó đề cùa tới rất nhiều chiến thuật tái thực hiện nhưng lúc đầu trông có vẻ như hữu ích, dẫu vậy dần sau đó, bọn chúng lại trngơi nghỉ buộc phải bất lợi rộng là lợi.

Vấn đề này rất có thể xẩy ra bởi các nguyên do khác nhau, ví dụ như nếu như họ ko sử dụng hồ hết patterns đúng toàn cảnh, thiết lập, hay thời hạn cân xứng (những chiến thuật gồm tác dụng vào vượt khứ không hẳn dịp nào thì cũng hoạt động đúng ở thời điểm hiện nay tại), hoặc trong số những ngôi trường đúng theo xấu rộng là tổng thể quy mô dường như không xuất sắc ngay lập tức từ lúc bước đầu rồi (>""Antipatterns cũng thường xuyên được Gọi là mọi quy mô thất bại. Tuy nhiên, tin vui là bọn họ trọn vẹn rất có thể nhận biết và tránh giảm chúng.

Trong bài viết này, tôi vẫn ra mắt qua đến chúng ta 10 antipatterns phổ biến hay chạm mặt đề nghị vào quá trình trở nên tân tiến web. (Chú ý rằng đông đảo antipatterns tôi liệt kê tiếp sau đây ko hoàn toàn như thể cùng với đầy đủ gì bạn cũng có thể tìm thấy vào cuốn nắn sách tôi đã nói ngơi nghỉ 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 giữa những nhân tố đặc biệt vào việc tối ưu hóa các đoạn codes. Nếu bọn họ lưu ý đến các công dụng bé dại với tối ưu hóa chúng vượt mau chóng vào quy trình phát triển, trước khi họ biết đúng mực hầu hết vấn đề cần làm cho, khôn xiết hoàn toàn có thể họ sẽ dễ ợt mắc phải antipattern "Tối ưu sớm".

*

Theo lời nói nổi tiếng của Donald Knuth: "Tối ưu sớm là nền tảng gốc rễ của số đông điều ác", nó rất có thể khá bị cường hóa lên một chút, nhưng mà có thể cho biết rằng phần nhiều vụ việc cực kỳ nghiêm trọng về buổi tối ưu hóa mau chóng hoàn toàn có thể gây nên sau đây ra sao.

Nếu bọn họ buổi tối ưu hóa tính năng trước lúc thành lập một phong cách thiết kế hiệu quả, nó rất có thể gây nên codes trsinh sống bắt buộc khó khăn đọc, Việc debug và gia hạn khó khăn hơn, và gần như đoạn codes vượt bị đẩy vào mã nguồn của bọn họ.

Một ý tưởng xuất sắc nhằm ngăn chặn vấn đề về tối ưu mau chóng là tuân theo hình thức thiết kế YAGNI (You Aren’t Gonmãng cầu Need It), nó khuyên ổn bọn họ yêu cầu tuân thủ "đề xuất đồ vật gi thì thêm chiếc đó", chứ đọng đừng tất cả mà "chắc chắn là sau này vẫn buộc phải đến".

2.Reinventing the Wheel

Reinventing the wheel - Tái phát minh sáng tạo bánh xe có thể phát âm nôm mãng cầu là loại bánh xe cộ nó đã làm được sáng tạo từ bỏ xa xưa, với nó cũng cực tốt rồi, đừng bao gồm mất thời hạn đi sáng tạo lại nó nữa

*

Reinventing the wheel không chỉ là gây ra lãng phí thời hạn, Hơn nữa đông đảo phương án tùy lựa chọn, nhất là gần như tác dụng cơ phiên bản thi thoảng Khi tốt rộng đa số chuẩn mà lại các công ty cải tiến và phát triển tuyệt người tiêu dùng đã thử nghiệm cực kỳ kĩ rồi.

3. Dependency Hell

Trái ngược cùng với "reinventing the wheel", họ bao gồm một antipattern không giống cũng phổ cập đó là "dependency hell".

Nếu, thế vị cặm cụi viết số đông sản phẩm công nghệ từ trên đầu, họ lại thừa sử dụng câu hỏi áp dụng tlỗi viện mặt sản phẩm cha dựa trên phần đông phiên bạn dạng cụ thể của không ít thỏng viện khác. Như vậy sẽ khiến các bạn dễ dãi nên đương đầu với hồ hết trường hợp cạnh tranh thống trị mỗi một khi ước ao cập nhật tlỗi viện, bởi đôi lúc hầu hết dependencies này sau khoản thời gian cập nhật lại không tương xứng với những cái khác.

*

Dependency hell có thể được giải quyết và xử lý bằng phương pháp sử dụng các package managers có khả năng update thông minh những dependencies để chúng vẫn rất có thể cân xứng được cùng nhau. Nếu chúng ta vấp váp phải vô số sự việc, bài toán refactoring cũng hoàn toàn có thể là 1 trong những ý tưởng phát minh xuất xắc.

4. Spaghetti Code

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

Xem thêm: Xếp Loại Hạnh Kiểm Trong Tiếng Anh, Nghĩa Của Từ Xếp Loại Học Lực

Kết trái của một xây đắp phong cách thiết kế kỉm là 1 gò codes chồng hóa học lên nhau giống như một bát mì Spaghetti vậy, cực kỳ rối rắm với phức tạp. Những Spaghetti codes hết sức khó khăn nhằm đọc với phần nhiều khó khăn hoàn toàn có thể gọi được nó vận động thế nào (>"Don"t Repeat Yourself (DRY), vắt vì tạo nên phương án giải quyết vấn đề, các bạn lại đi cóp nhặt từng mẩu codes không còn nơi này mang lại nơi khác, kế tiếp sửa đổi lại nó đến cân xứng với ngữ chình ảnh.

*

Kết trái của cách thức này là chúng ta gồm đều đoạn codes bị lặp đi lặp lại, do số đông bọn chúng chỉ khác biệt tại một vài ba điểm nhỏ tuổi.

Copy & paste programming không chỉ là thấy sống hồ hết xây dựng viên mới, mà còn ngơi nghỉ phần đông lập trình viên đã bao gồm kinh nghiệm, chính vì không ít người dân trong các họ bao gồm xu hướng áp dụng các đoạn codes đã làm được viết sẵn, khám nghiệm kĩ lưỡng của họ mang đến các tác vụ nuốm thể, điều này thuận lợi gặp bắt buộc sự lặp lại không hề mong muốn.

7. Cargo-Cult Programming

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

*

Antipattern này cũng đều có những bộc lộ tương tự như vậy. Ta sử dụng đa số frameworks, thư viện, chiến thuật, hay các kiến thiết patterns,...bổ ích cho chúng ta, mà lại ko thực thụ hiểu tại vì sao chúng ta cần phải cần sử dụng mang lại chúng tuyệt hầu hết công nghệ kia hoạt động ra sao.

Cargo cult programming xẩy ra nghỉ ngơi số đông xây dựng viên không tồn tại khả năng hay những lập trình viên bắt đầu (Hoặc là những người thiếu năng lực về khía cạnh làm sao đó), chúng ta sao chép hầu hết mã mối cung cấp tự khu vực này đến khu vực khác vào ứng dụng nhưng mà phần lớn ít hoặc không hiểu nhiều biết về ý nghĩa thật sự của chúng. Antipattern này không chỉ có tệ bởi vì tạo nên vận dụng của bọn họ bị "bơm căng phồng", Nhiều hơn rất có thể dễ dàng đưa phần nhiều lỗi bắt đầu vào mã mối cung cấp của họ.

8. Lava Flow

Chúng ta nói đến "Lava flow" antipattern mọi khi cần được xử lý gần như đoạn mã codes quá hoặc gồm chất lượng thấpcó lẽ cần yếu tách bóc rời với áp dụng, tuy nhiên họ không trọn vẹn hiểu được chúng bao gồm tác dụng gì hoặc ảnh hưởng của bọn chúng đến tổng thể ứng dụng ra sao. Vì vậy, câu hỏi vứt bỏ chúng là một trong Việc siêu rủi ro.

Điều này thường xuyên xẩy ra cùng với mọi legacy codes, hoặc là khi đoạn codes này được viết do những người khác (thường xuyên thiếu hụt tư liệu thiết yếu xác), hoặc là khi dự án được gửi tự tiến độ development thanh lịch production vượt nkhô giòn.

Cái thương hiệu của antipattern này diễn đạt sự tương đương với dung nmê mệt núi lửa, lúc đầu thì dịch chuyển nkhô nóng, trôi chảy cực nhọc chống dự phòng, cơ mà tiếp đến thì cứng lại cùng cực nhọc đào thải.

*

Trên lý thuyết, ta hoàn toàn có thể vứt bỏ lava flows sau khoản thời gian đang đánh giá với refactoring kĩ lưỡng, nhưng mà vào thực tiễn, việc thực hiện nó dường như rất khó khăn hoặc thậm chí là là ko thể. Do lava flows thường có chi phí tiến hành cao, cần xuất sắc hơn hết nhằm ngăn chặn bọn chúng là ta cấu hình thiết lập được phong cách thiết kế xây cất giỏi và một workflow thao tác làm việc hiệu quả tức thì trường đoản cú thuở đầu ^_^.

9. Hard Coding

"Hard coding" là một trong những antipattern được nhắc đến không hề ít trong những cuốn nắn sách về cách tân và phát triển website tức thì làm việc lời nói đầu. Hard coding xảy ra Khi chúng ta tàng trữ hầu như thông số kỹ thuật hoặc là tài liệu đầu vào (ví dụ như những đường dẫn tệp tin, remote host name hay 1 đoạn văn bạn dạng nghỉ ngơi ngôn ngữ rõ ràng như thế nào đó) sinh hoạt vào mã mối cung cấp vận dụng thay vày giữ chúng nghỉ ngơi Một trong những file thông số kỹ thuật, database, user input đầu vào xuất xắc xuất phát từ 1 external api làm sao kia.

*

Vấn đề gặp nên sinh sống đây là hồ hết hard code này sẽ chỉ vận động đúng đắn trong một môi trường xung quanh cố định nào đó, với khi mà lại điều kiện biến đổi, bọn chúng vẫn không thể vận động đúng đắn nữa.

ví dụ như nlỗi, ở môi trường development, các bạn thực hiện một s3-bucket mang tên s3-foo-development, tuy vậy sinh sống môi trường xung quanh production các bạn lại thực hiện một s3-bucket khác mang tên s3-foo-production, thử tưởng tượng, phần đa s3 access key đã có được fix cứng sinh hoạt vào code rồi thì làm sao bạn có thể thực hiện 2 s3-bucket khác nhau trên 2 môi trường xung quanh khác biệt điều này. Cách giải quyết và xử lý làm việc đó là các bạn yêu cầu lưu giữ số đông s3 access key đó sinh sống trong phát triển thành môi trường đến từng môi trường ví dụ.

10. Soft Coding

Nếu nhỏng cứ đọng cố gắng quá mức cần thiết để tránh hard coding, chúng ta có thể vô tình chạm trán với cùng một antipattern trở lại cùng với nó Hotline là "soft coding".

Trong soft coding, bọn họ gửi hầu hết thiết bị nhưng mà lẽ ra nó đề nghị được đặt tại trong mã nguồn áp dụng ra các tài nguyên ổn bên ngoài, ví dụ bọn họ tàng trữ business xúc tích và ngắn gọn trong database ==". Lý vày phổ biến tốt nhất nhưng bọn họ thường có tác dụng ráng, là do băn khoăn lo lắng phần lớn business rules vẫn đổi khác trong tương lai, cùng thời điểm đó sẽ bắt buộc viết lại codes.

Trong đông đảo ngôi trường phù hợp cực đoan, một ứng dụng cùng với hồ hết soft coded có thể trngơi nghỉ phải quá trừu tượng cùng phức tạp đến mức gần như chẳng thể gọi được nó (đặc biệt là đối với phần đa member bắt đầu vào team), với rất là cạnh tranh để debug cùng bảo trì.

Xem thêm: Hướng Dẫn Chơi Yu Gioh Speed Duel, Hướng Dẫn Chơi Yugioh Speed Duel

Kết luận

Bài chia sẻ bên trên đang trình làng qua gần như Antipatterns nhưng chúng ta thường xuyên mắc phải trong quá trình cải tiến và phát triển ứng dụng cũng giống như phương pháp để khắc phục và hạn chế bọn chúng. Hi vọng bạn đọc đang chăm chú để tránh mắc phải bọn chúng vào sự nghiệp lập trình của bản thân mình nhé ^_^.