Hard code là gì

Đây là bài bác share được dịch từ bỏ bài viết của tác giả Anmãng cầu Monus (https://www.hongkiat.com/blog/code-optimization-coding-antipatterns/). Trong bài xích chia sẻ này, tất cả một vài nơi được mình sửa đổi, bổ sung khiến cho tương xứng.Quý Khách đang xem: Hardcoded là gì


*

Thiết kế bản vẽ xây dựng của một website hay như là một vận dụng, hoặc thiết lập một coding workflow tác dụng tiếp tục khiến cho chúng ta bắt buộc đối mặt cùng với hồ hết vấn đề nan giải, liên tục gặp mặt phải. Chúng ta ko cần thiết yêu cầu giải quyết và xử lý phần lớn vấn đề kiến thiết này tự con số 0, vị ta có thể tái sử dụng được hầu hết phương án sống Lever bản vẽ xây dựng cũng như rất nhiều đoạn code ở tầng vi tế bào.

Bạn đang xem: Hard code là gì

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


*

Mặc mặc dù Design patterns là phương tiện đi lại tuyệt vời nhất để nâng cấp quy trình cải tiến và phát triển của bọn họ bằng cách thực hiện đều công thức đã có kiểm chứng xuất sắc. Tuy nhiên, nhiều lúc gần như Design patterns này cũng đem lại mọi kết quả tiêu cực so với chúng. Lúc này, chúng được Hotline là những Antipatterns.

Antipatterns là gì?

Thuật ngữ "antipatterns" mở ra lần đầu tiên vào một cuốn sách mang tên AntiPatterns vào thời điểm năm 1998.

Nó đề cùa tới phần đông chiến thuật tái sử dụng nhưng mà thuở đầu trông có vẻ như hữu ích, nhưng lại dần dần sau đó, chúng lại trlàm việc đề xuất bất lợi rộng là lợi.

Vấn đề này có thể xảy ra do các nguyên nhân khác biệt, ví như nếu như họ không áp dụng phần đa patterns đúng toàn cảnh, cài đặt, giỏi thời hạn tương xứng (các phương án tất cả kết quả trong vượt khứ đọng không hẳn thời điểm nào cũng hoạt động đúng ngơi nghỉ thời khắc hiện nay tại), hoặc Một trong những trường phù hợp xấu rộng là toàn bộ mô hình đang không xuất sắc ngay từ khi bắt đầu rồi (>""Antipatterns cũng thường xuyên được hotline là hầu như quy mô thất bại. Tuy nhiên, tin vui là bọn họ hoàn toàn hoàn toàn có thể nhận ra và nên tránh chúng.

Trong nội dung bài viết này, tôi vẫn ra mắt qua mang đến các bạn 10 antipatterns phổ biến hay gặp phải vào quá trình trở nên tân tiến website. (Chú ý rằng rất nhiều antipatterns tôi liệt kê dưới đây không trọn vẹn kiểu như cùng với phần nhiều gì bạn có thể tra cứu thấy vào cuốn sách tôi vẫn kể sống trên).

10 Antipatterns phổ biến

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

Thời điểm tốt là 1 trong số những yếu tố đặc biệt quan trọng trong câu hỏi tối ưu hóa các đoạn codes. Nếu bọn họ xem xét tới các công dụng nhỏ tuổi và buổi tối ưu hóa bọn chúng vượt nhanh chóng vào quá trình phát triển, trước lúc bọn họ biết đúng mực gần như vấn đề cần làm, siêu có thể chúng ta vẫn dễ dãi 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 mau chóng là căn nguyên của đa số điều ác", nó có thể tương đối bị cường điệu hóa lên một ít, mà lại hoàn toàn có thể cho biết thêm rằng phần đa sự việc cực kỳ nghiêm trọng về buổi tối ưu hóa mau chóng có thể gây nên trong tương lai ra sao.

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

Một phát minh giỏi để ngăn ngừa câu hỏi về tối ưu mau chóng là theo đúng nguyên tắc xây dựng YAGNI (You Aren’t Gonmãng cầu Need It), nó khuim chúng ta bắt buộc vâng lệnh "đề xuất đồ vật gi thì thêm dòng đó", chứ đọng chớ tất cả nhưng mà "chắc là sau này đang nên đến".

2.Reinventing the Wheel

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

*

Reinventing the wheel không chỉ có gây nên lãng phí thời gian, ngoại giả hầu như chiến thuật tùy lựa chọn, đặc biệt là hồ hết tác dụng cơ bạn dạng thảng hoặc khi giỏi rộng phần đông chuẩn cơ mà nhiều nhà trở nên tân tiến tốt người dùng đã làm nghiệm cực kỳ kĩ rồi.

3. Dependency Hell

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

Nếu, nắm vì hùi hụi viết hồ hết trang bị từ trên đầu, bọn họ lại thừa sử dụng quá câu hỏi áp dụng thỏng viện mặt sản phẩm bố dựa trên rất nhiều phiên bạn dạng cụ thể của những tlỗi viện khác. Điều này đang khiến cho các bạn thuận tiện đề nghị đối mặt với mọi tình huống cực nhọc quản lý mỗi một khi muốn cập nhật tlỗi viện, bởi vì đôi lúc gần như dependencies này sau khoản thời gian update lại không tương thích với những chiếc không giống.


*

Dependency hell hoàn toàn có thể được giải quyết bằng cách sử dụng các package managers có khả năng cập nhật logic các dependencies nhằm bọn chúng vẫn có thể tương thích được với nhau. Nếu bọn họ vấp váp đề nghị quá nhiều vụ việc, câu hỏi refactoring cũng rất có thể là 1 ý tưởng phát minh hay.

4. Spaghetti Code

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

Xem thêm: Nghĩa Của Từ Humanoid Là Gì ? Nghĩa Của Từ Humanoids Trong Tiếng Việt


Kết trái của cách thức này là bọn họ tất cả hồ hết đoạn codes bị lặp đi lặp lại, vày số đông chúng chỉ không giống nhau ở một vài điểm nhỏ dại.

Copy and paste programming không những thấy ngơi nghỉ phần đông thiết kế viên mới, Ngoài ra sống các thiết kế viên đã bao gồm tay nghề, chính vì nhiều người dân trong các chúng ta có xu hướng áp dụng phần đông đoạn codes đã làm được viết sẵn, kiểm soát kĩ lưỡng của họ đến phần đông tác vụ cố gắng thể, điều này dễ dãi chạm chán phải sự lặp lại không mong muốn.

7. Cargo-Cult Programming

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


Antipattern này cũng có rất nhiều biểu hiện tương tự như điều đó. Ta sử dụng phần lớn frameworks, thư viện, phương án, giỏi những design patterns,...hữu ích đến bọn họ, cơ mà ko thực thụ hiểu vì sao họ cần được dùng mang lại chúng hay đầy đủ technology đó hoạt động ra sao.

Cargo cult programming xảy ra sinh hoạt hầu hết xây dựng viên không có khả năng Hoặc là lập trình sẵn viên new (Hay là những người dân thiếu thốn năng lực về khía cạnh như thế nào đó), bọn họ coppy gần như mã mối cung cấp từ bỏ khu vực này cho địa điểm không giống vào ứng dụng mà hầu hết ít hoặc không hiểu biết về ý nghĩa thật sự của bọn chúng. Antipattern này không những tệ vày làm cho vận dụng của chúng ta bị "bơm căng phồng", Ngoài ra hoàn toàn có thể thuận lợi chuyển hầu hết lỗi new vào mã mối cung cấp của chúng ta.

8. Lava Flow

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

Vấn đề này thường xuyên xẩy ra với gần như legacy codes, hoặc là khi đoạn codes này được viết bởi vì những người khác (thường thiếu tài liệu bao gồm xác), hoặc là lúc dự án công trình được gửi từ quy trình development sang production quá nkhô hanh.

Cái thương hiệu của antipattern này biểu thị sự tương đồng với dung nyêu thích núi lửa, thuở đầu thì dịch rời nhanh, trôi tan cực nhọc phòng ngừa, tuy nhiên tiếp nối thì cứng lại cùng cực nhọc sa thải.


Trên kim chỉ nan, ta có thể loại trừ lava flows sau thời điểm sẽ khám nghiệm với refactoring kĩ lưỡng, nhưng mà trong thực tế, bài toán thực hiện nó có thể hết sức khó khăn hoặc thậm chí là ko thể. Do lava flows thường có ngân sách thực hiện cao, đề nghị giỏi rộng hết để ngăn ngừa bọn chúng là ta tùy chỉnh cấu hình được bản vẽ xây dựng xây đắp tốt và một workflow thao tác kết quả ngay lập tức từ bỏ lúc đầu ^_^.

9. Hard Coding

"Hard coding" là 1 trong antipattern được nhắc tới không ít Một trong những cuốn nắn sách về phát triển web ngay lập tức sinh hoạt lời nói đầu. Hard coding xảy ra lúc chúng ta lưu trữ đa số cấu hình hay những dữ liệu đầu vào (ví dụ như các băng thông file, remote host name hay là một đoạn văn bạn dạng sống ngôn ngữ rõ ràng làm sao đó) ở vào mã nguồn vận dụng nỗ lực do lưu bọn chúng sống trong số những file cấu hình, database, user đầu vào tốt từ một external api nào kia.


Vấn đề chạm mặt đề nghị làm việc đây là hầu như hard code này sẽ chỉ hoạt động đúng mực vào một môi trường thiên nhiên nhất mực làm sao đó, và khi cơ mà điều kiện biến hóa, bọn chúng sẽ không thể vận động chính xác nữa.

lấy ví dụ nhỏng, nghỉ ngơi môi trường xung quanh development, các bạn áp dụng một s3-bucket có tên s3-foo-development, nhưng mà nghỉ ngơi môi trường production chúng ta lại thực hiện một s3-bucket khác mang tên s3-foo-production, hãy thử tưởng tượng, phần lớn s3 access key đã 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 nhau trên 2 môi trường xung quanh khác biệt như vậy. Cách xử lý sinh sống đấy là các bạn cần lưu số đông s3 access key kia làm việc vào đổi mới môi trường xung quanh mang lại từng môi trường ví dụ.

10. Soft Coding

Nếu như cđọng cố gắng quá mức cho phép nhằm tách hard coding, chúng ta có thể vô tình đụng trán với một antipattern ngược lại cùng với nó điện thoại tư vấn là "soft coding".

Trong soft coding, bọn họ chuyển phần đa máy nhưng mà đáng ra nó yêu cầu được đặt ở vào mã mối cung cấp vận dụng ra phần nhiều tài nguim bên ngoài, ví dụ họ tàng trữ business ngắn gọn xúc tích trong database ==". Lý vày phổ biến độc nhất vô nhị nhưng họ thường xuyên có tác dụng ráng, là vì lo ngại hầu hết business rules sẽ biến đổi trong tương lai, và dịp này sẽ đề nghị viết lại codes.

Trong những ngôi trường vừa lòng cực đoan, một ứng dụng cùng với những soft coded hoàn toàn có thể trsinh sống yêu cầu quá trừu tượng cùng phức tạp đến hơn cả gần như cấp thiết đọc được nó (nhất là đối với phần nhiều thành viên mới vào team), cùng rất là cạnh tranh nhằm debug với bảo trì.

Kết luận

Bài chia sẻ bên trên đã reviews qua những Antipatterns mà chúng ta thường xuyên phạm phải vào quy trình cải cách và phát triển ứng dụng tương tự như phương pháp để hạn chế và khắc phục bọn chúng. Hi vọng độc giả đang chú ý để tránh mắc phải bọn chúng vào sự nghiệp lập trình sẵn của bản thân mình nhé ^_^.