Làm thế nào để đối phó với các mã phức tạp trong các dự án (rất lớn)


8

Tôi đang chuẩn bị một cuốn hồi ký về "Tại sao (một số) dự án CNTT trở nên quá phức tạp và làm thế nào để tránh nó?".

Nếu bạn đã từng gặp các dự án có mã phức tạp hoặc khó bảo trì, làm thế nào bạn quản lý để vượt qua nó?

Nếu bạn phải chọn giữa một số ứng dụng để sử dụng trong dự án của mình, ưu tiên hàng đầu của bạn trong chức năng của chúng là gì và tại sao?



1
Không có mã phức tạp trong các dự án phức tạp. Xem english.stackexchange.com/questions/20455/...

Không ai đề cập đến bản đồ mã hoặc bản đồ tư duy bởi vì họ chưa bao giờ được dạy sử dụng chúng và không có kinh nghiệm sử dụng chúng vì không có plugin hoặc phần mềm nào có thể tạo bản đồ cho luồng mã của dự án lớn của bạn. Hàng triệu dòng mã và bạn phải trải qua chúng hàng giờ để hiểu một cái gì đó nhỏ. Cách mọi người tạo ra các chương trình rất tàn bạo và mất nhiều thời gian để quản lý một dự án. Hy vọng lập trình trực quan một ngày hoặc ít nhất là các plugin tạo dòng mã tìm đường đi trong thế giới lập trình như một công cụ có giá trị.
Eftekhari

Câu trả lời:


8

Tài liệu, tài liệu, tài liệu!

Tôi làm việc với một số mã MVC khá phức tạp và hiện tại tôi chỉ thực sự hiểu cách thức hoạt động của nó, trái ngược với việc chấp nhận nó trên đức tin. Bất cứ khi nào tôi thực hiện một thay đổi mà tôi có một thời gian khó khăn để tìm ra, tôi đặt một nhận xét trong mã ở phần đó để giúp làm rõ những gì đang xảy ra. Nó có thể không giúp tôi vì nó không ở đó, nhưng nó sẽ giúp người tiếp theo. Tôi cũng muốn yêu cầu các lập trình viên khác xung quanh tôi xem xét các thay đổi của tôi để xem chúng có rõ ràng không.

Công ty của tôi có một wiki nội bộ mà chúng tôi sử dụng để ghi lại rất nhiều tác vụ meta mà chúng tôi làm, như các sự cố máy chủ ảo, truy vấn phổ biến, v.v ... Bất cứ khi nào tôi gặp phải điều gì đó tôi chưa từng làm trước đây nhưng tôi sẽ phải làm thường xuyên, tôi kiểm tra để xem nếu có wiki trên đó. Nếu không tôi sẽ làm một cái. Gần đây nhiều người đã tham gia vào nó, vì vậy tôi hy vọng nó sẽ phát triển nhanh hơn. Tôi nghĩ rằng nó thực sự giúp truyền thông về các nhiệm vụ trần tục hơn chúng ta có.


1
Hấp dẫn! Tôi tự hỏi tại sao chúng ta không có wiki như vậy trong công ty của mình, nó đã trở nên dễ dàng hơn nhiều
dagofly

+1 cho wiki nhà phát triển (miễn là nó được sao lưu tốt!)
MGOwen

6

Tôi không nghĩ bạn có thể hoàn toàn tránh được sự phức tạp theo thời gian, nhưng có nhiều cách để giảm thiểu nó:

  • Giữ mã càng sạch càng tốt mọi lúc, trong phạm vi lý do. (Theo cách "chú Bob định nghĩa" sạch ".)
  • Áp dụng đánh giá mã và / hoặc lập trình cặp để giảm tỷ lệ cược của một nhà phát triển quá mức những thứ không cần thiết.
  • Duy trì kiểm tra đơn vị đầy đủ và kiểm tra tích hợp.
  • Đầu tư vào một máy chủ tích hợp liên tục và xây dựng thường xuyên. Phát hành thường xuyên quá, nếu có thể.

Tất cả điều này phần nào phụ thuộc vào những gì dự án thực sự đòi hỏi. Đôi khi, ví dụ, sẽ có ích khi chấp nhận sự phức tạp để đổi lấy hiệu suất. Không phải tất cả các mã phức tạp nhất thiết phải là một điều xấu. Tuy nhiên, nói chung, tôi nghĩ làm theo các hướng dẫn này sẽ giúp.


3
  • nợ kỹ thuật

    tái cấu trúc để loại bỏ

  • thay đổi kinh doanh

    thích nghi và hết hạn

  • thay đổi công cụ

    công cụ mới, kiến ​​trúc cũ = sự không khớp trở kháng


chính xác, xử lý các parterns mã / kiến ​​trúc phức tạp (viết xấu) thay vì tái cấu trúc nó đang trả LÃI cho nợ kỹ thuật. khi bạn loại bỏ những điểm xấu đó, bạn sẽ trả lại PRINCIPAL cho khoản nợ kỹ thuật
từ

Cách thú vị để mô tả điều này, mong muốn một số khách hàng của tôi có thể nắm bắt được điều này. Xây dựng dựa trên mã nền tảng xấu, hacky, chỉ có nghĩa là các hack phức tạp hơn cần thiết trong tương lai, thay vì chỉ dừng lại, nhìn vào vị trí của chúng ta và làm thế nào chúng ta có thể làm cho cuộc sống dễ dàng hơn & nhanh hơn và di chuyển theo hướng đó .. trong khi ($ client_does_not_listen) { $ client_does_not_listen = Waste_time_and_money_until_client_listens (); }, coi chừng vì vòng lặp đơn giản này sẽ lãng phí vài phút cuộc sống của bạn và khiến bạn phát điên, và rõ ràng chỉ có thể bị phá vỡ bởi khách hàng .. Tôi thậm chí đã thử ném {} Catch () vô ích. .
NinjaKC

3

Ngoài ra, hãy chống lại sự cám dỗ để thêm các bản hack nhanh vì mã đã phức tạp / xấu / hacky rồi. Theo kinh nghiệm của tôi, bạn sẽ kết thúc với sự phức tạp theo cấp số nhân.


5
Chắc chắn rồi. Khi bạn thấy mình trong một cái hố, điều đầu tiên cần làm là ngừng đào.
Peter ALLenWebb
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.