Tôi nghĩ rằng nó phụ thuộc vào mức độ lớn của dự án sẽ kết thúc.
Ở một thái cực, giả sử bạn có dự án 1 Mloc. Đối với dự án lớn đó, không chắc một cá nhân nào sẽ là "chuyên gia" trong tất cả các lĩnh vực liên quan. Vì vậy, trong trường hợp này, tôi sẽ gắn bó với các kiểu mã hiện có cho từng thành phần chính. Các nhà phát triển mới sẽ chọn một khu vực, tìm hiểu điều đó và không chắc họ sẽ thấy nhiều thành phần khác có thể có các kiểu mã khác nhau.
Nếu dự án là nhỏ hơn rất nhiều, mà nó là khả năng có cá nhân hiểu được toàn bộ cơ sở mã, sau đó tôi sẽ chọn một phong cách đang chiếm ưu thế và dính với điều đó. Trong trường hợp này, tôi nghĩ tính nhất quán trong toàn bộ dự án có ý nghĩa hơn bởi vì các nhà phát triển mới sẽ có khả năng làm việc trong tất cả các lĩnh vực của dự án.
Các dự án cỡ trung bình có lẽ là khó nhất để đưa ra quyết định này. Trong trường hợp này, bạn phải cân nhắc chi phí cho mỗi phương pháp và quyết định phương pháp bạn nghĩ sẽ ít tốn kém nhất về lâu dài. Thách thức là các dự án có quy mô trung bình thường phát triển vừa đủ để tái cấu trúc kiểu hoàn chỉnh trông đắt đỏ. Bạn có thể muốn có cái nhìn thứ hai về cấu trúc cây mã để xem liệu mọi thứ có thể được sắp xếp để nhóm các kiểu mã cụ thể lại với nhau không.
Dù bằng cách nào, quyết định cuối cùng sẽ thuộc về đội bạn đang đặt gói này cùng nhau.
Một số ngoại lệ có thể thay đổi lý luận của tôi từ phía trên:
Nếu một hoặc nhiều mô-đun có phong cách tàn bạo, thì sẽ không có ý nghĩa gì trong việc giữ nó xung quanh, ngay cả trong một dự án lớn hơn. Đúng, phong cách là chủ quan, nhưng nếu bạn và những người tham gia dự án của bạn thực sự, thực sự không thích cách các khu vực cụ thể chảy qua thì hãy biến phong cách cũ và cho nó một phong cách tốt hơn.
Nếu tất cả các kiểu gần nhau một cách hợp lý, có thể dễ dàng khai báo "đây là cách mới" và sử dụng kiểu đó cho tất cả các mã mới và các phép tái cấu trúc quan trọng. Điều này có thể làm cho các đánh giá hơi đau một chút, nhưng theo kinh nghiệm của tôi, hầu hết dân gian đều có khả năng thích nghi với phương pháp này. Nó cũng cung cấp một dấu hiệu nhận biết nơi mã cũ.
Đôi khi phong cách được thay đổi dựa trên chức năng mới được thêm vào ngôn ngữ. C ++ đã chọn một số tính năng trong những năm qua. Nó có thể có ý nghĩa để tái cấu trúc khi cần kiểu cũ hơn sang kiểu mới hơn để tận dụng các tính năng đó.
Một số thư viện có thể có một cách tiếp cận đặc biệt hoặc phong cách. Nếu vậy, tôi sẽ gắn bó với phong cách đó cho thư viện đó ngay cả khi nó có thể xung đột với phần còn lại của dự án. Mục đích ở đây là để tăng tỷ lệ cược rằng ai đó làm việc frobnosticators
trên các dự án khác cũng sẽ làm việc trong dự án của bạn.
Một số ý kiến đề cập đến phong cách bắt buộc và hướng đối tượng là một điều cần xem xét.
Các mô-đun "nặng" theo một kiểu cụ thể có lẽ phải giữ nguyên như vậy nếu mô-đun có kích thước trung bình hoặc lớn hơn. Tôi đã làm việc với ba phong cách chính (bắt buộc, khách quan và chức năng), và tôi đã tái cấu trúc các phong cách mệnh lệnh nặng nề thành một phong cách OO. Với số lượng mã trung bình hoặc lớn hơn, việc tái cấu trúc có thể (đặc biệt) khó khăn. Kinh nghiệm của tôi đã bị xáo trộn vì tôi không có bất kỳ công cụ hỗ trợ nào để hỗ trợ tái cấu trúc.
Tôi sẽ tưởng tượng có một mối tương quan cao giữa các mô-đun có kiểu dáng rất cấp thiết và các mô-đun đó là thành ngữ cho các hốc phát triển cụ thể, quay trở lại điểm cuối cùng tôi nêu ra với các ngoại lệ. Vì vậy, bất kỳ mô-đun nào bạn sẽ tìm thấy cho chức năng đó sẽ trông giống như vậy và bạn muốn các chuyên gia của miền đó cũng có thể dễ dàng làm việc với dự án của bạn. Nhưng nếu có các tùy chọn và nhóm của bạn không thích kiểu của mô-đun đó, thì tôi sẽ điều tra các tùy chọn.
Tương tự như vậy, tôi đã làm việc với một mô-đun kiểu OO nặng, trong đó các nguyên tắc OO đã được đưa quá xa và sử dụng không chính xác. Ví dụ, các giao diện đã được sử dụng để thay thế cho nhiều kế thừa. Và như bạn có thể mong đợi, đó là một triển khai thô thiển. Tôi đã có thể đạt được tiến bộ hợp lý trong việc tái cấu trúc mô-đun đó, nhưng cuối cùng tôi đã từ bỏ cách tiếp cận đó khi tôi tìm thấy các gói tốt hơn để sử dụng thay thế.