2010-07-28 34 views
7

Có ai trong các bạn đã đánh giá dự án django và cách cải thiện/refactor cơ sở mã của nó không? Một dự án thú cưng trong công ty tôi làm việc tại đang trở nên được sử dụng rộng rãi hơn và sẽ là tốt để cải thiện chất lượng của nó trước khi phát triển hơn nữa. Có bất kỳ kỹ thuật hoặc phương pháp nào để phân tích các dự án django trước khi chúng tôi bắt đầu đặt nhiều tính năng hơn vào nó? Chúng tôi không muốn đột nhiên nhận ra, rằng do sự lựa chọn nghèo trước đó chúng tôi phải sống với một cái gì đó thực sự xấu.django: cách đánh giá dự án tái cấu trúc

Trả lời

7

Những gì tôi nhận thấy sau khi làm việc hơn một năm trên một trang web khá lớn chủ yếu là điều này liên quan đến thiết kế/mã hóa của chúng tôi. Nó không hoàn toàn tái cấu trúc liên quan và có lẽ bạn đã biết rất nhiều, nhưng có lẽ nó có thể giúp :).

  1. Quan trọng nhất, chúng tôi không phải lúc nào cũng đặt mã của mình ở đúng nơi. Có quá nhiều chức năng trong các phương thức xem, quá ít trong các biểu mẫu và mô hình. Tôi thấy vấn đề này nhiều lần. Để xử lý đầu vào, hãy sử dụng biểu mẫu, định dạng/tinh chỉnh/... dữ liệu mô hình, sử dụng các phương thức hoặc thuộc tính mô hình. Nghiêm túc, tại một thời điểm tôi giảm một cái nhìn khoảng 150 dòng đến 20 bằng cách chỉ đặt mã ở những nơi tốt hơn. Cải thiện khả năng bảo trì và khả năng đọc rất tốt
  2. Nhiều mã chúng tôi đã viết thực sự không thực sự sử dụng toàn bộ lực lượng python và/hoặc django. Đối với cái đầu tiên, đọc một cái gì đó giống như Dive Into Python là một trợ giúp lớn, thứ hai tôi chỉ theo dõi tất cả các cấu trúc phức tạp mà chúng ta đã xây dựng (phần lớn là mã kế thừa từ 0,96) và xem có các lựa chọn thay thế trong tài liệu django hay không. Tất nhiên, không lãng phí thời gian của bạn cố gắng để giảm tất cả mọi thứ để một lót, nhưng chắc chắn với mã di sản này có thể giúp cải thiện khả năng đọc và bảo trì.
  3. Luôn nhìn vào các trang web như django-snippets, google code, ... nếu có dự án django hiện có phong nha có thể lấy đi rất nhiều chức năng của bạn. Thường thì các dự án này được nhiều người xem xét hơn và do đó ổn định hơn và có hiệu suất cao hơn. Nếu một dự án không đáp ứng tất cả các yêu cầu của bạn, nó thậm chí có thể là một ý tưởng tốt về việc bổ sung thêm các yêu cầu của bạn thay vì làm tất cả các tùy chỉnh cho trang web của bạn.
  4. Cố gắng giữ cho các ứng dụng vượt qua phụ thuộc tối thiểu. Khi bạn vẽ biểu đồ phụ thuộc (ví dụ: bằng cách liên kết từng ứng dụng có khóa ngoài với nhau), nó vẫn phải rõ ràng và không phải là thứ mà mọi ứng dụng được liên kết với bất kỳ ứng dụng nào khác. Thông thường, bạn sẽ có một số ứng dụng 'trợ giúp' (ví dụ: hệ thống người dùng, gắn thẻ) được nhiều người dùng và tất cả các ứng dụng khác thực sự chỉ phụ thuộc vào các ứng dụng đó.
  5. Viết kiểm tra, django có bộ thử nghiệm tuyệt vời, vì vậy hãy sử dụng nó. Chắc chắn đối với các phần mã phổ biến với nhiều ứng dụng và có khả năng thay đổi. Thực sự, không có gì khó chịu như đột nhiên nhận thấy một lỗi bạn thực sự giải quyết 4 tháng trước và bạn không có đầu mối mà cập nhật kể từ đó sau đó đã phá vỡ nó một lần nữa.
  6. Xem xét chuẩn hóa cơ sở dữ liệu, mô hình orma django vẫn được kết hợp chặt chẽ với cơ sở dữ liệu quan hệ và vì vậy nó là một khái niệm quan trọng, chắc chắn khi bạn làm việc với các mô hình có khả năng mở rộng sau này.

Liên quan đến tái cấu trúc thực, công cụ quan trọng duy nhất tôi có thể nghĩ là South, có thể giúp bạn rất nhiều nếu thay đổi lược đồ cơ sở dữ liệu của bạn. Nếu không, giống như một gợi ý tôi đã đưa ra: viết các bài kiểm tra để đảm bảo chức năng của bạn trước và sau khi tái cấu trúc vẫn giữ nguyên.

+0

Vâng, tôi làm hầu hết những gì bạn đã viết .. Nhưng tôi vẫn không chắc chắn, cho dù tôi đang làm tất cả các quyền. – gruszczy

2

Bạn có thể tìm hiểu về code smells. Một số người nói rằng nếu mã của bạn có mùi nó có nghĩa là bạn cần phải xem xét tái cấu trúc.

Chủ đề này rất rộng.Hãy nhớ rằng:

sớm tối ưu hóa là gốc rễ của tất cả ác - DonaldKnuth

Cá nhân tôi nghĩ rằng điều này cũng có giá trị (non) refactoring.

EDIT: đây cũng là một nguồn lực tốt về mã mùi: http://www.codinghorror.com/blog/2006/05/code-smells.html

+0

Đối với mùi mã: có công cụ nào để phát hiện mã trùng lặp không? – gruszczy

+0

Tôi sử dụng con mắt của tôi cho điều này, không biết công cụ phần mềm cho điều đó. – dzida

Các vấn đề liên quan