Đây là bài 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/). Vào bài share này, có một số chỗ được bản thân sửa đổi, bổ sung cập nhật để mang đến phù hợp.Bạn vẫn xem: Hardcoded là gì


*

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

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


*

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

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

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

Trong nội dung bài viết này, tôi sẽ giới thiệu qua cho các bạn 10 antipatterns phổ cập hay gặp mặt phải trong thừa trình cách tân và phát triển web. (Chú ý rằng rất nhiều antipatterns tôi liệt kê dưới đây không trọn vẹn giống với các gì bạn có thể tìm thấy trong cuốn sách tôi sẽ đề cập ngơi nghỉ 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 bài toán tối ưu hóa các đoạn codes. Nếu chúng ta để ý tới những hiệu quả nhỏ dại và về tối ưu hóa bọn chúng quá mau chóng trong quá trình phát triển, trước khi họ biết đúng mực những vấn đề cần làm, rất có thể chúng ta sẽ dễ dãi mắc bắt buộc 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 cơ của đa số điều ác", nó hoàn toàn có thể hơi bị cường điệu hóa lên một chút, nhưng tất cả thể cho thấy thêm rằng những vụ việc nghiêm trọng về tối ưu hóa sớm có thể gây ra vào 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 bản vẽ xây dựng hiệu quả, nó có thể gây ra codes trở buộc phải khó đọc, việc debug và gia hạn khó khăn hơn, cùng những đoạn codes thừa bị đẩy vào mã nguồn của bọn chúng ta.

Một ý tưởng xuất sắc để ngăn ngừa việc buổi tối ưu sớm là tuân theo hiệ tượng 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 dòng đó", chứ đừng có mà "chắc là trong tương lai sẽ phải đến".

2.Reinventing the Wheel

Reinventing the wheel - Tái phát minh bánh xe có thể hiểu nôm na là mẫu bánh xe cộ nó đã được phát minh từ rất rất lâu rồi, và nó cũng tốt nhất có thể rồi, đừng có 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 tiêu tốn lãng phí thời gian, nhiều hơn những chiến thuật tùy chọn, nhất là những công dụng cơ bạn dạng hiếm khi tốt hơn đông đảo chuẩn mà nhiều nhà cải cách và 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", bọn họ có một antipattern không giống cũng phổ cập đó là "dependency hell".

Nếu, thay bởi cặm cụi viết phần lớn thứ từ bỏ đầu, họ lại quá lạm dụng việc áp dụng thư viện bên thứ ba dựa trên những phiên phiên bản cụ thể của những thư viện khác. Điều này sẽ khiến bạn thuận lợi phải đối mặt với những trường hợp khó cai quản mỗi khi muốn cập nhật thư viện, vì thỉnh thoảng những dependencies này sau khi cập nhật lại không tương 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 cách sử dụng những package managers bao gồm khả năng update 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 với nhau. Nếu bọn họ vấp phải quá nhiều vấn đề, việc refactoring cũng có thể là một phát minh hay.

4. Spaghetti Code

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

Xem thêm: Quý Bà Tiếng Anh Là Gì - Phân Biệt Mr, Mrs, Miss, Ms, Sir Và Madam

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

7. Cargo-Cult Programming

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

Antipattern này cũng có những bộc lộ tương từ bỏ 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 cái đó ta, nhưng mà không thực sự hiểu tại sao họ cần phải dùng cho chúng tốt những technology đó chuyển động ra sao.

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

8. Lava Flow

Chúng ta nói tới "Lava flow" antipattern mỗi khi cần nên xử lý những đoạn mã codes quá hoặc có chất lượng thấp nhưng dường như không thể tách bóc rời với ứng dụng, nhưng bọn họ không hoàn toàn hiểu được chúng có công 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ày vậy, việc loại bỏ chúng là 1 việc cực kỳ rủi ro.

Điều này liên tục xảy ra với hồ hết 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 thốn tài liệu chính xác), hay những khi dự án công trình được chuyển từ tiến trình development sang trọng production quá nhanh.

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

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

9. Hard Coding

"Hard coding" là 1 trong những antipattern được nói đến rất nhiều một trong những cuốn sách về phát triển web tức thì ở lời nói đầu. Hard coding xẩy ra khi chúng ta lưu trữ những thông số kỹ thuật 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à 1 đoạn văn bạn dạng ở ngôn ngữ cụ thể nào đó) nghỉ ngơi trong mã nguồn ứng dụng thay vị lưu bọn chúng ở một trong những file cấu hình, database, user đầu vào hay xuất phát từ một external api nào đó.

Vấn đề gặp gỡ phải ở đó là những hard code đó sẽ chỉ hoạt động đúng mực trong một môi trường xung quanh nhất định làm sao đó, với khi mà điều kiện thay đổi, chúng sẽ không còn hoạt động đúng mực nữa.

Ví dụ như, ở môi trường xung quanh development, bạn thực hiện một s3-bucket mang tên s3-foo-development, tuy vậy ở môi trường production bạn lại sử dụng một s3-bucket khác có tên s3-foo-production, hãy thử tưởng tượng, đều s3 access key đã có fix cứng sinh sống trong 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 khác biệt như vậy. Cách giải quyết và xử lý ở đó là bạn yêu cầu lưu phần nhiều s3 access key kia ở trong biến môi trường xung quanh 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, bạn có thể vô tình đụng trán với một antipattern trái lại với nó call là "soft coding".

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

Kết luận

Bài chia sẻ trên đã ra mắt qua đều Antipatterns mà chúng ta thường phạm phải trong thừa trình cải cách và phát triển ứng dụng cũng như cách để khắc phục chúng. Mong muốn bạn hiểu sẽ để ý để tránh mắc phải chúng trong sự nghiệp lập trình của bản thân nhé ^_^.