Sau khi viết mã, tại sao tôi cảm thấy rằng tôi sẽ viết tốt hơn sau một thời gian? [đóng cửa]


12

Tôi đã làm việc trong dự án sở thích của mình trong C ++ được hơn 2 năm. Bất cứ khi nào tôi viết một mô-đun / chức năng, tôi mã hóa nó với rất nhiều suy nghĩ. Bây giờ nhìn thấy vấn đề,

do {
  --> write the code in module 'X' and test it
  --> ... forget for sometime ...
  --> revisit the same piece of code (due to some requirement)
  --> feel that "This isn't written nicely; could have been better"
} while(true);

Đây 'X'là bất kỳ mô-đun nào (có thể là nhỏ / lớn / trung bình). Tôi đang quan sát điều đó, điều này xảy ra bất kể tôi đã nỗ lực bao nhiêu trong khi viết mã. Vì vậy, chủ yếu, tôi kiềm chế bản thân mình để xem một mã làm việc. :)

Đây có phải là một cảm giác chung cho nhiều người? Là ngôn ngữ cụ thể hiện tượng này? (Bởi vì trong C ++, người ta có thể viết cùng một thứ theo những cách khác nhau).

Tôi nên làm gì, nếu tôi có cảm giác bao thanh toán lại này cho mã sản xuất trong thế giới thực, khi thay đổi mã làm việc sẽ không mang lại cho tôi nhiều giải thưởng mà thay vào đó, nó có thể gây rắc rối nếu thất bại.


14
Tôi sẽ quan tâm hơn nếu tôi không bao giờ tìm thấy vấn đề với mã cũ của mình. Điều này cho thấy kỹ năng của bạn đang phát triển.
Darren Young

1
Nếu bạn nhìn vào mã cũ của bạn và không nghĩ "chết tiệt, tại sao tôi lại không làm theo cách này ?!", Thì bạn đã không học đủ từ khi bạn viết mã.
sbi

Câu trả lời:


17

Hiện tượng này rất phổ biến và không cụ thể đối với các lập trình viên. Bất cứ khi nào bạn thực hiện một nhiệm vụ trí tuệ, bạn sẽ nhận thấy hàng tá địa điểm mà bạn có thể đã được cải thiện - sau khi bạn có một khoảng cách. Hãy hỏi bất kỳ người đàn ông khôn ngoan nào đã từng viết luận văn và họ sẽ nói với bạn một điều: "Đừng nhìn vào nó. Bạn sẽ thấy một lỗi ngay từ cái nhìn đầu tiên."

Về cơ bản có hai điều cần tránh vòng lặp tái cấu trúc:

  1. Trong khi viết và thiết kế, hãy cố gắng có được viễn cảnh xa càng sớm càng tốt. Có một đồng nghiệp nhìn vào thiết kế / mã của bạn. Nhìn lại sau một ngày cuối tuần. Nhìn vào nó khi say hoặc cao (nhưng hãy cẩn thận: đừng thay đổi bất cứ điều gì cho đến khi tỉnh táo).
  2. Sống với sự không hoàn hảo. Nếu nó chỉ đơn giản là không đẹp, nhưng hoạt động tốt (đọc: làm tốt công việc đáp ứng tất cả các yêu cầu, bao gồm khả năng mở rộng và dễ đọc), hãy để nó đứng vững và hài lòng với công việc tốt bạn đã làm, không phấn đấu cho công việc hoàn hảo.

Đọc này. vi.wikipedia.org/wiki/Buyer's_remorse Rất hữu ích.
S.Lott

3

Tái cấu trúc liên tục là con đường để đi. Thay đổi mã làm việc sẽ không gây ra vấn đề và nó nên được khuyến khích nếu được thực hiện đúng cách. Nếu mã của bạn được kiểm tra đơn vị đầy đủ, bạn có thể tự tin xác định lại mã của mình.

Điều duy nhất bạn có thể dự đoán về mã sản xuất trong thế giới thực là, đó là S change thay đổi. Đừng cố đoán xem nó sẽ thay đổi như thế nào, bạn sẽ học những kỹ thuật mới nào vào ngày mai. Nói tóm lại, đừng cố gắng làm cho mã của bạn "hoàn hảo". Chỉ cần làm cho nó tốt như bạn có thể với kiến ​​thức hiện tại của bạn. Ngoài ra, hãy chắc chắn rằng mã của bạn được kiểm tra kỹ lưỡng và có thể mở rộng.

Tôi dành 20% -30% thời gian để tái cấu trúc mã hiện có. Tôi làm việc trong một công ty công nghệ và "ban quản lý" chưa bao giờ phàn nàn về việc thay đổi mã hiện có. Tuy nhiên, tôi nhận ra rằng đây có thể là một vấn đề ở một số công ty. Martin Fowler thậm chí có một phần về nó trong cuốn sách tái cấu trúc của mình .

Tóm lại, đó là một cảm giác phổ biến trong kinh nghiệm của tôi, nhưng nó không phải là một tiêu cực.


2

Mỗi mô-đun / chức năng được sinh ra và phát triển trong một thế giới ưu tiên. Một khi nó đủ để phục vụ các mục tiêu của thế giới bên ngoài, nó thường bị đình trệ. Tất cả cuối cùng của nó là giàn giáo phục vụ cho mục đích cao hơn. Vâng, chúng ta cần phải bị ám ảnh về mã, và vâng, điều đó có thể khiến chúng ta trì trệ quá. Có lẽ nó sẽ là một động thái tốt để bạn chuyển sự tập trung của mình ra khỏi chính mã một chút và suy ngẫm nhiều hơn về các quy trình diễn ra bên trong bạn, nhà sản xuất mã.


2

Đây có phải là một cảm giác chung cho nhiều người? Là ngôn ngữ cụ thể hiện tượng này?

Điều đó có nghĩa là bạn đang mở rộng kiến ​​thức và quan điểm của mình.

Nếu bạn không có nhiệm vụ ưu tiên cao hơn, bạn nên luôn quay lại và cải thiện mã của mình.


"... quay lại và cải thiện mã của bạn." - ai sẽ trả tiền cho bạn để làm điều này? Khi mã của bạn hoạt động, di chuyển trên. Khi bạn học hỏi và phát triển như một lập trình viên, bạn sẽ LUÔN tìm ra cách làm tốt hơn và cảm thấy rằng những nỗ lực trước đó của bạn có thể được cải thiện. Chống lại sự thôi thúc làm bất cứ điều gì về điều đó - quay trở lại và cải thiện mã cũ của bạn chủ yếu là một sự lãng phí thời gian tối cao.
Dawood nói phục hồi Monica

1
@David Wallace - Nếu không ai phải quay lại mã cũ, chúng tôi sẽ không làm ầm ĩ về nó.
JeffO

1
"Khi mã của bạn hoạt động, hãy tiếp tục" - bạn sẽ không tin loại lỗi nào tôi đã thấy trong mã sản xuất, bởi vì mã đã hoạt động;)
BЈовић

@Jeff O - điều đó rất đúng. Nếu tôi sẽ duy trì mã cũ, tôi sẽ xem xét sửa nó, cho dù đó là mã của tôi hay của người khác. Nhưng trừ khi có một dự án với một số đô la đằng sau nó đòi hỏi phải duy trì mã đó, thì không có cách nào để biện minh cho thời gian dọn dẹp nó. Trừ khi đó là lỗi, tất nhiên.
Dawood nói phục hồi Monica

@VJovic - nếu có lỗi trong sản xuất, đó là do mã DIDN không hoạt động. Tôi nghĩ rằng OP đã nói về mã hoạt động chính xác, nhưng là xấu.
Dawood nói phục hồi Monica

2

Tôi luôn luôn nghĩ rằng một người học lớp toán để củng cố các kỹ năng của họ trong lớp trước. Đại số có vẻ khó, cho đến khi bạn lấy Đại số II; Sau đó, các kỹ năng bạn học được trong Đại số trở nên hữu ích. Đó là điều tương tự trong lập trình, viết, chế biến gỗ, hoặc bất cứ điều gì khác.

Khi tham gia một khóa học lập trình, bạn đã học về If-then-other, việc này đã làm rất nhiều thứ cho đến khi bạn học về các công tắc. Khi bạn đang học bất cứ điều gì mới, bạn sẽ trải qua quá trình này, mọi người đều làm.


2

Tôi có cùng cảm giác bất cứ khi nào tôi đọc hầu hết các mã được viết bởi chính mình trong quá khứ. Đây là một điều tốt, nó có nghĩa là kiến ​​thức và phong cách mã hóa của bạn đã được cải thiện qua nhiều năm.

Đối với việc thay đổi mã sản xuất đang hoạt động, đó là một điều không nên trừ khi bạn phát hiện ra các lỗi rõ ràng. Không chỉ bởi vì nó có thể lãng phí thời gian, mà quan trọng hơn là vì phần lớn các lỗi phần mềm được tạo ra là loại được đưa ra khi thay đổi được thực hiện cho các chương trình được phát hành. Theo thống kê, có khả năng bạn sẽ giới thiệu các lỗi không lường trước được. Nếu nó không bị hỏng, đừng sửa nó.


1

Phát triển một ứng dụng có nghĩa là cải thiện nó và làm cho nó tốt hơn; đây là một quá trình liên tục để trong khi bạn lập trình, bạn sẽ có thêm kinh nghiệm và kiến ​​thức. Điều đó cũng có nghĩa là bạn cũng đang phát triển, vì vậy khi bạn nhìn lại mã cũ của mình, bạn có thể thấy nó có thể được cải thiện.

Nếu bạn không có cảm giác này, điều đó có nghĩa là một trong hai điều sau:

  1. Bạn vẫn ở cùng một cấp độ kỹ năng.
  2. Mã của bạn đã hoàn hảo (không chắc).
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.