HomeTRENDINGHardcoded là gì

Hardcoded là gì

22:22, 29/03/2021

Đây là bài bác share được dịch trường đoản cú nội dung 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 bác chia sẻ này, gồm một số địa điểm được bản thân sửa đổi, bổ sung khiến cho cân xứng.

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

*

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

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

*

Mặc cho dù Design patterns là phương tiện đi lại tuyệt vời nhằm nâng cấp các bước phát triển của chúng ta bằng phương pháp sử dụng những bí quyết đã có kiểm hội chứng giỏi. Tuy nhiên, đôi lúc phần lớn Design patterns đó cũng mang đến hầu hết hậu quả xấu đi so với bọn chúng. Trong thời điểm này, bọn chúng được gọi là phần nhiều Antipatterns.

Antipatterns là gì?

Thuật ngữ "antipatterns" xuất hiện thêm lần thứ nhất trong một cuốn sách sở hữu tên AntiPatterns vào thời điểm năm 1998.

Nó đề cùa đến số đông chiến thuật tái sử dụng nhưng ban sơ trông có vẻ như hữu ích, mà lại dần kế tiếp, bọn chúng lại trsinh hoạt buộc phải có hại rộng là lợi.

Như vậy rất có thể xẩy ra vì chưng những lý do khác biệt, ví dụ như giả dụ bọn họ ko thực hiện rất nhiều patterns đúng toàn cảnh, thiết lập, tốt thời hạn tương xứng (những giải pháp gồm công dụng vào thừa khứ đọng chưa hẳn lúc nào cũng chuyển động đúng sinh sống thời điểm hiện tại tại), hoặc giữa những trường đúng theo xấu hơn là toàn bộ mô hình đã không giỏi tức thì từ bỏ lúc bắt đầu rồi (>""Antipatterns cũng thường được Gọi là số đông mô hình thất bại. Tuy nhiên, tin vui là bọn họ trọn vẹn có thể nhận biết và tránh chúng.

Trong bài viết này, tôi vẫn trình làng qua mang lại các bạn 10 antipatterns thịnh hành tốt chạm mặt bắt buộc vào quy trình phát triển website. (Chú ý rằng số đông antipatterns tôi liệt kê tiếp sau đây ko trọn vẹn kiểu như với số đông gì bạn cũng có thể tìm kiếm thấy vào cuốn nắn sách tôi đã nhắc sinh sống 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 yếu tố quan trọng đặc biệt vào bài toán buổi tối ưu hóa những đoạn codes. Nếu chúng ta chú ý tới các tác dụng bé dại với buổi tối ưu hóa chúng thừa mau chóng trong quy trình phát triển, trước lúc chúng ta biết đúng chuẩn phần đa điều cần có tác dụng, siêu hoàn toàn có thể bọn họ vẫn dễ ợt phạm phải antipattern "Tối ưu sớm".

*

Theo câu nói lừng danh của Donald Knuth: "Tối ưu mau chóng là nền tảng gốc rễ của đông đảo điều ác", nó có thể khá bị cường hóa lên một chút ít, dẫu vậy hoàn toàn có thể cho thấy rằng đa số vấn đề nghiêm trọng về tối ưu hóa mau chóng có thể gây nên sau này như thế nào.

Nếu chúng ta về tối ưu hóa tính năng trước khi xây dừng một bản vẽ xây dựng hiệu quả, nó hoàn toàn có thể tạo ra codes trnghỉ ngơi yêu cầu khó khăn đọc, bài toán debug cùng gia hạn trở ngại hơn, với phần nhiều đoạn codes quá bị đẩy vào mã nguồn của chúng ta.

Một ý tưởng phát minh xuất sắc để ngăn chặn bài toán về tối ưu nhanh chóng là tuân theo phép tắc thiết kế YAGNI (You Aren’t Gonna Need It), nó khuyên ổn họ phải vâng lệnh "yêu cầu đồ vật gi thì thêm mẫu đó", chứ đọng đừng bao gồm cơ mà "chắc là sau đây vẫn đề xuất đến".

2.Reinventing the Wheel

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

*

Reinventing the wheel không chỉ có gây ra lãng phí thời gian, mà còn các giải pháp tùy lựa chọn, đặc biệt là phần nhiều tính năng cơ phiên bản thi thoảng lúc xuất sắc rộng số đông chuẩn mà lại những nhà phát triển tuyệt người 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", chúng ta có một antipattern khác cũng thông dụng chính là "dependency hell".

Nếu, cố bởi vì hùi hụi viết đều sản phẩm công nghệ từ đầu, họ lại quá sử dụng bài toán thực hiện tlỗi viện bên thiết bị cha dựa vào đầy đủ phiên bạn dạng cụ thể của rất nhiều thư viện khác. Điều này đang khiến cho các bạn dễ dàng cần đương đầu cùng với đa số tình huống cạnh tranh quản lý mỗi khi ước ao cập nhật thỏng viện, vì nhiều khi phần đông dependencies này sau khi cập nhật lại không cân xứng cùng với các chiếc không giống.

*

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

4. Spaghetti Code

"Spaghetti code" chắc rằng là antipattern danh tiếng nhất. Nó diễn đạt một ứng dụng cực nhọc debug cùng kiểm soát và điều chỉnh vày thiếu hụt phong cách thiết kế phù hợp.

Xem thêm: Cách Kích Hoạt, Đăng Ký Win 10 Insider Preview Là Gì ? Windows Insider

Kết trái của một thi công phong cách xây dựng kém là 1 lô codes ông chồng chất lên nhau y hệt như một chén mì Spaghetti vậy, khôn xiết rối rắm với phức tạp. Những Spaghetti codes hết sức khó để phát âm cùng phần lớn nặng nề hoàn toàn có thể gọi được nó hoạt động thế nào (>"Don"t Repeat Yourself (DRY), cố do tạo nên chiến thuật xử lý vụ việc, chúng ta lại đi tom góp từng mẩu codes hết chỗ này cho nơi khác, sau đó sửa đổi lại nó cho phù hợp cùng với ngữ chình ảnh.

*

Kết quả của phương thức này là bọn họ gồm rất nhiều đoạn codes bị lặp đi lặp lại, vị hầu như bọn chúng chỉ khác biệt tại một vài điểm bé dại.

Copy và paste programming không những thấy sinh hoạt phần đa xây dựng viên mới, Ngoài ra ở gần như thiết kế viên đang tất cả kinh nghiệm, cũng chính vì không ít người dân trong các chúng ta gồm xu hướng áp dụng phần nhiều đoạn codes đã có được viết sẵn, soát sổ kĩ lưỡng của họ cho đầy đủ tác vụ cầm thể, vấn đề này thuận lợi gặp mặt bắt buộc sự tái diễn 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 kỳ lạ dân tộc bản địa học tập có tên "cargo cult". Cargo cults xuất hiện thêm sống Nam Tỉnh Thái Bình Dương sau nỗ lực chiến sản phẩm II, khi xúc tiếp với nền vnạp năng lượng minch tiên tiến và phát triển, tín đồ bản địa cứ đọng cho rằng những thành phầm như Coca-Cola, TVs, hay tủ rét Một trong những tàu chlàm việc sản phẩm với lên đảo, hồ hết được sản xuất do đầy đủ quyền lực cực kỳ nhiên, và bọn họ tin rằng mọi khi triển khai đông đảo nghi lễ ma thuật tương tự nhỏng phong tục của tín đồ phương thơm Tây, đầy đủ thùng chất đầy hàng hóa đó sẽ lại xuất hiện thêm quay trở về.

*

Antipattern này cũng đều có phần nhiều bộc lộ tương tự điều đó. Ta thực hiện phần đông frameworks, thư viện, phương án, giỏi những kiến thiết patterns,...có ích mang đến chúng ta, mà ko thực thụ đọc vì sao họ cần được dùng mang đến chúng tuyệt hồ hết công nghệ kia chuyển động ra sao.

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

8. Lava Flow

Chúng ta nói đến "Lava flow" antipattern mỗi lúc rất cần được giải pháp xử lý đa số đoạn mã codes quá hoặc có unique thấphình như bắt buộc bóc rời với vận dụng, tuy thế bọn họ không hoàn toàn phát âm được chúng bao gồm tính năng gì hoặc tác động của bọn chúng cho toàn thể áp dụng ra làm sao. Vì vậy, câu hỏi loại bỏ chúng là một trong những vấn đề vô cùng rủi ro khủng hoảng.

Điều này thường xuyên xảy ra cùng với mọi legacy codes, hoặc là lúc đoạn codes này được viết vì chưng những người khác (thường xuyên thiếu thốn tư liệu chủ yếu xác), hoặc là lúc dự án được đưa từ bỏ quá trình development thanh lịch production vượt nhanh khô.

Cái thương hiệu của antipattern này biểu hiện sự tương đồng với dung nmê man núi lửa, thuở đầu thì dịch rời nkhô giòn, trôi chảy nặng nề chống ngừa, nhưng mà tiếp nối thì cứng lại và cạnh tranh sa thải.

*

Trên lý thuyết, ta có thể đào thải lava flows sau khoản thời gian sẽ kiểm soát với refactoring kĩ lưỡng, mà lại vào thực tiễn, bài toán thực hiện nó có vẻ hết sức khó khăn hoặc thậm chí còn là không thể. Do lava flows thường sẽ có ngân sách tiến hành cao, đề nghị giỏi rộng không còn để ngăn ngừa bọn chúng là ta thiết lập được kiến trúc xây dựng tốt với một workflow làm việc kết quả ngay lập tức từ lúc đầu ^_^.

9. Hard Coding

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

*

Vấn đề chạm chán đề xuất nghỉ ngơi đấy là phần nhiều hard code này sẽ chỉ hoạt động chính xác vào một môi trường xung quanh nhất thiết nào đó, cùng Khi nhưng ĐK biến hóa, bọn chúng đang không thể chuyển động đúng mực nữa.

lấy ví dụ như, nghỉ ngơ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 thế ở môi trường xung quanh production bạn lại thực hiện một s3-bucket khác có tên s3-foo-production, thử tưởng tượng, phần đa s3 access key đã làm được fix cứng làm việc vào code rồi thì làm thế nào bạn cũng có thể áp dụng 2 s3-bucket không giống nhau bên trên 2 môi trường xung quanh không giống nhau như vậy. Cách giải quyết ở đây là chúng ta bắt buộc lưu lại gần như s3 access key kia sống trong thay đổi môi trường xung quanh mang lại từng môi trường xung quanh rõ ràng.

10. Soft Coding

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

Trong soft coding, bọn họ gửi đông đảo sản phẩm công nghệ nhưng mà lẽ ra nó nên được đặt tại vào mã nguồn áp dụng ra phần đa tài nguim bên ngoài, ví dụ bọn họ tàng trữ business lô ghích vào database ==". Lý vì chưng phổ cập duy nhất mà họ thường có tác dụng cầm, là vì băn khoăn lo lắng phần đông business rules sẽ biến hóa sau này, với cơ hội đó sẽ phải viết lại codes.

Trong các trường vừa lòng cực đoan, một ứng dụng với hầu như soft coded hoàn toàn có thể trsống phải thừa trừu tượng và tinh vi tới cả gần như là thiết yếu gọi được nó (đặc biệt là so với đông đảo member new vào team), với cực kỳ nặng nề để debug và bảo trì.

Xem thêm: Các Lỗi Thường Gặp Khi Tải Và Đăng Nhập Vào B&S

Kết luận

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


Chuyên mục: TRENDING