Làm thế nào tôi có thể đánh giá liệu một dự án đặc biệt phức tạp hay tôi chỉ chậm chạp trong việc chọn nó?


16

Tôi đang đạt được ít tiến bộ trong một dự án lớn. Nguồn này rất lớn, nhiều lớp vật thể, mã macaroni, đồ thị kim cương kép có nhiều tính kế thừa, các tính năng nửa nướng bị đóng băng khi nhà văn ban đầu rời đi, và không ai biết tại sao nhiều mảnh của nó được thiết kế theo cách của chúng.

Tôi cho rằng bất kỳ lập trình viên có năng lực nào cũng sẽ gặp khó khăn khi tìm ra tất cả đủ tốt để sửa lỗi, hoàn thành công cụ nửa nướng và thêm các tính năng mới. Tuy nhiên, tôi nghi ngờ tôi sẽ đi chậm hơn một lập trình viên thông thường.

Làm cách nào để đánh giá xem nguồn đó có tệ không thường xuyên và tôi chỉ làm tốt như mọi người có thể, so với nguồn là điển hình cho một dự án như thế này và tôi chỉ chậm chạp hoặc thiếu hiểu biết?


11
Hiểu mã của người khác là một hành động đồng cảm. Quên về việc bạn sẽ đi nhanh như thế nào và cũng quên đi những gì một người ngu ngốc ****** ****** những người đã viết mã. Tìm ra nó là một bài tập linh hoạt. Giả sử nguồn này là xấu một cách bất thường, và rằng bạn đang bị quá tải, và quay trở lại làm việc và ngừng vặn vẹo trên các diễn đàn ngu ngốc này. Điều này cũng đúng với tôi ... Tôi có mã để thay đổi.
Dan Rosenstark

2
Đặc biệt quên đi "thật là một ..." khi người được nói là ông chủ, anh trai của sếp, sếp của sếp hoặc cháu trai của ông chủ, v.v.!
DarenW

2
À, cái "tại sao" còn thiếu Hãy nhớ đặt chúng vào khi bạn tìm ra chúng.

@DarenW - đó là mã spaghetti, không phải mã macaroni: D (Xin lỗi, tôi đã phải).
Jas

1
@Jas google cho mã macaroni ... có nhiều loại mì ống hơn là mì spaghetti ;-)
Jürgen A. Erhard

Câu trả lời:


6

Cách duy nhất để quyết định câu hỏi đó là có được nhiều lập trình viên hơn để giải quyết vấn đề tương tự và xem họ có tốt hơn không.

Điều này tất nhiên là hiếm khi thực tế, nhiệm vụ đã rơi vào bản thân tốt của bạn và cung cấp cho bạn đang làm tốt nhất có thể trên đó, nghiên cứu nơi kiến ​​thức của bạn làm bạn thất vọng. Phá vỡ nó ra nơi phức tạp cáo buộc bạn và giữ bất cứ ai quan tâm thông báo tốt về sự tiến bộ của bạn. Sau đó, tôi sẽ không lo lắng và giữ nó.


16

Trước hết, tôi sẽ không dành quá nhiều thời gian để lo lắng rằng bạn có thể "chậm chạp hoặc thiếu hiểu biết". Một số dự án khó nắm bắt, và các dự án lớn thường mất một thời gian để tăng tốc. Nghĩ rằng bạn "ngu ngốc" hoặc không theo kịp nhiệm vụ sẽ không giúp bạn trong bất kỳ cách nào.

Có vẻ như bạn cần trợ giúp về mã, vì vậy hãy xem xét tài nguyên của bạn. Bạn có quyền truy cập vào các lập trình viên gốc? Nếu họ có sẵn, họ có thể là nguồn tài nguyên tốt cho thông tin. Tài liệu nào có sẵn? Nếu tài liệu khan hiếm, hãy rút sổ ghi chép ra và bắt đầu tạo tài liệu cá nhân của riêng bạn.

Ý tưởng lớn ở đây là bạn nên hy vọng quá trình này sẽ mất thời gian và bạn càng mất ít thời gian để đánh bại bản thân, bạn sẽ càng có nhiều năng lượng để phân tích mã và tìm ra nó. Chúc may mắn!


5
+1 Có thể mất tới 6 tháng để thực sự bắt đầu biết một số hệ thống phức tạp đủ để thành thạo chúng. Ngay cả khi cơ sở mã là "tốt", các nhà phát triển và nhóm khác nhau có các kiểu khác nhau và đôi khi chỉ cần mất thời gian để có được vòng bi của bạn.
Ryan Hayes

3
@Ryan, và 6 tháng sau đó, bạn trở thành một phần của vấn đề :)
Stewol

@Benjol Yep, tôi đã ở đó.
Ryan Hayes

FWIW, khi tôi đã ở trên chiếc thuyền này (nhiều lần!), Tôi thấy việc nghỉ ngơi thường xuyên sẽ hữu ích hơn là chỉ ngồi và mò mẫm tìm mật mã. Khi bạn nghỉ ngơi, hãy đứng dậy và di chuyển ra khỏi máy tính. Kéo dài, nhìn ra cửa sổ, suy nghĩ về những gì bạn vừa nhìn, sau đó quay lại và xem xét thêm. YMMV, nhưng tôi thấy mình đã tiến bộ hơn nhiều khi làm điều đó. Chúc may mắn!
TMN

+1 để tạo tài liệu cá nhân của riêng bạn. Khi tôi làm công việc này, tôi thấy việc tạo ra nhiều ghi chú (trong mã, hoặc trên giấy) và vẽ rất nhiều sơ đồ (điều đó thường chỉ có ý nghĩa với tôi vào lúc đó). Một điểm cộng bổ sung cho tất cả đó là sự củng cố các khái niệm trong tâm trí của riêng bạn.
Andy Hunt

6

Đã bao giờ nhìn thấy đường cong học tập. Học tập

Lý thuyết nói rằng ban đầu cần có thời gian để bước lên. Bí quyết là vượt qua bước lên điểm nhanh. Nếu bạn đang bị mắc kẹt thường xuyên thì hãy yêu cầu sự giúp đỡ từ người quản lý của bạn hoặc ít nhất là thông báo cho anh ấy / cô ấy về những vấn đề bạn gặp phải. Miễn là bạn ổn cho lịch trình không có vấn đề.


2

Phân tích nó, từng mảnh một

Tình huống của bạn là rất phổ biến, "nắm bắt" mất thời gian như những người khác đã đề cập.

Những gì tôi tìm thấy là nếu bạn giải quyết nó "từng mảnh một" , bất kể dự án phức tạp đến đâu bạn cũng sẽ tìm ra nó. Bạn chỉ cần logic về nó.

Bắt đầu bằng một nút nói, tìm hiểu mã nguồn , đặt các điểm dừng, xem từng bước những gì đang diễn ra. Có hai điều bạn cần thực hiện:

  • Tổng quan cấp cao.
  • Các chi tiết gritty nitty thực hiện các chức năng mong muốn ở trên.
  • một khi bạn hiểu các phần của nó, yếu tố lại.

"Từng mảnh một" có thể hoạt động trên các dự án khác, nhưng điều này có rất nhiều lớp xuất phát từ các lớp khác, lớp bạn bè, con trỏ đến các bộ phận của nhau, có một số phần có thể được hiểu độc lập.
DarenW

Tôi chắc chắn đó là một mê cung phức tạp (thứ gì đó đã "phát triển" theo thời gian). Tuy nhiên, nếu bạn bắt đầu với một chức năng, bạn có nói với tôi rằng bạn không thể theo dõi nó từ đầu đến cuối không?
Đêm tối

Theo dõi luồng dữ liệu hoặc chuỗi sự kiện khi người dùng nhấp vào nút, hóa ra là không thể.
DarenW

1

Làm thế nào về việc có một cái nhìn khác: Bạn cần biết gì về mã này và bạn có cách nào để đo lường điều đó không? Ví dụ: nếu bạn đang cố gắng sửa lỗi, điều đó có thể yêu cầu một kiểu lặn khác so với khi bạn đang cố di chuyển mã từ ngôn ngữ này sang ngôn ngữ khác, ví dụ: chuyển từ VBScript sang C #. Nếu bạn đang cố gắng đưa tất cả các yêu cầu ra khỏi mã hiện tại, điều đó có thể mất một lúc mặc dù tôi nghi ngờ hầu hết mọi người sẽ có loại vấn đề đó.


Tôi thích bình luận này. Người ta phải có một mục tiêu cụ thể và làm việc để hoàn thành mục tiêu đó (và chỉ có thế). Nếu không, bạn sẽ bị lạc trong đó - Rất giống một thứ bản đồ.
NoChance

1

Trong khi học một cái gì đó mới, nhiều sinh viên sẽ nghĩ, Dam Dam, điều này thật khó với tôi. Tôi tự hỏi nếu tôi ngu ngốc.
Trước khi đi xa hơn, hãy tự đảm bảo rằng bạn không ngu ngốc và một số điều là khó khăn. Giáo dục

Ông Aaron Hillegass với những từ thông minh.

Bạn không ngu ngốc, bạn không chậm chạp và bạn không bị hạ thấp. Tôi ở trong cùng một chiếc thuyền, tôi đã tham gia một vai trò mới và cơ sở mã hiện tại là vô cùng lớn và có dấu hiệu bị phát triển quá mức, tôi phải mất hàng tuần để đến một điểm mà tôi cảm thấy như mình thậm chí còn nhận được gần với tốc độ tối đa. Hãy tưởng tượng dự án giống như học một ngôn ngữ hoàn toàn mới, nó không xảy ra trong một đêm, nhưng cần sự kiên nhẫn.

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.