Bài đăng

Đang hiển thị bài đăng từ 2023

Singleton design pattern - Đừng lãng phí khi chúng ta có thể sử dụng lại một đối tượng

Hình ảnh
       Hiện nay hầu như các ngôn ngữ, framework  đều sử dụng  singleton , vậy singleton là cái gì và nó mang lại lợi ích gì mà lại được sử dụng rộng rãi như vậy, chúng ta hãy cùng tìm hiểu nhé. 1. Singleton là gì?      S ingleton  là tên của  một  design pattern   thuộc nhóm creational (khởi tạo) và  được sử dụng rất nhiều trong các framework của các ngôn ngữ hướng đối tượng. Mục đích của nó là đảm bảo một đổi tượng sẽ được khởi tạo đúng một lần duy nhât, nói đơn giản nếu đối tượng đó chưa được khởi tạo thì nó sẽ tạo ra đổi tượng đó, nếu đối tượng đó đã được khởi tạo rồi nó sẽ không tạo ra đối tượng mà sẽ sử dụng đối tượng đã được khởi tạo trước đó để sử dụng. 2. Tại sao không nên khởi tạo một đối tượng nhiều lần?      Lấy ví dụ, mình có class Database. Đây là class tương tác đến cơ sở dữ liệu. Bạn thấy đó, trong một project việc tương tác với CSDL là rất nhiều lần, nên việc bạn gọi đến class  Database là điều rất thường xuyên. Điều đó là đồng nghĩa mồi lần gọi đến class này lại được

Static method trong PHP và khi nào nên sử dụng chúng

Hình ảnh
  Static method là gì ?      Trong lập trình, static method (phương thức tĩnh) là một phương thức thuộc về class và có thể được gọi mà không cần tạo ra một đối tượng của class đó. Chúng được khai báo với từ khóa static và có thể được truy cập bằng cách sử dụng tên class, dấu hai chấm (::) và tên phương thức. Static method rất hữu ích khi bạn muốn sử dụng một phương thức thuộc về một class mà không cần phải tạo một đối tượng của class đó      Tuy nhiên, để có thể sử dụng tốt static method thì chúng ta cũng nên tìm hiểu về ưu và nhược điểm của chúng. Vậy hãy cũng xem chúng có ưu và nhược điểm gì nhé. 1. Không cần khởi tạo đối tượng      Việc sử dụng static method giúp giảm thiểu sự tốn kém về tài nguyên bộ nhớ và tốc độ thực thi chương trình, bởi vì bạn không cần phải tạo ra một đối tượng mới để gọi phương thức.      Một class có thể có cả static và non-static method. Một static method có thể truy cập từ một phương thức cùng trong đối tượng của class bằng cách sử dụng từ khóa self

Strategy Design Pattern

Hình ảnh
         1. Strategy design pattern là gì?     -  Trong design pattern được chia làm 3 nhóm chính: creational  pattern , structural  pattern , behavior pattern. Và s trategy design pattern thuộc nhóm b ehavior pattern.      - Nó cho phép định nghĩa tập hợp các thuật toán, đóng gói từng thuật toán lại , và dễ dàng thay đổi linh hoạt các thuật toán bên trong object. Strategy cho phép thuật toán biến đổi độc lập khi người dùng sử dụng chúng.          2. Những trường hợp có thể áp dụng strategy:     - Trong một dự án có chức năng convert hình ảnh jpg sang có loại khác, ban đầu chỉ có loại convert sang png. Ban đầu chúng ta chỉ cần xây dựng 1 class ImageConvertor với hàm convertTo và truyền vào image. Image converter class      - Vấn  đề: Sau một thời gian thì dự án bắt đầu phát triển và yêu cầu chúng ta thêm những loại convert khác như webp, tiff, gif và có thể sau này sẽ thêm nhiều loại convert khác nữa. Giải quyết vấn đề:      -  Vào thẳng hàm  convert để sửa if else trong đó. Cách này

Code smell - Code gì thấy gớm vậy ba

Hình ảnh
       Mình thấy có khá nhiều developer kể cả mình từ các bạn intern, fresher... cũng mắc phải những lỗi code smell  mà đáng lẽ ra chúng ta nên tránh. Đừng có nói: "Tao làm cái này chạy được rồi sau này thằng khác dô maintain thì nó tự đọc code đi, chứ ai rảnh đâu mà làm cho nó đẹp, dễ đọc". Xong cuối cùng bản thân mình lại là người đi hốt đống code thúi đó.  Vậy cho nên dưới đây sẽ là một vài lỗi  code smell   mà mình thấy và hay gặp phải, cũng như cách giải quyết chúng.     1. Đặt tên biến không rõ ràng, hay dùng magic number trong code:              -  Có vài trường hợp đặt tên biến rất bị confuse, kiểu không biết biến đó dùng để làm gì, làm cho trở nên khó hiểu hơn rất nhiều. Thường thì nên đặt tên biến là danh từ là tốt nhất.                Ví dụ: không nên : getStartTime, valueA, valueB,  nên : startTime, endTime, totalProduct               - Và đặc biệt mình thấy có một cái mà khá nhiều người hay mắc phải đó là magic number , nhìn thì vô hại đó nhưng mà hại người khác