Sự phát triển trong các tiêu chuẩn mã hóa, làm thế nào để bạn đối phó với chúng?


12

Làm thế nào để bạn đối phó với sự tiến hóa trong hướng dẫn tiêu chuẩn / phong cách mã hóa trong một dự án cho cơ sở mã hiện có? Giả sử ai đó trong nhóm của bạn phát hiện ra cách khởi tạo đối tượng tốt hơn bằng ngôn ngữ lập trình. Không phải cách cũ là xấu hay lỗi, chỉ là cách mới ít dài dòng hơn và cảm thấy thanh lịch hơn nhiều. Và tất cả các thành viên trong nhóm thực sự thích nó. Bạn sẽ thay đổi tất cả các mã hiện hành?

Giả sử cơ sở mã của bạn có khoảng hơn 500.000 dòng mã. Bạn vẫn muốn thay đổi tất cả các mã hiện có? Hay bạn chỉ để mã mới tuân thủ tiêu chuẩn mới? Về cơ bản mất tính nhất quán?

Làm thế nào để bạn đối phó với một sự tiến hóa trong các tiêu chuẩn mã hóa trong dự án của bạn?

Câu trả lời:


16

Tiêu chuẩn mã hóa tồn tại để làm cho các nhóm làm việc hiệu quả hơn. Về lý thuyết, họ làm cho mã dễ hiểu hơn, thay đổi và kiểm tra. Trong thực tế, họ có thể tạo ra một lượng siêu công việc nguy hiểm; các nhóm viết lại mã hiện có nhiều lần để theo đuổi giải pháp chính xác và thanh lịch nhất. Thật không may, vấn đề meta-work dường như tồi tệ hơn đối với các đội nơi mọi người tham gia, đam mê và bị ám ảnh bởi việc làm đúng.

Là một nhà tư vấn chuyển từ dự án này sang dự án khác, tôi đã thấy rằng kỷ luật tuyệt vời với tiêu chuẩn mã hóa cứng nhắc đóng góp ít hơn nhiều vào thành công của dự án so với các nhà phát triển xuất sắc quan tâm đến kết quả. Phong cách mã hóa không nhất quán là một phiền toái nhỏ đối với các nhà phát triển tuyệt vời. Họ làm việc có hoặc không có tính nhất quán. Cấp, nếu họ gặp mã không nhất quán, họ sẽ hỏi về hiện tạitiêu chuẩn và gắn bó với nó. Tuy nhiên, họ sẽ không nhấn mạnh vào việc cập nhật mọi dòng mã trong dự án theo tiêu chuẩn hiện tại. Họ không nhấn mạnh bởi vì họ đã thấy những thực tiễn tốt nhất đến và đi. Cách làm chính xác của một cái gì đó hôm nay không giống như cách làm đúng vào ngày mai. Nếu đúng như vậy, các tiêu chuẩn mã hóa của bạn sẽ không phát triển. Vì vậy, nếu cách làm chính xác của một cái gì đó thay đổi theo thời gian, có thể định nghĩa "chính xác" của chúng ta bị phá vỡ.

Điều đó không có nghĩa là các tiêu chuẩn không quan trọng. Chỉ cần nhớ rằng mục tiêu của tiêu chuẩn là năng suất. Nếu bạn không thể đảm bảo viết lại theo một tiêu chuẩn mới sẽ tự trả tiền trong thời gian dài, thì đừng lãng phí thời gian cho nó. Việc chứng minh một tiêu chuẩn mới trong mã mới hoặc tái cấu trúc dễ dàng hơn nhiều. Elegance là mát mẻ nhưng nó không giống như kết quả.


5

Những gì chúng tôi làm là tiến hóa (không phải cách mạng) cho cơ sở mã, chúng tôi sẽ sử dụng tiêu chuẩn được cập nhật khi;

  • mã mới được viết
  • mã được tái cấu trúc
  • lỗi đã được sửa
  • các phần mới được thêm vào một lớp hiện có

Điều quan trọng là cơ sở mã của bạn phải nhất quán, vì vậy nếu thay đổi mở ra khả năng nhầm lẫn giữa mã kiểu "cũ" và "mới", tốt hơn là nên dành bản cập nhật tiêu chuẩn mã hóa của bạn cho dự án tiếp theo.


3

Trước hết, tôi sẽ không bao gồm "các thực tiễn tốt nhất" như vậy trong (phần bắt buộc của) hướng dẫn mã hóa. Chúng có thể được đề cập, ví dụ như trong một phụ lục, như một ví dụ về cách bạn có thể làm một cái gì đó, nhưng không phải là nó nên được thực hiện theo cách đó.

Điều đó nói rằng, có hai trường hợp để xem xét thay đổi đối với một tiêu chuẩn mã hóa:

  1. Các thay đổi không ảnh hưởng đến khả năng đọc, ngay cả khi mã cũ và mã mới được trộn lẫn mà không cập nhật mã cũ.
    Những thay đổi này có thể được thêm vào tiêu chuẩn mã hóa ngay lập tức và phải được xem xét có hiệu lực đối với tất cả các mã mới và mã sửa đổi. Mã cũ nên được điều chỉnh tăng dần khi thời gian cho phép và khi những thay đổi trong khu vực đó đang được thực hiện.
    Một ví dụ về loại thay đổi này, mà tôi thực sự gặp phải, là một thay đổi trong tuyên bố bản quyền ở đầu mỗi tệp.
  2. Những thay đổi làm giảm khả năng đọc nếu mã cũ và mới được trộn lẫn.
    Những thay đổi này nên được áp dụng cho toàn bộ cơ sở mã hóa trong một lần hoặc nên được xem xét lại nếu chúng thực sự cần thiết.
    Một ví dụ về loại thay đổi này là thay đổi vị trí thụt hoặc nẹp.

2

Điều này thực sự phải phụ thuộc vào loại sản phẩm bạn đang tạo:

  • Đối với một ứng dụng thương mại được viết trong nhà và bạn đang triển khai cho khách hàng, mục tiêu chính của bạn phải là doanh thu. Miễn là mã cũ không có lỗi thì việc các tiêu chuẩn mã hóa mới phát triển không thành vấn đề, bạn nên tập trung vào việc thêm các tính năng mới vào sản phẩm của mình và tạo doanh thu. Bằng mọi cách, điều chỉnh các tiêu chuẩn mã hóa mới cho mã mới, nhưng thay đổi tất cả các mã hiện có sẽ gây lãng phí thời gian.
  • Nếu bạn đang phát triển một sản phẩm mã nguồn mở, hoặc một sản phẩm mà nhiều công ty (thậm chí có khách hàng của bạn) sẽ thấy và làm việc trên nguồn, sau đó mã dễ đọc trở nên nhiều quan trọng hơn và trong trường hợp này, một quyết định hợp lý nên được thực hiện tùy thuộc vào chính xác cần thay đổi bao nhiêu mã và lợi ích sẽ có trong thời gian dài. Mặc dù tất cả chúng ta đều thích mã đẹp, nhưng thực tế là đối với một công ty thương mại xử lý nguồn đóng, liên tục điều chỉnh các tiêu chuẩn mới sẽ có nghĩa là bạn sẽ mất doanh thu trong thời gian dài.

1
Tôi sẽ thêm rằng nó cũng phụ thuộc vào phạm vi kiểm tra của bạn. Tôi đã giới thiệu lại một số dòng 10.000+ khá lớn với độ tin cậy cao vì chức năng quan trọng được bao phủ bởi các bài kiểm tra đơn vị và tích hợp.
Martijn Verburg

@Martijn - Điểm tốt, điều này cũng rất đúng.
mrwooster

0

Cá nhân, tôi sẽ chọn giữ các mã cũ như cũ và tuân theo các tiêu chuẩn mới từ bất cứ điều gì bạn làm mới. Cụ thể hơn, tôi sẽ không sử dụng tiêu chuẩn kép trong old.c. Nhưng nếu tôi sẽ tạo new.c, nó có thể sử dụng các cú pháp mới hơn, được tinh chỉnh :)


Bạn có thể giải thích lý do đằng sau sự lựa chọn đó?
Ward Bekker

Uh ... bạn có thể nói, đó là một trực giác. Dựa trên những gì mrwooster đã nói ở trên, nếu đó là một ứng dụng thương mại, tôi sẽ không lãng phí thời gian của mình chỉ để thực hiện một số thay đổi về mỹ phẩm. (Hãy nhớ rằng, chức năng vẫn giữ nguyên). Hơn nữa, nói rằng, sự thay đổi không chỉ là cách bạn khởi tạo các đối tượng. Nhưng, giả sử, cách bạn truy cập các phương thức của nó. Sau đó, rất nhiều mã cần phải được sửa chữa, với một cơ hội đẹp trai để giới thiệu các lỗi. Vì vậy, tốt hơn để cho ông già vẫn ở đó.
Barun
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.