Tôi có một cuộc tranh luận với một đồng nghiệp lập trình viên về việc đó là một cách thực hành tốt hay xấu để sửa đổi một đoạn mã làm việc chỉ để làm cho nó có thể kiểm tra được (ví dụ như thông qua các bài kiểm tra đơn vị).
Ý kiến của tôi là nó ổn, trong giới hạn của việc duy trì các thực hành kỹ thuật phần mềm và hướng đối tượng tốt tất nhiên (không "làm mọi thứ công khai", v.v.).
Ý kiến của đồng nghiệp của tôi là sửa đổi mã (chỉ hoạt động) cho mục đích thử nghiệm là sai.
Chỉ là một ví dụ đơn giản, hãy nghĩ về đoạn mã này được sử dụng bởi một số thành phần (được viết bằng C #):
public void DoSomethingOnAllTypes()
{
var types = Assembly.GetExecutingAssembly().GetTypes();
foreach (var currentType in types)
{
// do something with this type (e.g: read it's attributes, process, etc).
}
}
Tôi đã gợi ý rằng mã này có thể được sửa đổi để gọi ra một phương thức khác sẽ thực hiện công việc thực tế:
public void DoSomething(Assembly asm)
{
// not relying on Assembly.GetExecutingAssembly() anymore...
}
Phương pháp này đưa vào một đối tượng hội để làm việc, làm cho nó có thể vượt qua hội của riêng bạn để thực hiện thử nghiệm trên. Đồng nghiệp của tôi đã không nghĩ rằng đây là một thực hành tốt.
Điều gì được coi là một thực hành tốt và phổ biến?
Type
một tham số, không phải là mộtAssembly
.