Làm thế nào để cho đồng đội biết những thay đổi tôi đã thực hiện đối với một đối tượng? [đóng cửa]


9

Giả sử tôi có một đối tượng PHP, giả sử: companyObj.

class companyObj
{
  private company_name;
  private company_address;

  public function print_contact()
  {
    //logic
  }
}

Đây là đối tượng tôi đã viết, và chia sẻ với các đồng đội. Bây giờ tôi muốn làm cho nó mạnh hơn, như thế này:

class companyObj
{
  private company_name;
  private company_address;
  private company_contact_person;

  public function print_contact()
  {
    //logic updated
  }
}

Bây giờ, làm thế nào tôi có thể thông báo cho các đồng đội của mình rằng đối tượng của tôi có nhiều thuộc tính mà họ có thể đặt?

Thay vì gửi e-mail cho mọi người trong nhóm phát triển, làm cách nào để nhóm biết điều gì đang xảy ra, khi tôi không muốn các đồng đội của mình lãng phí thời gian để xem những gì được thay đổi ở cấp mã nguồn?


7
svn có thể giúp đỡ, vì họ sẽ biết rằng có gì đó đã thay đổi trong mã..như họ có thể trực tiếp cập nhật các thay đổi của bạn (tệp cụ thể có thể nằm trong trường hợp của bạn) .. mà không cần phải biết những gì đã thay đổi (tùy chọn nếu họ không muốn đến)
PresleyDias

1
đó là một lớp bạn đã viết không phải là một đối tượng :) các đối tượng tồn tại trong thời gian chạy không biên dịch thời gian
Rune FS

Câu trả lời:


10

Nó phụ thuộc rất nhiều vào tình hình cụ thể. Giả sử tài sản mới mà bạn thêm là bắt buộc, nghĩa là nó phải luôn được đặt. Sau đó, bạn phải tự tìm kiếm thông qua mã và cập nhật nó ở mọi nơi a companyObjđược tạo, để đảm bảo rằng nó được xây dựng đúng (bao gồm thiết lập thuộc tính mới). Tôi giả sử PHP có các hàm tạo, trong trường hợp đó bạn chỉ cần thêm một tham số hàm tạo mới và trình biên dịch sẽ tự động đánh dấu mọi lệnh gọi của hàm tạo mà không có tham số phụ là lỗi biên dịch. Điều này cũng sẽ đảm bảo rằng các đồng đội tìm hiểu về tài sản mới ngay khi họ sử dụng a companyObj.

Nếu thuộc tính mới là tùy chọn, tuy nhiên, mọi thứ sẽ không rõ ràng. Bạn có thể có hoặc không có giá trị mặc định phù hợp cho nó. Trong trường hợp sau, tôi vẫn sẽ đề nghị bạn cập nhật tất cả các sáng tạo cá thể để đặt thuộc tính mới bất cứ khi nào thích hợp. Điều này là để đảm bảo rằng mã được giữ ở trạng thái nhất quán mọi lúc .

Truyền đạt sự thay đổi cho đồng đội của bạn là một bước tiến xa khác ở đây. Các nhóm nhanh nhẹn thích giao tiếp trực tiếp và IMHO vì một lý do chính đáng. Dựa vào tài liệu là một phương tiện truyền bá thông tin rất chậm và không hiệu quả xung quanh một đội. Một Wiki có phần tốt hơn, nhưng vẫn vậy, ghi lại mọi thuộc tính của từng lớp là IMHO quá mức cần thiết. Nó sẽ chỉ trở thành một gánh nặng lớn cho đội và nhanh chóng trở nên không đáng tin cậy và vô dụng, vì chúng ta là con người nên đôi khi chúng ta quên mất việc cập nhật, hơn nữa tôi cá rằng không có nhiều thành viên trong nhóm sẽ thường xuyên kiểm tra tài liệu (dưới mọi hình thức) để được thông báo về những thay đổi mã mới nhất.

Điều này cũng đúng với tài liệu được tạo tự động thông qua ví dụ Javadoc hoặc Doxygen. Mặc dù chúng có thể được cấu hình thành bản dựng tự động để luôn cập nhật tài liệu đã tạo, tôi chưa bao giờ thấy một nhóm phát triển với các thành viên thường xuyên duyệt qua tài liệu để được thông báo về các thay đổi mã mới nhất. Và nếu bạn đang sử dụng bất kỳ hệ thống kiểm soát nguồn nào, nơi đầu tiên nhận thấy các thay đổi là khi bạn cập nhật bản saocục bộ của mình - sau đó bạn có thể kiểm tra các thay đổi trong các lớp quen thuộc và xem chính xác những gì và cách thay đổi (cùng với giải thích ngắn gọn và / hoặc tham chiếu đến ID nhiệm vụ, nếu nhóm của bạn đã quen với việc thêm nhận xét đăng nhập có ý nghĩa - sẽ bị thiếu trong các tài liệu được tạo tự động).

Giao tiếp là một lý do chính tại sao các nhóm lập trình cực đoan thực hiện lập trình cặp. Nếu bạn thực hiện các thay đổi cùng với một đồng đội, có hai bạn ngay lập tức biết về từng thay đổi và lần sau mỗi bạn sẽ bắt cặp với người khác, vì vậy thông tin hữu ích sẽ lan truyền khá nhanh. Nó không phải luôn luôn được áp dụng mặc dù, vì nhiều lý do. Chặn rằng, bạn có thể chỉ cần nói chuyện với hàng xóm về sự thay đổi trong một thời điểm thích hợp (ví dụ như trong bữa trưa, nếu bạn tình cờ ăn trưa cùng nhau) hoặc gửi thư xung quanh nếu đó là một thay đổi lớn hơn, quan trọng hơn hoặc phức tạp hơn.

Trong trường hợp sau, có thể có một lý do chính đáng để ghi lại nó đúng. Tài liệu thiết kế IMHO là tốt nhất khi chúng cung cấp một tổng quan cấp cao, chi tiết về hệ thống, trong khi các chi tiết triển khai nằm trong mã (tuân thủ nguyên tắc DRY ).


2
+1 Tôi nghĩ rằng mọi người trong nhóm cần được giáo dục để không "cập nhật" một cách mù quáng lên phiên bản mã mới nhất nhưng kiểm tra ngắn gọn những gì đã được thực hiện và ở đâu trước khi thực hiện. Và như bạn đã nói, một nhận xét ngắn nhưng chính xác là tuyệt vời.
Jalayn

10

Bạn đã xem xét đơn giản là nói chuyện với họ ? Lên lịch một cuộc họp ngắn: "này, tôi đã thực hiện một số thay đổi cho đối tượng X, tôi muốn cho bạn thấy những gì đã thay đổi và tại sao". Hoặc, chỉ nói chuyện riêng với từng người nếu cuộc họp có vẻ quá trang trọng hoặc gây rối.


+1, bằng cách nào đó, câu trả lời rõ ràng nhất không được nghĩ đến đầu tiên!
NoChance

2

Nếu bạn có một nhóm bạn có thể cũng có một tài liệu thiết kế. Nếu không. bắt đầu với nó Và sử dụng một số công cụ UML để ánh xạ thiết kế của bạn.


7
Tuy nhiên, điều này nghe có vẻ tốt: 1. một tài liệu thiết kế chứa mọi thuộc tính lớp duy nhất sẽ trở thành một vấn đề khó khăn trong việc duy trì và giữ đồng bộ với mã. 2. một sơ đồ UML được thiết kế ngược từ mã bị ràng buộc thực sự trở nên vô dụng trong bất kỳ dự án không cần thiết nào, một lần nữa do số lượng chi tiết tuyệt đối trong đó.
Péter Török

Bạn không cần phải ghi lại từng lớp nếu bạn có quá nhiều. Chỉ là những người tạo nên giao diện công cộng. Đồng ý rằng đối với một dự án lớn, nó sẽ trở nên cồng kềnh, nhưng tốt hơn là không có bất kỳ tài liệu nào chỉ định cách các phần khác nhau của ứng dụng nói chuyện với nhau.
DPD

1
Tôi đồng ý về tầm quan trọng của một tài liệu kiến ​​trúc / thiết kế cấp cao (như đã lưu ý trong câu trả lời của tôi). Tuy nhiên, đó là mức chính xác cao để không cần phải cập nhật liên tục với những thay đổi rất nhỏ.
Péter Török

1

Bạn có thể sử dụng một công cụ như doxygen trong mã của bạn. Bây giờ hãy tạo tập lệnh sẽ tạo tài liệu doxygen và chạy nó thường xuyên, có lẽ là một phần của bản dựng hàng đêm của bạn (bạn có xây dựng hàng đêm không?).

Tôi nghĩ rằng bạn có thể gán một thuộc tính tùy chỉnh trong doxygen cho phần bổ sung của bạn để làm nổi bật nó là mới.

Nếu đồng đội của bạn tốt, họ sẽ xem qua tài liệu mới.


Có lẽ tôi chưa bao giờ làm việc với những người đồng đội tốt, vì tôi chưa bao giờ thấy công việc này trong thực tế :-(
Péter Török

@ PéterTörök Tôi phải thừa nhận rằng họ ở rất xa và ít người ở giữa, bao gồm cả tôi.
tehnyit

0

Bây giờ, làm thế nào tôi có thể thông báo cho các đồng đội của mình rằng đối tượng của tôi có nhiều thuộc tính mà họ có thể đặt?

Chà, bạn không nên thông báo cho đồng đội về mọi điều nhỏ nhặt bạn làm. Nếu không, bạn sẽ phải gửi rất nhiều email. Nếu đó là một vấn đề lớn, thì bạn có thể thực hiện một cuộc họp nhỏ và cho họ biết những gì bạn đã làm (Nếu bạn làm scrum, thì không cần phải thiết lập một cuộc họp riêng).

Nếu bạn sử dụng IDE hỗ trợ hoàn thành tự động, thì đồng đội của bạn sẽ nhận thấy sự thay đổi của bạn. Tôi chỉ hy vọng bạn nhận xét mã của bạn.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.