it-swarm-vi.com

Làm thế nào để bạn giải thích Tách biệt mối quan tâm với người khác?

Nếu bạn có một đồng nghiệp không hiểu lợi ích của Tách biệt các mối quan tâm hoặc không hiểu nó đủ để áp dụng nhất quán trong công việc hàng ngày của họ, bạn sẽ giải thích điều đó với họ như thế nào?

37
Marcie

Hãy tưởng tượng bạn có một chương trình đã được phát hành. Một khách hàng xuất hiện và đề nghị trả tiền cho bạn để cải tiến một trong những tính năng của nó. Để có được tiền, bạn sẽ cần thay đổi chương trình của mình để thêm tính năng mới. Một số điều sẽ ảnh hưởng đến mức lợi nhuận của bạn là:

  1. bạn phải thay đổi bao nhiêu mã
  2. thật dễ dàng để thực hiện các thay đổi
  3. khả năng bạn phá vỡ các tính năng hiện có đang được sử dụng bởi các khách hàng khác
  4. bạn có thể tái sử dụng bao nhiêu mô hình/kiến ​​trúc hiện có

Tách biệt mối quan tâm giúp bạn có được câu trả lời tích cực hơn cho những câu hỏi này.

  1. nếu tất cả các mã cho một hành vi cụ thể của ứng dụng được tách ra, thì bạn sẽ chỉ phải thay đổi mã được liên kết trực tiếp với tính năng mới của bạn. Mà nên ít mã để thay đổi.
  2. nếu các hành vi bạn quan tâm được tách biệt gọn gàng với phần còn lại của ứng dụng, nhiều khả năng bạn sẽ có thể trao đổi trong một triển khai mới mà không cần phải hiểu hoặc thao tác hoàn toàn với phần còn lại của chương trình. Nó cũng sẽ dễ dàng hơn để tìm ra mã bạn cần thay đổi.
  3. Mã mà bạn không phải thay đổi sẽ ít bị phá vỡ hơn mã mà bạn thay đổi. Vì vậy, chia nhỏ các mối quan tâm giúp bạn tránh bị phá vỡ các tính năng không liên quan bằng cách ngăn bạn khỏi phải thay đổi mã mà họ có thể gọi. Nếu các tính năng của bạn bị trộn lẫn với nhau, bạn có thể thay đổi hành vi của một người một cách tình cờ trong khi cố gắng thay đổi một tính năng khác.
  4. Nếu kiến ​​trúc của bạn không rõ ràng về chi tiết logic kỹ thuật hoặc kinh doanh thì các thay đổi đối với việc triển khai sẽ ít có khả năng yêu cầu các tính năng kiến ​​trúc mới. Ví dụ: nếu logic miền chính của bạn là cơ sở dữ liệu bất khả tri thì việc hỗ trợ cơ sở dữ liệu mới sẽ dễ dàng như việc hoán đổi trong một triển khai mới của lớp kiên trì.
53
flamingpenguin

Nhìn vào một bệnh viện, và suy nghĩ về tất cả các vai trò khác nhau có liên quan đến việc chăm sóc bệnh nhân: y tá, bác sĩ, trợ lý y tế, kỹ thuật viên, nhân viên văn thư, nhà ăn, v.v.

Có ai biết cách tất cả trong số những người đó hoàn thành công việc của họ không? Không, bởi vì nó sẽ áp đảo. Họ phải phân tách các trách nhiệm khác nhau thành các vai trò riêng biệt và các điểm tiếp xúc giữa các vai trò đó rất cụ thể.

10
RationalGeek

Nếu anh ấy/cô ấy làm việc trong một văn phòng, hãy lấy nó làm ví dụ, giải thích vai trò của từng nhân viên trong văn phòng đó và hỏi anh ấy, chuyện gì sẽ xảy ra, nếu những nhân viên đó không chia theo công việc của họ?

5
Abimaran Kugathasan

Tôi sẽ xem xét cách anh ta thất bại trong việc áp dụng SoC trong mã/thiết kế của mình và biến điều đó thành một ví dụ thực tế mà anh ta có thể liên quan và điều đó rõ ràng là không mong muốn.

Ví dụ, nếu anh ta có một lớp mà khách hàng cần cung cấp một số thông tin không phù hợp với những khách hàng đó, thì tôi sẽ sử dụng sự tương tự của một tiệm bánh nơi bạn phải mang theo ngũ cốc và men của riêng mình nếu bạn muốn mua một cái bánh mì.

1
Bart van Ingen Schenau