Nguyên tắc DRY (Don’t Repeat Yourself) là một nguyên tắc cơ bản mà mọi lập trình viên cần phải hiểu và làm theo nó. Trong bài viết này, chúng ta hãy cùng tìm hiểu về nguyên tắc này các bạn nhé!
Nguyên tắc DRY chỉ ra rằng nếu chúng ta đang muốn viết nhiều đoạn code giống nhau ở nhiều chỗ khác nhau, thay vì copy và paste đoạn code đó, chúng ta hãy đưa đoạn code đó vào một phương thức riêng sau đó gọi phương thức này từ những chỗ chúng ta cần gọi.
Áp dụng nguyên tắc này, code của chúng ta sẽ rõ ràng hơn và dễ bảo trì hơn.
Mình sẽ làm một ví dụ để các bạn hiểu rõ hơn nhé!
Giả sử mình có một đối tượng là Calculator, đối tượng này có 2 nhiệm vụ chính là tính tổng và tính trung bình cộng của 2 số a và b.
Nếu không áp dụng nguyên tắc DRY, code mình sẽ viết như sau:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
package com.huongdanjava; public class Calculator { public int total(int a, int b) { return a + b; } public double average(int a, int b) { int sum = a + b; return sum / 2; } } |
Bây giờ, nếu mình muốn in ra tổng của 2 số mỗi khi thực hiện 2 phép tính trong đối tượng Calculator, mình phải sửa lại 2 phương thức này như sau:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
package com.huongdanjava; public class Calculator { public int total(int a, int b) { int sum = a + b; System.out.println("Total=" + sum); return sum; } public double average(int a, int b) { int sum = a + b; System.out.println("Total=" + sum); return sum / 2; } } |
Các bạn có thể thấy là, mỗi khi muốn chỉnh sửa gì đó liên quan đến những đoạn code giống nhau, chúng ta phải chỉnh sửa từng chỗ một.
Để khắc phục điều này, mình sẽ áp dụng nguyên tắc DRY như sau:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
package com.huongdanjava; public class Calculator { public int total(int a, int b) { return a + b; } public double average(int a, int b) { int sum = total(a, b); return sum / 2; } } |
Và giờ để in ra tổng của 2 số, chúng ta chỉ cần sửa phương thức total() là xong:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
package com.huongdanjava; public class Calculator { public int total(int a, int b) { int sum = a + b; System.out.println("Total=" + sum); return sum; } public double average(int a, int b) { int sum = total(a, b); return sum / 2; } } |