Hard code là gì

Đây là bài share được dịch từ nội dung bài viết của tác giả Anna Monus (https://www.hongkiat.com/blog/code-optimization-coding-antipatterns/). Vào bài chia sẻ này, có một vài chỗ được bản thân sửa đổi, bổ sung cập nhật để mang lại phù hợp.Bạn đang xem: Hard code là gì


*

Thiết kế phong cách thiết kế của một website hay là 1 ứng dụng, hoặc thiết lập một coding workflow kết quả thường xuyên khiến bọn họ phải đối mặt với những vấn đề nan giải, thường xuyên xuyên chạm chán phải. Họ không quan trọng phải giải quyết và xử lý những vấn đề thiết kế này từ số lượng 0, do ta rất có thể tái sử dụng được những chiến thuật ở cấp độ kiến trúc cũng như những đoạn code tại tầng vi mô.

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

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


*

Mặc cho dù Design patterns là phương tiện tuyệt đối hoàn hảo để cải thiện quy trình cách tân và 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 chứng tốt. Mặc dù nhiên, thỉnh thoảng những kiến thiết patterns kia cũng mang lại những hậu quả tiêu cực so với chúng. Dịp này, chúng được call là hầu hết Antipatterns.

Antipatterns là gì?

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

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

Điều này có thể xảy ra vị nhiều lý do khác nhau, ví dụ như nếu chúng ta không áp dụng những patterns đúng bối cảnh, cài đặt đặt, tốt thời gian tương xứng (các phương án có kết quả trong thừa khứ chưa hẳn lúc nào cũng chuyển động đúng ở thời khắc hiện tại), hoặc giữa những trường vừa lòng xấu rộng là toàn cục mô hình sẽ không giỏi ngay tự khi bước đầu rồi (>""Antipatterns cũng thường được hotline là những mô hình thất bại. Mặc dù nhiên, tin vui là họ hoàn toàn có thể nhận biết và nên tránh chúng.

Trong nội dung bài viết này, tôi sẽ trình làng qua cho chúng ta 10 antipatterns phổ cập hay chạm mặt phải trong vượt trình phát triển web. (Chú ý rằng những antipatterns tôi liệt kê sau đây không trọn vẹn giống với gần như gì chúng ta có thể tìm thấy trong cuốn sách tôi vẫn đề cập sống trên).

10 Antipatterns phổ biến

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

Thời điểm tốt là giữa những yếu tố đặc biệt quan trọng trong việc tối ưu hóa những đoạn codes. Nếu bọn họ để ý đến những hiệu quả nhỏ dại và tối ưu hóa bọn chúng quá sớm trong quá trình phát triển, trước khi họ biết đúng mực những điều cần làm, rất có thể bọn họ sẽ tiện lợi mắc đề xuất antipattern "Tối ưu sớm".


*

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

Nếu họ 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ở phải khó đọc, việc debug và bảo trì khó khăn hơn, và những đoạn codes vượt bị đẩy vào mã nguồn của bọn chúng ta.

Một ý tưởng xuất sắc để ngăn chặn việc buổi tối ưu nhanh chóng là tuân theo cách thức lập trình YAGNI (You Aren’t Gonna Need It), nó khuyên chúng ta nên tuân thủ "cần vật gì thì thêm chiếc đó", chứ đừng có mà "chắc là trong tương lai sẽ đề xuất đến".

2.Reinventing the Wheel

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

*

Reinventing the wheel không chỉ là gây ra tiêu tốn lãng phí thời gian, hơn nữa những chiến thuật tùy chọn, đặc biệt là những tính năng cơ phiên bản hiếm khi tốt hơn phần đông chuẩn mà nhiều nhà phát triển hay người tiêu dùng đã test nghiệm rất kĩ rồi.

3. Dependency Hell

Trái ngược với "reinventing the wheel", chúng ta có một antipattern không giống cũng phổ biến đó là "dependency hell".

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


*

Dependency hell có thể được giải quyết bằng phương pháp sử dụng các package managers gồm khả năng cập nhật thông minh những dependencies để bọn chúng vẫn có thể tương mê thích được với nhau. Nếu chúng ta vấp phải không ít vấn đề, việc refactoring cũng hoàn toàn có thể là một ý tưởng phát minh hay.

4. Spaghetti Code

Kết quả của một kiến tạo kiến trúc kém là 1 trong đống codes ông chồng chất lên nhau giống hệt như một chén mì Spaghetti vậy, vô cùng rối rắm với phức tạp. Phần nhiều Spaghetti codes rất nặng nề để đọc và phần nhiều khó hoàn toàn có thể hiểu được nó hoạt động như cố kỉnh nào (>"Don"t Repeat Yourself (DRY), thay vày tạo ra giải pháp giải quyết vấn đề, chúng ta lại đi góp nhặt từng mẩu codes hết vị trí này mang đến chỗ khác, tiếp đến chỉnh sửa lại nó cho phù hợp với ngữ cảnh.

Xem thêm: Lộc Fuho Là Gì - Chàng Phụ Hồ Lần Đầu Tiên Nhận Nút


Kết quả của cách thức này là họ có những đoạn codes bị lặp đi lặp lại, vì đa số chúng chỉ khác biệt ở một vài điểm nhỏ.

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

7. Cargo-Cult Programming

Cái tên “cargo-cult programming” được xuất phát điểm từ một hiện nay tượng dân tộc học có tên "cargo cult". Cargo cults lộ diện ở phái nam Thái tỉnh bình dương sau thế chiến trang bị II, khi tiếp xúc cùng với nền tao nhã tiên tiến, người phiên bản địa cứ cho là các sản phẩm như Coca-Cola, TVs, hay tủ lạnh giữa những tàu chở hàng có lên đảo, hồ hết được tạo vị những gia thế 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 bạn phương Tây, đông đảo thùng hóa học đầy hàng hóa đó sẽ lại lộ diện trở lại.


Antipattern này cũng có những thể hiện tương từ bỏ như vậy. Ta áp dụng những frameworks, thư viện, giải pháp, hay những design patterns,...có lợi cho chúng ta, nhưng không thực thụ hiểu trên sao bọn họ cần đề nghị dùng đến chúng giỏi những technology đó vận động ra sao.

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

8. Lava Flow

Chúng ta nói tới "Lava flow" antipattern mỗi khi cần bắt buộc xử lý những đoạn mã codes quá hoặc có unique thấp cơ mà dường như ko thể bóc rời cùng với ứng dụng, nhưng chúng ta không trọn vẹn hiểu được chúng có tác dụng gì hoặc ảnh hưởng của bọn chúng đến cục bộ ứng dụng như vậy nào. Vị vậy, việc đào thải chúng là một việc cực kỳ rủi ro.

Điều này tiếp tục xảy ra với đều 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 hụt tài liệu chính xác), hoặc là khi dự án công trình được đưa từ tiến trình development lịch sự production thừa nhanh.

Cái tên của antipattern này biểu lộ sự tương đồng với dung nham núi lửa, lúc đầu thì dịch rời nhanh, trôi chảy khó phòng ngừa, nhưng tiếp nối thì cứng lại và khó một số loại bỏ.


Trên lý thuyết, ta rất có thể loại quăng quật lava flows sau thời điểm đã kiểm tra cùng refactoring kĩ lưỡng, dẫu vậy trong thực tế, việc thực hiện nó hình như rất trở ngại hoặc thậm chí là là không thể. Bởi lava flows hay có chi tiêu thực hiện tại cao, nên giỏi hơn hết để ngăn ngừa chúng là ta tùy chỉnh cấu hình được phong cách xây dựng thiết kế giỏi và một workflow làm việc kết quả ngay từ thuở đầu ^_^.

9. Hard Coding

"Hard coding" là một antipattern được nói đến rất nhiều trong số những cuốn sách về cải tiến và phát triển web tức thì ở tiếng nói đầu. Hard coding xảy ra khi chúng ta lưu trữ những cấu hình hoặc là tài liệu đầu vào (ví dụ như các đường dẫn file, remote host name hay như là một đoạn văn bản ở ngôn ngữ cụ thể nào đó) nghỉ ngơi trong mã nguồn vận dụng thay do lưu bọn chúng ở trong số những file cấu hình, database, user đầu vào hay xuất phát điểm từ 1 external api làm sao đó.


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

Ví dụ như, ở môi trường xung quanh development, bạn áp dụng một s3-bucket có tên s3-foo-development, tuy nhiên ở môi trường xung quanh production các bạn lại áp dụng một s3-bucket khác có tên s3-foo-production, hãy thử tưởng tượng, đa số s3 access key đã có fix cứng sinh sống trong code rồi thì có tác dụng sao bạn cũng có thể sử dụng 2 s3-bucket khác nhau trên 2 môi trường khác biệt như vậy. Cách giải quyết và xử lý ở đấy là bạn đề nghị lưu mọi s3 access key kia ở trong biến môi trường cho từng môi trường cụ thể.

10. Soft Coding

Nếu như cứ nỗ lực quá mức để tránh hard coding, bạn có thể vô tình chạm trán với cùng 1 antipattern ngược lại với nó hotline là "soft coding".

Trong soft coding, bọn họ đưa hầu hết thứ nhưng mà đáng ra nó nên được để tại trong mã nguồn áp dụng ra hầu hết tài nguyên bên ngoài, ví dụ họ lưu trữ business lô ghích trong database ==". Lý do phổ trở nên nhất mà bọn họ thường có tác dụng thế, là do băn khoăn lo lắng những business rules sẽ đổi khác trong tương lai, với lúc này sẽ phải viết lại codes.

Trong đều trường hợp rất đoan, một vận dụng với phần nhiều soft coded hoàn toàn có thể trở yêu cầu quá trừu tượng và phức hợp đến mức gần như không thể phát âm được nó (đặc biệt là so với những thành viên mới vào team), và cực kỳ cạnh tranh để debug và bảo trì.

Kết luận

Bài chia sẻ trên đã giới thiệu qua hồ hết Antipatterns mà bọn họ thường mắc phải trong thừa trình trở nên tân tiến ứng dụng cũng như cách để khắc phục chúng. Hy vọng bạn phát âm sẽ chú ý để tránh mắc phải chúng vào sự nghiệp lập trình của bản thân nhé ^_^.