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


*

Thiết kế kiến trúc của một trang web hay như là một áp dụng, hoặc tùy chỉnh cấu hình một coding workflow tác dụng liên tiếp khiến bọn họ yêu cầu đương đầu cùng với đều vấn đề nan giải, tiếp tục gặp gỡ bắt buộc. Chúng ta ko cần thiết yêu cầu giải quyết và xử lý phần lớn vụ việc thiết kế này từ bỏ số lượng 0, vì chưng ta rất có thể tái sử dụng được các giải pháp sinh sống cấp độ kiến trúc cũng tương tự hầu như đoạn code ở tầng vi mô.quý khách hàng vẫn xem: Hard code là gì

Design patterns là một trong những giữa những chiến thuật tái sử dụng vào một trong những ngôi trường phù hợp cố định, hoàn toàn có thể hữu ích để giải quyết và xử lý hầu hết sự nắm hay xảy ra với hoàn toàn có thể góp chúng ta về tối ưu gần như đoạn codes của bản thân.

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


*

Mặc cho dù Design patterns là phương tiện đi lại tuyệt vời nhằm cải thiện quy trình cách tân và phát triển của họ bằng phương pháp áp dụng đều bí quyết đã được kiểm bệnh giỏi. Tuy nhiên, đôi khi hồ hết Design patterns đó cũng đem về những kết quả tiêu cực so với bọn chúng. Lúc này, chúng được hotline là hầu hết Antipatterns.

Antipatterns là gì?

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

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

Vấn đề này rất có thể xảy ra vì chưng những nguyên nhân khác nhau, ví như nếu như bọn họ không sử dụng đầy đủ patterns đúng bối cảnh, cài đặt, giỏi thời hạn phù hợp (những giải pháp có tác dụng vào quá khứ chưa hẳn lúc nào thì cũng chuyển động đúng sống thời khắc hiện tại), hoặc Một trong những trường đúng theo xấu rộng là tổng thể mô hình dường như không tốt tức thì tự Lúc bước đầu rồi (>""Antipatterns cũng hay được Hotline là những mô hình thất bại. Tuy nhiên, tin vui là họ hoàn toàn rất có thể nhận thấy và né tránh chúng.

Trong bài viết này, tôi đang reviews qua mang lại chúng ta 10 antipatterns phổ cập tốt gặp gỡ yêu cầu vào quy trình cách tân và phát triển website. (Chú ý rằng mọi antipatterns tôi liệt kê tiếp sau đây ko hoàn toàn tương tự cùng với các gì chúng ta cũng có thể tìm kiếm thấy vào cuốn sách tôi sẽ nói 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 trong những nhân tố đặc trưng trong việc buổi tối ưu hóa những đoạn codes. Nếu chúng ta lưu ý tới các hiệu quả nhỏ tuổi cùng buổi tối ưu hóa bọn chúng vượt mau chóng trong quy trình cách tân và phát triển, trước khi chúng ta biết đúng chuẩn đều vấn đề cần có tác dụng, khôn cùng hoàn toàn có thể họ đã 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 cơ của các điều ác", nó hoàn toàn có thể hơi bị cường hóa lên một chút ít, nhưng mà rất có thể cho biết thêm rằng phần đông vụ việc nghiêm trọng về tối ưu hóa nhanh chóng hoàn toàn có thể gây ra sau đây thế nào.

Nếu họ tối ưu hóa hiệu năng trước khi thi công một phong cách thiết kế hiệu quả, nó hoàn toàn có thể tạo ra codes trsinh hoạt cần cực nhọc đọc, vấn đề debug và bảo trì khó khăn hơn, với số đông đoạn codes quá bị đẩy vào mã nguồn của bọn họ.

Một ý tưởng giỏi nhằm ngăn chặn việc tối ưu sớm là theo đúng phép tắc lập trình sẵn YAGNI (You Aren’t Gonna Need It), nó khulặng họ bắt buộc tuân thủ "nên đồ vật gi thì thêm cái đó", chđọng chớ gồm mà lại "chắc là về sau sẽ phải đến".

2.Reinventing the Wheel

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

3. Dependency Hell

Trái ngược cùng với "reinventing the wheel", bọn họ gồm một antipattern không giống cũng thông dụng đó là "dependency hell".

Nếu, cố kỉnh bởi vì cặm cụi viết gần như sản phẩm công nghệ từ trên đầu, họ lại thừa sử dụng quá Việc sử dụng tlỗi viện bên đồ vật bố dựa vào đều phiên bản ví dụ của rất nhiều thư viện khác. Như vậy vẫn khiến cho chúng ta tiện lợi cần đương đầu cùng với hầu như trường hợp khó cai quản mọi khi mong mỏi cập nhật thỏng viện, bởi vì đôi khi những dependencies này sau khi cập nhật lại ko tương hợp cùng với các cái không giống.


*

Dependency hell hoàn toàn có thể được giải quyết bằng cách thực hiện các package managers có tác dụng update lý tưởng những dependencies để bọn chúng vẫn rất có thể cân xứng được với nhau. Nếu họ vấp váp nên vô số vấn đề, việc refactoring cũng có thể là 1 trong những phát minh hay.

Xem thêm: Âm Khuyết Thi Thính Là Gì

4. Spaghetti Code

Kết quả của phương pháp này là họ có các đoạn codes bị lặp đi lặp lại, vị đa số bọn chúng chỉ khác nhau ở một vài ba điểm nhỏ dại.

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

7. Cargo-Cult Programming

Cái thương hiệu “cargo-cult programming” được khởi nguồn từ một hiện tượng kỳ lạ dân tộc bản địa học với thương hiệu "cargo cult". Cargo cults mở ra sinh sống Nam Tỉnh Thái Bình Dương sau cầm cố chiến vật dụng II, khi tiếp xúc cùng với nền vnạp năng lượng minh tiên tiến và phát triển, tín đồ phiên bản địa cứ nghĩ rằng các thành phầm như Coca-Cola, TVs, tuyệt tủ rét trong số những tàu chsinh hoạt hàng sở hữu lên hòn đảo, những được chế tác vì chưng rất nhiều quyền năng khôn cùng nhiên, với bọn họ tin rằng mỗi khi tiến hành số đông nghi lễ ma thuật tương tự như như phong tục của người pmùi hương Tây, số đông thùng chất đầy sản phẩm & hàng hóa này sẽ lại mở ra quay lại.

Antipattern này cũng có đều biểu lộ tựa như như thế. Ta thực hiện gần như frameworks, thư viện, phương án, hay các kiến thiết patterns,...có lợi cho bọn họ, nhưng không thực sự gọi tại vì sao họ rất cần phải sử dụng mang đến chúng xuất xắc mọi technology đó hoạt động ra sao.

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

8. Lava Flow

Chúng ta nói tới "Lava flow" antipattern mỗi một khi rất cần phải xử lý phần nhiều đoạn mã codes thừa hoặc gồm quality thấp nhưng mà giống như cần yếu tách bóc rời với vận dụng, tuy vậy chúng ta không trọn vẹn hiểu được chúng bao gồm chức năng gì hoặc ảnh hưởng của chúng mang đến toàn bộ áp dụng như thế nào. Vì vậy, vấn đề loại trừ chúng là một trong việc rất rủi ro.

Vấn đề này thường xuyên xảy ra với phần đa 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 thốn tư liệu bao gồm xác), hoặc là lúc dự án được chuyển từ bỏ quy trình tiến độ development thanh lịch production thừa nkhô cứng.

Cái thương hiệu của antipattern này biểu lộ sự tương đương với dung nđắm đuối núi lửa, lúc đầu thì dịch rời nhanh khô, trôi rã nặng nề phòng dự phòng, mà lại sau đó thì cứng lại và cạnh tranh thải trừ.

Trên triết lý, ta có thể thải trừ lava flows sau thời điểm sẽ kiểm soát và refactoring kĩ lưỡng, nhưng mà vào thực tế, câu hỏi thực hiện nó chắc là siêu khó khăn hoặc thậm chí là là ko thể. Do lava flows thông thường sẽ có ngân sách tiến hành cao, cần tốt hơn hết nhằm ngăn chặn bọn chúng là ta cấu hình thiết lập được phong cách xây dựng kiến thiết xuất sắc với một workflow thao tác làm việc kết quả ngay từ bỏ ban sơ ^_^.

9. Hard Coding

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

Vấn đề gặp mặt yêu cầu làm việc đấy là phần nhiều hard code này sẽ chỉ hoạt động đúng chuẩn vào một môi trường xung quanh nhất thiết làm sao đó, cùng khi nhưng điều kiện đổi khác, chúng đang không còn vận động đúng chuẩn nữa.

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

10. Soft Coding

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

Xem thêm: Set Physx Configuration Là Gì ? Nó Có Tác Dụng Như Thế Nào? Nvidia Physx Là Gì

Chuandotan) · Twitter, 7 Chuando Tan Ideas

Kết luận

Bài share bên trên đang giới thiệu qua phần đa Antipatterns nhưng họ thường mắc phải vào quá trình phát triển áp dụng tương tự như phương pháp để khắc phục bọn chúng. Hi vọng bạn đọc đã để ý 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 mình nhé ^_^.