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


*

Thiết kế phong cách xây dựng của một website hay là một ứng dụng, hoặc thiết lập một coding workflow tác dụng thường xuyên khiến bọn họ phải đương đầu với những sự việc nan giải, thường xuyên xuyên chạm chán phải. Bọn họ không quan trọng phải xử lý những vấn đề thi công này từ con số 0, vị 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 tương tự những đoạn code ở tầng vi mô.Bạn đang xem: Hardcode là gì

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

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


*

Mặc dù Design patterns là phương tiện tuyệt đối hoàn hảo để nâng cấp quy trình cách tân và phát triển của bọn chúng ta bằng phương pháp sử dụng những công thức đã được kiểm bệnh tốt. Mặc dù nhiên, đôi khi những thiết kế patterns đó cũng mang lại những kết quả tiêu cực so với chúng. Lúc này, chúng được call là số đông 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ập cho những phương án tái áp dụng mà thuở đầu trông có vẻ hữu ích, tuy thế 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ày nhiều tại sao khác nhau, ví dụ như nếu họ không sử dụng những patterns đúng bối cảnh, cài đặt đặt, tuyệt thời gian cân xứng (các chiến thuật có công dụng trong vượt khứ không phải lúc nào cũng hoạt động đúng ở thời khắc hiện tại), hoặc trong số những trường thích hợp xấu hơn là toàn cục mô hình đang không xuất sắc ngay tự khi bắt đầu rồi (>""Antipatterns cũng hay được call là những quy mô 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 bài viết này, tôi sẽ reviews qua cho các bạn 10 antipatterns phổ biến hay gặp mặt phải trong thừa trình trở nên tân tiến web. (Chú ý rằng đều antipatterns tôi liệt kê dưới đây không trọn vẹn giống với phần đa gì chúng ta cũng có thể tìm thấy trong cuốn sách tôi đã đề cập 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à trong những yếu tố quan trọng đặc biệt trong bài toán tối ưu hóa những đoạn codes. Nếu họ để ý đến các hiệu quả nhỏ tuổi và tối ưu hóa chúng quá sớm trong quy trình phát triển, trước khi họ biết đúng chuẩn những vấn đề cần làm, rất tất cả thể họ sẽ dễ ợt mắc nên antipattern "Tối ưu sớm".


*

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

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

Một ý tưởng giỏi để ngăn chặn việc tối ưu sớm là tuân theo hình thức lập trình YAGNI (You Aren’t Gonna Need It), nó khuyên họ nên tuân thủ "cần cái gì thì thêm loại đó", chứ đừng gồm mà "chắc là sau này sẽ đề xuất đến".

2.Reinventing the Wheel

Reinventing the wheel - Tái phát minh bánh xe có thể hiểu nôm na là dòng bánh xe pháo nó đã được phát minh sáng tạo từ rất mất thời gian rồi, với nó cũng cực tốt rồi, đừng bao gồm mất thời hạn đi phát minh 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, hơn nữa những phương án tùy chọn, đặc biệt là những tác dụng cơ phiên bản hiếm khi xuất sắc hơn đa số chuẩn mà nhiều nhà phát triển hay người tiêu dùng đã demo nghiệm vô cùng kĩ rồi.

3. Dependency Hell

Trái ngược cùng với "reinventing the wheel", bọn họ có một antipattern khác cũng phổ biến đó là "dependency hell".

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


*

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

4. Spaghetti Code

Kết quả của phương pháp này là chúng ta có những đoạn codes bị lặp đi lặp lại, vì hầu hết chúng chỉ khác biệt ở một vài ba điểm nhỏ.

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

7. Cargo-Cult Programming

Cái thương hiệu “cargo-cult programming” được bắt nguồn từ một hiện tượng dân tộc học có tên "cargo cult". Cargo cults lộ diện ở nam giới Thái tỉnh bình dương sau vậy chiến sản phẩm công nghệ II, khi tiếp xúc cùng với nền tao nhã tiên tiến, người bản địa cứ cho rằng các thành phầm như Coca-Cola, TVs, giỏi tủ lạnh giữa những tàu chở hàng mang lên đảo, gần như được tạo vì những quyền lực siêu nhiên, với họ có niềm tin rằng mỗi khi thực hiện những nghi lễ ma thuật tương tự như như phong tục của tín đồ phương Tây, phần đông thùng chất đầy sản phẩm & hàng hóa đó đã lại xuất hiện thêm trở lại.

Antipattern này cũng có những biểu thị tương trường đoản cú như vậy. Ta sử dụng những frameworks, thư viện, giải pháp, hay các design patterns,...có lợi cho chúng ta, mà lại không thực thụ hiểu tại sao chúng ta cần cần dùng đến chúng tốt những technology đó vận động ra sao.

Cargo cult programming xảy ra ở rất nhiều lập trình viên không có tài năng hoặc là lập trình sẵn viên bắt đầu (hoặc là những người dân thiếu tài năng về khía cạnh nào đó), họ xào nấu những mã mối cung cấp từ nơi này mang lại nơi khác trong áp dụng mà hầu hết ít hoặc không hiểu biết về chân thành và ý nghĩa 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 hoàn toàn có thể dễ dàng đưa đông đảo lỗi mới vào mã mối cung cấp của bọn chúng ta.

8. Lava Flow

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

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

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

Trên lý thuyết, ta rất có thể loại vứt lava flows sau khi đã kiểm tra và refactoring kĩ lưỡng, cơ mà trong thực tế, việc tiến hành nó hình như rất trở ngại hoặc thậm chí là không thể. Vì lava flows thường xuyên có giá thành thực hiện cao, nên xuất sắc hơn hết để ngăn chặn chúng là ta tùy chỉnh thiết lập được kiến trúc thiết kế giỏi và một workflow làm cho việc tác dụng ngay từ ban sơ ^_^.

9. Hard Coding

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

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 như thế nào đó, với khi mà đk thay đổi, chúng sẽ không thể hoạt động đúng đắn nữa.

Ví dụ như, ở môi trường xung quanh development, bạn thực hiện một s3-bucket có tên s3-foo-development, tuy nhiên ở môi trường thiên nhiên production 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, gần như s3 access key đã được fix cứng nghỉ ngơi trong code rồi thì làm cho sao chúng ta có thể sử dụng 2 s3-bucket khác nhau trên 2 môi trường khác nhau như vậy. Cách xử lý ở đây là bạn cần lưu đầy đủ s3 access key đó ở vào biến môi trường thiên nhiên cho từng môi trường thiên nhiên cụ thể.

10. Soft Coding

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

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

Xem thêm: Từ Điển Anh Việt " Scoring Là Gì Trong Tiếng Anh? Scoring Tiếng Anh Là Gì

Kết luận

Bài share trên đã trình làng qua những Antipatterns mà họ thường mắc phải trong vượt trình cải cách và phát triển ứng dụng cũng như phương pháp để khắc phục chúng. Hi vọng bạn phát âm sẽ chú ý để tránh phạm phải chúng trong sự nghiệp lập trình của chính bản thân mình nhé ^_^.