Hardcode 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 share này, có một vài chỗ được mình sửa đổi, bổ sung để cho phù hợp.Bạn vẫn xem: Hard code là gì


*

Thiết kế phong cách xây dựng của một website hay một ứng dụng, hoặc cấu hình thiết lập một coding workflow hiệu quả thường xuyên khiến họ phải đối mặt với những sự việc nan giải, thường xuyên xuyên chạm chán phải. Chúng ta không quan trọng phải xử lý những vấn đề kiến tạo này từ con số 0, do ta hoàn toàn có thể tái sử dụng được những phương án ở lever kiến trúc cũng như những đoạn code tại 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 vài trường hợp tốt nhất định, rất có thể hữu ích để giải quyết những sự nạm thường xảy ra và có thể giúp họ tối ưu số đông đoạn codes của mình.


*

Mặc mặc dù Design patterns là phương tiện tuyệt vời để nâng cấp quy trình cách tân và phát triển của chúng ta bằng cách sử dụng những cách làm đã được kiểm bệnh tốt. Mặc dù nhiên, nhiều khi những thiết kế patterns đó cũng mang lại những kết quả tiêu cực đối với chúng. Lúc này, bọn chúng được điện thoại tư vấn 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 sách sở hữu tên AntiPatterns vào thời điểm năm 1998.

Nó đề cập mang đến những giải pháp tái thực hiện mà ban sơ trông có vẻ như hữu ích, mà lại dần sau đó, chúng lại trở nên vô ích hơn là lợi.

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

Trong bài viết này, tôi sẽ reviews qua cho chúng ta 10 antipatterns thông dụng hay gặp phải trong thừa trình phát triển web. (Chú ý rằng hồ hết antipatterns tôi liệt kê dưới đây không trọn vẹn giống với đều gì chúng ta có thể tìm thấy trong cuốn sách tôi sẽ đề 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à một trong những yếu tố đặc biệt trong việc tối ưu hóa các đoạn codes. Nếu chúng ta để ý đến những hiệu quả nhỏ và về tối ưu hóa bọn chúng quá nhanh chóng trong quy trình phát triển, trước khi bọn họ biết đúng đắn những vấn đề cần làm, rất bao gồm thể bọn họ sẽ dễ dãi mắc cần antipattern "Tối ưu sớm".


*

Theo câu nói danh tiếng của Donald Knuth: "Tối ưu mau chóng là nền tảng của đa số điều ác", nó hoàn toàn có thể hơi bị cường hóa lên một chút, nhưng tất cả thể cho biết thêm rằng những sự việc nghiêm trọng 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 lúc xây dựng một phong cách thiết kế hiệu quả, nó rất có thể gây ra codes trở cần khó đọc, việc debug và duy trì khó khăn hơn, cùng những đoạn codes quá bị đẩy vào mã nguồn của chúng ta.

Một ý tưởng giỏi để ngăn ngừa việc tối ưu sớm là tuân theo vẻ ngoài lập trình YAGNI (You Aren’t Gonna Need It), nó khuyên chúng ta nên tuân thủ "cần cái gì thì thêm chiếc đó", chứ đừng tất cả mà "chắc là sau đây sẽ nên đến".

2.Reinventing the Wheel

Reinventing the wheel - Tái phát minh sáng tạo bánh xe rất có thể hiểu nôm na là dòng bánh xe nó sẽ được phát minh sáng tạo từ rất lâu rồi, và nó cũng rất tốt rồi, đừng có mất thời hạn đi phát minh 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 chiến thuật tùy chọn, nhất là những tác dụng cơ bản hiếm khi tốt hơn các chuẩn mà những nhà cải cách và phát triển hay người tiêu dùng đã thử nghiệm siêu 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 phổ biến đó là "dependency hell".

Nếu, thay vày cặm cụi viết mọi thứ từ đầu, bọn họ lại quá sử dụng quá việc thực hiện thư viện bên thứ ba dựa vào những phiên bạn dạng cụ thể của rất nhiều thư viện khác. Điều này sẽ khiến bạn tiện lợi phải đương đầu với những trường hợp khó thống trị mỗi khi muốn cập nhật thư viện, vì nhiều 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 cách sử dụng những package managers có khả năng cập nhật thông minh các dependencies để bọn chúng vẫn hoàn toàn có thể tương thích hợp được cùng với nhau. Nếu bọn họ vấp phải quá nhiều vấn đề, bài toán refactoring cũng rất có thể là một phát minh hay.

4. Spaghetti Code

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

Xem thêm: Tuổi Sửu 2021 Sinh Tháng Nào Tốt Nhất? Sinh Con Năm 2021 Tháng Nào Tốt


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

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

7. Cargo-Cult Programming

Cái thương hiệu “cargo-cult programming” được xuất phát điểm từ một hiện tại tượng dân tộc bản địa học sở hữu tên "cargo cult". Cargo cults lộ diện ở phái mạnh Thái bình dương sau cầm chiến thứ II, lúc tiếp xúc với nền hiện đại tiên tiến, người phiên bản địa cứ cho rằng các thành phầm như Coca-Cola, TVs, xuất xắc tủ lạnh trong những tàu chở hàng với lên đảo, mọi được tạo vì những quyền lực siêu nhiên, cùng họ có niềm tin rằng mỗi khi tiến hành những nghi lễ ma thuật tương tự như phong tục của fan phương Tây, phần đông 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 đều có những biểu lộ tương tự 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 cái đó ta, mà không thực sự hiểu tại sao bọn họ cần đề nghị dùng đến chúng hay những công nghệ đó 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à lập trình viên bắt đầu (hoặc là những người dân thiếu khả năng về mặt nào đó), họ xào luộc những mã mối cung cấp từ địa điểm này mang đến nơi khác trong áp dụng mà phần đông ít hoặc không hiểu biết biết về ý nghĩa sâu sắc thật sự của chúng. Antipattern này không chỉ có tệ vì làm cho ứng dụng của chúng ta bị "bơm căng phồng", mà lại còn rất có thể dễ dàng đưa hầu hết lỗi bắt đầu vào mã nguồn của bọn chúng ta.

8. Lava Flow

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

Điều này liên tục xảy ra với phần đa 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 tài liệu bao gồm xác), hoặc là khi dự án công trình được gửi từ quá trình development quý phái production thừa nhanh.

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


Trên lý thuyết, ta hoàn toàn có thể loại quăng quật lava flows sau khoản thời gian đã kiểm tra với refactoring kĩ lưỡng, nhưng lại trong thực tế, việc tiến hành nó ngoài ra rất trở ngại hoặc thậm chí là là ko thể. Vị lava flows thường có túi tiền thực hiện nay cao, nên tốt hơn hết để ngăn chặn chúng là ta tùy chỉnh được phong cách thiết kế thiết kế xuất sắc và một workflow có tác dụng việc kết quả ngay từ lúc đầu ^_^.

9. Hard Coding

"Hard coding" là 1 trong antipattern được nói đến rất nhiều một trong những cuốn sách về cải tiến 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ư những đường dẫn file, remote host name hay 1 đoạn văn bản ở ngôn ngữ rõ ràng nào đó) làm việc trong mã nguồn ứng dụng thay vì chưng lưu bọn chúng ở một trong những file cấu hình, database, user input đầu vào hay từ một external api nào đó.


Vấn đề chạm mặt phải ở đó là những hard code đó sẽ chỉ hoạt động đúng đắn trong một môi trường xung quanh nhất định như thế nào đó, cùng khi mà đk thay đổi, bọn chúng sẽ không hề hoạt động đúng đắn nữa.

Ví dụ như, ở môi trường xung quanh development, bạn sử dụng một s3-bucket có tên s3-foo-development, nhưng ở môi trường xung quanh production chúng ta lại áp dụng một s3-bucket khác có tên s3-foo-production, thử tưởng tượng, các s3 access key đã làm được fix cứng sinh hoạt trong code rồi thì có tác dụng sao bạn có thể sử dụng 2 s3-bucket không giống nhau trên 2 môi trường không giống nhau như vậy. Cách giải quyết ở đây là bạn bắt buộc lưu đông đảo s3 access key kia ở vào biến môi trường cho từng môi trường thiên nhiên cụ thể.

10. Soft Coding

Nếu như cứ cố gắng quá mức để tránh hard coding, bạn có thể vô tình va trán với cùng một antipattern trái lại với nó call là "soft coding".

Trong soft coding, chúng ta đưa phần đông thứ nhưng mà đáng ra nó cần được để ở trong mã nguồn áp dụng ra hầu như tài nguyên mặt ngoài, ví dụ bọn họ lưu trữ business xúc tích trong database ==". Nguyên nhân phổ biến hóa 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 đầy đủ trường hợp rất đoan, một áp dụng với đông đảo soft coded có thể trở đề nghị quá trừu tượng và phức hợp đến mức gần như là không thể phát âm được nó (đặc biệt là đối với những thành viên mới vào team), và cực kỳ nặng nề để debug và bảo trì.

Xem thêm: #Top 5 Bột Ăn Dặm Cho Bé 3 Tháng Tuổi Không? Có Bột Ăn Dặm Cho Bé 3 Tháng Tuổi Không

Kết luận

Bài chia sẻ trên đã giới thiệu qua đều 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. Hi vọng bạn đọc sẽ chú ý để tránh phạm phải chúng vào sự nghiệp lập trình của mình nhé ^_^.