Antipattern là gì?

Noun Programming
anti-pattern

Antipattern là giải pháp phổ biến cho các vấn đề chung mà giải pháp đó không hiệu quả và có thể dẫn đến hậu quả không mong muốn. Antipattern khác với bad practice khi:

  • Một practice phổ biến ban đầu có vẻ là một giải pháp thích hợp nhưng cuối cùng lại để lại những hậu quả xấu lớn hơn bất kỳ lợi ích nào.
  • Có một giải pháp khác đã được biết đến, có thể lặp lại và hiệu quả.

Khái niệm antipattern được lấy cảm hứng từ khái niệm về các design pattern, chỉ ra các giải pháp hiệu quả chung cho các vấn đề chung. Antipattern ban đầu được áp dụng trong bối cảnh phát triển phần mềm, nhưng đã mở rộng sang các khía cạnh khác của kỹ thuật phần mềm, tổ chức và quản lý dự án.

Ví dụ trong lập trình hướng đối tượng, ý tưởng là tách phần mềm thành các phần nhỏ được gọi là đối tượng (object). Antipattern trong lập trình hướng đối tượng là một đối tượng thượng đế (god object) thực hiện rất nhiều hàm (function) sẽ tốt hơn nếu được tách thành các đối tượng khác nhau.


class GodObject {
    function PerformInitialization() {}
    function ReadFromFile() {}
    function WriteToFile() {}
    function DisplayToScreen() {}
    function PerformCalculation() {}
    function ValidateInput() {}
    // and so on... //
}

Ví dụ trên có một đối tượng thực hiện mọi thứ. Trong lập trình hướng đối tượng, sẽ tốt hơn nếu các trách nhiệm được xác định rõ ràng cho các đối tượng khác nhau:


class FileInputOutput {
    function ReadFromFile() {}
    function WriteToFile() {}
}

class UserInputOutput {
    function DisplayToScreen() {}
    function ValidateInput() {}
}

class Logic {
    function PerformInitialization() {}
    function PerformCalculation() {}
}

Learning English Everyday