HARDCODE LÀ GÌ

  -  

Đây là bài share được dịch từ bỏ bài viết của tác giả Anna Monus (https://www.hongkiat.com/blog/code-optimization-coding-antipatterns/). Trong bài xích share này, có một vài nơi được mình sửa thay đổi, bổ sung cập nhật để cho tương xứng.quý khách hàng đã xem: Hardcoded là gì


*

Thiết kế phong cách xây dựng của một trang web hay là 1 vận dụng, hoặc thiết lập một coding workflow kết quả liên tiếp khiến cho bọn họ buộc phải đương đầu cùng với phần nhiều vụ việc nan giải, thường xuyên gặp gỡ cần. Chúng ta ko cần thiết đề nghị giải quyết và xử lý những vụ việc thiết kế này từ con số 0, do ta hoàn toàn có thể tái sử dụng được đều chiến thuật làm việc Lever phong cách thiết kế cũng giống như đa số đoạn code trên tầng vi mô.

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

Design patterns là một giữa những chiến thuật tái sử dụng trong một số trong những trường đúng theo nhất định, rất có thể hữu ích để giải quyết và xử lý đông đảo sự ráng thường xuyên xảy ra cùng hoàn toàn có thể giúp chúng ta buổi tối ưu những đoạn codes của chính mình.


*

Mặc dù Design patterns là phương tiện hoàn hảo và tuyệt vời nhất để nâng cấp quá trình phát triển của chúng ta bằng cách áp dụng phần nhiều cách làm đã có được kiểm triệu chứng giỏi. Tuy nhiên, nhiều lúc phần lớn Design patterns này cũng mang lại số đông hậu quả xấu đi so với chúng. Lúc bấy giờ, chúng được call là phần đa Antipatterns.

Antipatterns là gì?

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

Nó đề cập đến số đông giải pháp tái áp dụng nhưng mà lúc đầu trông dường như hữu ích, nhưng dần dần kế tiếp, chúng lại trnghỉ ngơi buộc phải ăn hại hơn là lợi.

Như vậy hoàn toàn có thể xảy ra vì chưng nhiều lý do khác nhau, ví như giả dụ chúng ta không thực hiện hầu hết patterns đúng toàn cảnh, cài đặt, tốt thời hạn tương xứng (các giải pháp bao gồm kết quả vào quá khđọng chưa phải thời gian nào thì cũng hoạt động đúng ngơi nghỉ thời khắc hiện tại), hoặc Một trong những ngôi trường phù hợp xấu hơn là toàn bộ mô hình đang không tốt ngay lập tức từ Khi bước đầu rồi (>""Antipatterns cũng hay được hotline là hầu như quy mô thất bại. Tuy nhiên, tin vui là chúng ta hoàn toàn hoàn toàn có thể nhận ra và né tránh chúng.

Trong nội dung bài viết này, tôi vẫn giới thiệu qua mang lại các bạn 10 antipatterns thịnh hành giỏi gặp gỡ buộc phải vào quy trình cải tiến và phát triển website. (Chú ý rằng hầu như antipatterns tôi liệt kê sau đây ko hoàn toàn tương tự với phần đông gì bạn có thể tìm kiếm thấy vào cuốn nắn sách tôi đã kể nghỉ ngơi trên).

10 Antipatterns phổ biến

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

Thời điểm tốt là 1 trong những giữa những yếu tố quan trọng đặc biệt vào câu hỏi tối ưu hóa những đoạn codes. Nếu bọn họ lưu ý tới các công dụng nhỏ tuổi cùng tối ưu hóa chúng quá mau chóng trong quy trình cách tân và phát triển, trước khi họ biết chính xác phần đông vấn đề cần làm, rất hoàn toàn có thể chúng ta sẽ dễ ợt phạm phải antipattern "Tối ưu sớm".


*

Theo lời nói khét tiếng của Donald Knuth: "Tối ưu mau chóng là nền tảng gốc rễ của các điều ác", nó rất có thể hơi bị cường điệu hóa lên một chút, tuy nhiên có thể cho thấy thêm rằng các vụ việc rất lớn về về tối ưu hóa sớm rất có thể tạo ra sau đây ra sao.

Nếu họ buổi tối ưu hóa tính năng trước khi thành lập một phong cách xây dựng hiệu quả, nó có thể gây ra codes trở yêu cầu nặng nề đọc, Việc debug cùng gia hạn khó khăn hơn, và hầu hết đoạn codes thừa bị đẩy vào mã nguồn của bọn họ.

Một phát minh tốt nhằm ngăn chặn vấn đề tối ưu nhanh chóng là theo đúng lý lẽ lập trình sẵn YAGNI (You Aren’t Gonmãng cầu Need It), nó khulặng chúng ta yêu cầu vâng lệnh "nên vật gì thì thêm chiếc đó", chđọng chớ có cơ mà "chắc hẳn rằng sau đây vẫn đề nghị đến".

2.Reinventing the Wheel

Reinventing the wheel - Tái phát minh bánh xe rất có thể gọi nôm mãng cầu là mẫu bánh xe pháo nó đã có sáng tạo từ bỏ ngày xưa, với nó cũng rất tốt rồi, chớ tất cả mất thời hạn đi phát minh lại nó nữa

*

Reinventing the wheel không chỉ có tạo ra tiêu tốn lãng phí thời gian, mà còn mọi chiến thuật tùy lựa chọn, nhất là đông đảo tác dụng cơ phiên bản thi thoảng Lúc giỏi hơn hầu như chuẩn nhưng các công ty cải tiến và phát triển xuất xắc người tiêu dùng đã làm nghiệm khôn cùng kĩ rồi.

3. Dependency Hell

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

Nếu, nắm bởi hặm hụi viết phần lớn sản phẩm công nghệ từ trên đầu, họ lại vượt sử dụng quá bài toán sử dụng thỏng viện bên trang bị ba dựa vào đều phiên bạn dạng rõ ràng của rất nhiều tlỗi viện khác. Vấn đề này đang khiến chúng ta dễ dãi đề xuất đối mặt cùng với mọi trường hợp nặng nề quản lý mọi khi ước ao cập nhật thư viện, vày thỉnh thoảng những dependencies này sau khi cập nhật lại không cân xứng cùng với các cái không giống.


*

Dependency hell rất có thể được giải quyết bằng phương pháp sử dụng các package managers có tác dụng cập nhật sáng ý những dependencies để chúng vẫn có thể cân xứng được với nhau. Nếu bọn họ vấp váp phải rất nhiều vấn đề, vấn đề refactoring cũng có thể là 1 trong phát minh giỏi.

4. Spaghetti Code

Kết quả của một kiến tạo bản vẽ xây dựng kém nhẹm là 1 lô codes ông chồng chất lên nhau y như một bát mì Spaghetti vậy, vô cùng rối rắm và phức tạp. Những Spaghetti codes hết sức cạnh tranh nhằm hiểu cùng phần lớn nặng nề có thể đọc được nó hoạt động ra làm sao (>"Don"t Repeat Yourself (DRY), cầm bởi tạo nên giải pháp giải quyết và xử lý sự việc, các bạn lại đi góp nhặt từng mẩu codes không còn khu vực này mang lại nơi khác, tiếp đến chỉnh sửa lại nó mang đến cân xứng với ngữ cảnh.

Xem thêm: Game Cửu Thiên Phong Thần Đỉnh Cao Nhất Hiện Nay, Cửu Thiên Phong Thần


Kết trái của phương pháp này là họ tất cả hầu hết đoạn codes bị lặp đi lặp lại, vì chưng số đông chúng chỉ khác biệt ở 1 vài điểm nhỏ dại.

Copy & paste programming không chỉ có thấy ngơi nghỉ phần đông lập trình sẵn viên bắt đầu, Nhiều hơn sinh hoạt hồ hết lập trình sẵn viên sẽ tất cả kinh nghiệm tay nghề, bởi vì nhiều người dân trong số chúng ta gồm Xu thế thực hiện đầy đủ đoạn codes đã có viết sẵn, đánh giá kĩ lưỡng của họ đến mọi tác vụ nỗ lực thể, điều này tiện lợi gặp gỡ phải sự tái diễn không mong muốn.

7. Cargo-Cult Programming

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


Antipattern này cũng đều có rất nhiều biểu thị giống như điều này. Ta thực hiện số đông frameworks, thỏng viện, giải pháp, giỏi những design patterns,...hữu ích đến chúng ta, nhưng mà không thực sự phát âm tại vì sao bọn họ rất cần được sử dụng cho chúng giỏi phần nhiều technology kia chuyển động ra sao.

Cargo cult programming xảy ra làm việc những thiết kế viên không tồn tại khả năng hoặc là xây dựng viên new (hoặc là những người thiếu tài năng về khía cạnh nào đó), họ coppy rất nhiều mã mối cung cấp trường đoản cú vị trí này mang lại vị trí không giống vào áp dụng nhưng số đông ít 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 bọn chúng. Antipattern này không chỉ có tệ vì tạo cho áp dụng của bọn họ bị "bơm căng phồng", Ngoài ra hoàn toàn có thể thuận tiện đưa đều lỗi new vào mã mối cung cấp của họ.

8. Lava Flow

Chúng ta nhắc đến "Lava flow" antipattern mỗi một khi rất cần được xử lý phần đa đoạn mã codes vượt hoặc bao gồm quality thấp mà lại có thể cấp thiết bóc tách rời cùng với ứng dụng, tuy vậy chúng ta ko trọn vẹn hiểu được bọn chúng gồm công dụng gì hoặc tác động của chúng mang lại toàn cục áp dụng thế nào. Vì vậy, bài toán đào thải bọn chúng là một trong những việc siêu khủng hoảng.

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

Cái thương hiệu của antipattern này biểu lộ sự tương đồng cùng với dung nsi núi lửa, thuở đầu thì di chuyển nkhô cứng, trôi chảy cực nhọc chống đề phòng, nhưng kế tiếp thì cứng lại với cực nhọc sa thải.


Trên định hướng, ta rất có thể loại trừ lava flows sau thời điểm đang bình chọn cùng refactoring kĩ lưỡng, tuy vậy trong thực tiễn, việc thực hiện nó có vẻ khôn xiết trở ngại hoặc thậm chí là là ko thể. Do lava flows thường có ngân sách triển khai cao, cần giỏi rộng hết để ngăn ngừa chúng là ta thiết lập được phong cách xây dựng xây đắp tốt cùng một workflow thao tác công dụng tức thì trường đoản cú thuở đầu ^_^.

9. Hard Coding

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


Vấn đề gặp gỡ cần nghỉ ngơi đó là đông đảo hard code đó sẽ chỉ hoạt động đúng mực trong một môi trường xung quanh nhất mực như thế nào đó, và khi nhưng điều kiện đổi khác, chúng vẫn không thể chuyển động đúng chuẩn nữa.

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

10. Soft Coding

Nếu nlỗi cứ đọng nỗ lực quá mức cần thiết nhằm tách hard coding, chúng ta có thể vô tình chạm trán với cùng 1 antipattern ngược trở lại với nó điện thoại tư vấn là "soft coding".

Trong soft coding, chúng ta gửi hầu như lắp thêm mà lại đúng ra nó buộc phải được để tại vào mã mối cung cấp ứng dụng ra đa số tài nguim bên ngoài, ví dụ họ tàng trữ business xúc tích và ngắn gọn vào database ==". Lý vì chưng phổ cập độc nhất mà lại họ thường làm cho nạm, là do băn khoăn lo lắng đầy đủ business rules đã đổi khác về sau, cùng thời điểm này sẽ đề xuất viết lại codes.

Trong số đông ngôi trường phù hợp cực đoan, một vận dụng cùng với các soft coded hoàn toàn có thể trsinh hoạt yêu cầu thừa trừu tượng và phức tạp đến mức gần như là quan trọng gọi được nó (đặc biệt là so với các member mới vào team), với rất là khó khăn để debug với bảo trì.

Xem thêm: Game Pokemon Go Phiêu Lưu Chơi, Trò Chơi Pikachu Phiêu Lưu Online Hay Nhất

Kết luận

Bài chia sẻ trên đã giới thiệu qua phần lớn Antipatterns mà lại họ hay phạm phải vào quá trình cải tiến và phát triển áp dụng cũng giống như phương pháp để khắc phục và hạn chế chúng. Hi vọng độc giả sẽ để ý để tách mắc phải chúng vào sự nghiệp thiết kế của mình nhé ^_^.