Làm cách nào để xem lại mã của riêng tôi? [đóng cửa]


177

Tôi đang làm việc trên một dự án solo và phải duy trì mã của riêng mình. Thông thường việc đánh giá mã được thực hiện không phải bởi tác giả mã, vì vậy người đánh giá có thể nhìn mã bằng con mắt mới - tuy nhiên, tôi không có sự xa xỉ như vậy. Những thực hành nào tôi có thể sử dụng để xem xét hiệu quả hơn mã của riêng tôi?


34
Tôi không chắc chắn bạn có thể, ít nhất là không hiệu quả - bạn có thể tập hợp nguồn nhóm đánh giá tại codereview.stackexchange.com nếu mã của bạn không phải là độc quyền mặc dù
jk.

8
Bạn không thể xem lại mã của riêng bạn. Nếu bạn không thể có được người khác, tôi sẽ xem xét cách tốt nhất bạn có thể làm để sử dụng càng nhiều máy phân tích tĩnh bạn có thể sử dụng và bật TẤT CẢ các cảnh báo.

136
Xem lại mã của riêng bạn rất dễ dàng. Viết mã mảnh. Bước đi trong 2 tuần / tháng / năm khi bạn tiếp tục học hỏi và phát triển phần mềm khác. Quay trở lại phần đó và cố gắng hiểu những gì mã đang làm. Bạn biết bạn đã học được điều gì đó khi bạn nghĩ: "loại ngốc nào đã viết cái này?!".
Yuriy Zubarev

6
@YuriyZubarev Nhưng nếu bạn không muốn đợi hàng tuần / tháng / năm thì sao?
anatoliiG

12
Bạn có thể xem lại mã của mình trong trạng thái tâm trí thay đổi. Hoặc bạn có thể viết mã trong trạng thái tâm trí thay đổi và ủy thác đánh giá mã cho bản thân nhàm chán thông thường của bạn.
SK-logic

Câu trả lời:


92

Trước hết, hãy sử dụng các công cụ để kiểm tra càng nhiều càng tốt. Các thử nghiệm (được sao lưu với một số phạm vi bảo hiểm mã hợp lý) sẽ giúp bạn tự tin hơn về tính chính xác của mã. Các công cụ phân tích tĩnh có thể nắm bắt rất nhiều thứ thực hành tốt nhất. Tuy nhiên, sẽ luôn có những vấn đề mà bạn cần có con người để xác định và bạn sẽ không bao giờ làm tốt công việc xem xét nội dung của mình như người khác, có một số điều bạn có thể làm để giúp đỡ tuy nhiên

  • kiểm tra kiểm tra tồn tại và vượt qua (có thể có phạm vi kiểm tra mục tiêu, mặc dù bạn có thể cần phải phá vỡ điều này trong một số trường hợp nhất định, nhưng bạn sẽ có thể biện minh tại sao)
  • kiểm tra các phân tích tĩnh (cũng sẽ có các phủ định sai ở đây nhưng điều đó tốt miễn là bạn có thể biện minh tại sao sau đó tốt hơn để triệt tiêu chúng)
  • duy trì một danh sách kiểm tra những điều cần kiểm tra thêm (lý tưởng là thêm quy tắc phân tích tĩnh mới nếu có thể) đảm bảo bạn kiểm tra bất cứ điều gì SA không thể kiểm tra, ví dụ: các bình luận vẫn còn hiệu lực, là những thứ được đặt tên thích hợp (đặt tên là tất nhiên, một trong 2 vấn đề khó được biết đến với khoa học máy tính)
  • nếu một lỗi được xác định, hãy kiểm tra xem nguyên nhân có phải là hệ thống hay không và xem tại sao nó không được tìm thấy trong các thử nghiệm hoặc đánh giá trước đó

Điều này tất nhiên là hữu ích khi bạn đang xem xét mã của người khác


3
Liên quan đến danh sách kiểm tra, có một thông số kỹ thuật là siêu hữu ích.
Wayne Werner

Tôi không thích danh sách kiểm tra. Họ làm cho người đánh giá tập trung vào danh sách kiểm tra thay vì suy nghĩ vấn đề, giải pháp và nhiều thứ khác. Vì vậy, tôi đề nghị làm cho chúng tối thiểu.
Balog Pal

57

Hãy nhìn vào trang web Code Exchange Stack Exchange. Nó là để chia sẻ mã từ các dự án bạn đang làm để đánh giá ngang hàng :

Đánh giá mã Stack Exchange là một trang web câu hỏi và trả lời để tìm kiếm đánh giá ngang hàng về mã của bạn. Chúng tôi đang làm việc cùng nhau để cải thiện các kỹ năng của các lập trình viên trên toàn thế giới bằng cách lấy mã làm việc và làm cho nó tốt hơn.

Nếu bạn đang tìm kiếm phản hồi về một đoạn mã làm việc cụ thể từ dự án của bạn trong các lĩnh vực sau đây thì

  • Thực hành tốt nhất và sử dụng mẫu thiết kế
  • Vân đê bảo mật
  • Hiệu suất
  • Tính chính xác trong các trường hợp không dự đoán được

Bạn cũng có thể sử dụng các công cụ phân tích tĩnh mã để phát hiện một số vấn đề nhất định, nhưng chúng sẽ tạo ra cảnh báo sai trong một số trường hợp và không thể đề xuất cách cải thiện thiết kế.


2
Đó là một câu trả lời tuyệt vời cho câu hỏi "Làm thế nào để mã của tôi được xem xét" và nói chung là một lời khuyên tốt (tôi chắc chắn sẽ làm điều đó) - nhưng vẫn hơi bất thường.
Max Yankov

5
Tôi thường không thích câu trả lời 5 từ, nhưng câu này hoàn toàn đúng .
maple_shaft

20
Tốt nhất đây chỉ là một giải pháp hạn chế. Việc liên tục đưa toàn bộ sản lượng hàng ngày của bạn lên CR.SE là không khả thi vì các lỗ hổng lớn của nó sẽ là mã nồi hơi khá trần tục. CR.SE cũng sẽ không giúp ích nhiều cho việc phát hiện các vấn đề đòi hỏi sự hiểu biết không tầm thường về toàn bộ kiến ​​trúc ứng dụng hoặc tên miền mà ứng dụng được viết cho. Từ không chính thức, hãy xem mã đồng nghiệp khi được kiểm tra theo kiểu, các đánh giá nơi tôi xử lý các loại lỗi này có thể phổ biến hơn các lỗi phù hợp để bắt qua CR.SE.
Dan Neely

3
Giá trị thực sự trong việc xem xét là nhận được các đoạn mã mà bạn chưa bao giờ đưa ra bất kỳ vấn đề nào được phát hiện và đánh dấu là không rõ ràng cũng không tự giải thích hoặc thậm chí không chính xác về mặt logic . Bạn không thể đăng đoạn trích lên code reviewnếu bạn chưa biết đó là một vấn đề.
ZJR

3
@ZJR Chà, mã trong các dự án của bạn được xem xét 100%? Nếu có, các kỹ sư của bạn có quá nhiều thời gian rảnh. Đối với nhận xét thứ 2 của bạn, tôi không thấy có vấn đề gì khi yêu cầu đánh giá mã trong mã mà bạn cho là hoàn hảo.
BЈовић

29

Tôi đã phát triển một vài người hoàn toàn khác nhau trong đầu. Một trong số họ thậm chí không phải là một lập trình viên! Chúng tôi đang trò chuyện, thảo luận về tin tức mới nhất và xem xét mã của nhau.

Tôi thực sự khuyên bạn nên tiếp cận.

ps anh không đùa.


27
Tên tôi là Bill, Jeff, Bob và Alice và chúng tôi chấp nhận tin nhắn này.
Michael K

22

Tôi đồng ý ý kiến ​​của whit jk-s rằng đánh giá một người không hiệu quả bằng đánh giá 2 người. tuy nhiên bạn có thể cố gắng làm cho nó tốt nhất:

đánh giá ngắn hạn (ngay sau khi mã được sản xuất)

Tôi đang sử dụng git như một kho lưu trữ cục bộ. Bất cứ khi nào tôi hoàn thành một tính năng hoặc sửa lỗi, tôi chuyển các thay đổi vào kho lưu trữ.

Trước khi tôi đăng ký, tôi so sánh những gì tôi đã thay đổi trong mã của mình và suy nghĩ lại:

  • các biến / phương thức / tên lớp vẫn phản ánh những gì chúng được sử dụng cho?

xem xét dài hạn (6 tháng sau khi mã được sản xuất)

Tôi tự hỏi:

  • Tôi có thể mô tả trong một sentense những gì một lớp / phương thức / biến không?
  • Làm thế nào dễ dàng để sử dụng một lớp trong sự cô lập (làm trắng các lớp khác) hoặc viết một cách đơn giản nhất cho?

4
+1 cho đề xuất đánh giá ngắn hạn. Sử dụng git để xem tất cả các thay đổi giữa các thời điểm khác nhau thực sự có thể giúp làm sạch mã.
Leo

Tôi im lặng như ý tưởng đánh giá dài hạn, tôi nghĩ rằng có lẽ tôi đã kết hợp nó vào một đánh giá tổng thể dự án chung và có thể không xem lại tất cả mã (sau đó tôi không có xu hướng phát triển solo nhiều)
jk.

Tôi cố gắng làm một cái gì đó ở giữa: xem lại mã của tôi trong khoảng một tháng. Tôi cũng thích bài đánh giá 6 tháng.
David G

18

Đầu tiên, đặt mã của bạn sang một bên miễn là thực tế. Làm việc trên một cái gì đó khác, một số mã khác. Ngay cả sau một ngày, bạn sẽ ngạc nhiên về những gì bạn sẽ tìm thấy.

Thứ hai, tài liệu mã của bạn. Nhiều lập trình viên ghét ghi lại mã của họ, nhưng hãy tự mình ngồi xuống và viết ra tài liệu, cách sử dụng mã và cách thức hoạt động của mã. Bằng cách nhìn vào mã của bạn theo một cách khác, bạn sẽ tìm thấy sai lầm.

Người ta đã nói rằng sự thành thạo thực sự của một môn học là khả năng dạy nó cho người khác. Với tài liệu bạn đang cố gắng dạy cho người khác mã của bạn.


15

Chuyển đổi kỹ thuật sửa lỗi này thành kỹ thuật xem lại mã: http://en.wikipedia.org/wiki/Rubber_duck_debugging

Khái niệm này hoạt động kỳ diệu để đưa bạn vào một tư duy đúng đắn để làm việc thông qua mã như thể nó là mới.


3
Tôi tin rằng kỹ thuật vịt đã được phát minh độc lập tại nhiều địa điểm; đây là một câu chuyện tuyệt vời về nó: hwrnmnbsol.livejournal.com/148664.html
Russell Borogove

10
Những ngày này, con vịt cao su của tôi là mẫu câu hỏi Stack Exchange. Mong muốn viết một câu hỏi hay thực hiện các mẹo.
Kevin Reid

Lời khuyên tuyệt vời. Thậm chí còn tốt hơn khi tôi đã có một con vịt cao su trên bàn của mình (nó ở đây như là một mô hình cho một trong những nhân vật trò chơi của tôi, nhưng tôi đoán nó sẽ không bận tâm đến công việc của một nhà tư vấn CNTT).
Max Yankov

5
@KevinReid, tôi rất thích xem một số số liệu thống kê về các bài đăng SE bị bỏ rơi - đặc biệt là những bài mà mọi người đã gõ lâu hơn 60s. Tôi biết bản thân mình đã làm điều tương tự ít nhất 5 lần.
Wayne Werner

Ái chà! Tôi không biết đây là "một điều". Tôi chỉ nhận xét ở trên rằng giáo sư compi của tôi đã khuyến nghị điều này trong bài giảng đầu tiên của chúng tôi, nhiều thập kỷ trước. Anh ấy đề nghị một con mèo, nhưng tôi cho rằng vịt cao su sẽ làm. Một điều chắc chắn, nó không hoạt động nếu không có sidekick anthropomorphic :-)
Mawg

13

Ngoài các công cụ hữu ích được đề cập trong các câu trả lời khác, tôi nghĩ rằng việc sửa đổi suy nghĩ của bạn nó hữu ích khi thực hiện đánh giá mã. Điều đó thật ngớ ngẩn, nhưng tôi tự nhủ: "Tôi đang đội chiếc mũ đánh giá mã của mình". Tôi làm tương tự với QA.

Sau đó, điều quan trọng là giới hạn bản thân với suy nghĩ đó. Bạn là người đánh giá hoặc người đánh giá, bạn không thể là cả hai cùng một lúc. Vì vậy, là một người đánh giá, tôi ghi chép khách quan để chia sẻ với người được đánh giá. Tôi không thay đổi mã trong khi tôi đang xem xét nó, đó không phải là điều mà người đánh giá nên làm.

Hình thức đôi khi cảm thấy hơi vô lý, nhưng tôi thấy khi làm việc solo mà tôi thường bị kéo theo nhiều hướng. Vì vậy, tôi có thể không nhất thiết phải đóng vòng đánh giá trước khi một cái gì đó khác xuất hiện - hình thức đó (và thực sự, tôi đang nói những ghi chú thô trong công cụ wiki), rất hữu ích để đảm bảo việc đánh giá được thực hiện. Tương tự như vậy với chiếc mũ QA của tôi, tôi thêm vé cho các lỗi trước khi sửa chúng.


Tôi không nghĩ có thể xem lại mã của riêng bạn
BЈовић

4
@VJovic - Tôi không nghĩ rằng tôi thực hiện đánh giá mã tốt nhất có thể về mã của mình, nhưng tôi thường tìm thấy những thứ có thể được cải thiện. Tôi cũng đọc rất nhiều mã của người khác. Quan điểm của tôi về mã "tốt" trông như thế nào đang liên tục phát triển. Tôi xấu hổ vì mã tôi đã viết cách đây nhiều năm. Không khác gì việc chứng minh bài viết của chính bạn - nó cần sự luyện tập và nỗ lực hơn rất nhiều, nhưng điều đó là có thể. Điều quan trọng tôi không thể xem lại bản thân mình là nếu sự trừu tượng có ý nghĩa với người khác. Nhưng tôi có thể tự hỏi mình làm thế nào để làm cho một cái gì đó đơn giản hơn, điều này có cần thiết không, v.v.
Steve Jackson

@VJovic - Như ThomasOwens đã đề cập, bạn cũng có thể tạo một danh sách kiểm tra từ những sai lầm trong quá khứ và vượt qua điều đó khá khách quan. Đó là một điều tốt đẹp khác về việc chính thức về nó, bạn có thể thấy những gì bạn đã bỏ lỡ trong quá trình đánh giá và điều chỉnh quy trình của mình cho phù hợp. Tôi thấy tôi học được rất nhiều bài học bằng cách theo dõi bản thân và nỗ lực thay đổi cách tiếp cận khi được chỉ định.
Steve Jackson

3
Đi vào suy nghĩ đúng là thực sự quan trọng. Tôi thấy rằng nó thực sự hữu ích nếu tôi thực sự in ra mã và đi qua nó trên giấy bằng bút đánh dấu. Sau đó, tôi không thể thay đổi bất cứ điều gì khi xem xét (điều này ngăn tôi chuyển sang chế độ mã hóa) và có thể dễ dàng viết nguệch ngoạc các bình luận và mũi tên di chuyển trên giấy.
Leo

Điều đó có nghĩa là xem xét mã cũ, và không phải mã mới. Cho rằng bạn cần phải có kinh nghiệm, có thể mất nhiều thời gian.
BЈовић

9

Có vẻ như tình cảm phổ biến là tự kiểm tra không hiệu quả. Tôi không đồng ý và tôi nghĩ việc tự kiểm tra có thể bắt gặp rất nhiều vấn đề nếu được thực hiện kỹ lưỡng.

Dưới đây là những lời khuyên từ vài năm kinh nghiệm của tôi:

  • Có một danh sách kiểm tra thô tiện dụng. Đây là những thứ bạn muốn gắn cờ trong khi bạn đọc mã của mình.
  • Lấy mã của bạn xem lại nhé. Nghe có vẻ lãng phí, nhưng hãy lấy các bản in mà bạn có thể chú thích và lật qua lại hoặc tương đương kỹ thuật số của các tệp pdf được tô sáng độc đáo được đồng bộ hóa với iPad sau đó được đưa ra ngoại tuyến. Đi ra khỏi bàn của bạn, để tất cả những gì bạn làm là xem lại mã của bạn không bị phân tâm.
  • Làm điều đó vào sáng sớm, thay vì kết thúc một ngày làm việc. Đôi mắt tươi là tốt hơn. Trong thực tế, nó có thể giúp tránh xa mã một ngày trước khi xem lại nó một lần nữa.

Chỉ là một FYI - những hướng dẫn này là một phần của các khuyến nghị trong Oracle vài năm trước khi tôi làm việc ở đó, mục đích là để bắt lỗi "ngược dòng" trước khi mã đi vào thử nghiệm. Nó đã giúp rất nhiều, mặc dù nó được coi là công việc nhàm chán bởi rất nhiều nhà phát triển.


3
Tôi cũng đã thêm "chờ 24 giờ" để bạn không nhìn vào mã bạn vừa viết. Hãy chắc chắn rằng nó ít nhất 1 ngày tuổi để bạn nhìn thấy nó sau khi ngủ qua đêm và không chạm vào nó trong 24 giờ.
Jeff Atwood

Tôi thường sử dụng các bản in khi tôi cần xem lại hoặc đặc biệt là cấu trúc lại một số mã. Nó làm việc kỳ diệu cho tôi.
yitznewton

Giống như trong một số bộ phim, chúng tôi đã học được từ GB rằng cực khoái giả tốt hơn là không có cực khoái - tự kiểm tra tốt hơn không có gì. Có, bạn có thể đào tạo để làm cao su rất nhiều. Nhưng nó vẫn không hiệu quả so với đánh giá ngang hàng thực tế. đặc biệt là không được tiếp xúc với những người đánh giá thực sự tốt trong một thời gian để chọn phương pháp.
Balog Pal

8

Kỹ thuật Quy trình phần mềm cá nhân để đánh giá có thể hữu ích, mặc dù nó phụ thuộc vào việc có dữ liệu lịch sử về công việc và chất lượng sản phẩm của bạn.

Bạn bắt đầu với dữ liệu lịch sử về các sản phẩm công việc của bạn, cụ thể là số lượng và loại lỗi. Có nhiều phương pháp phân loại lỗi khác nhau, chẳng hạn như phương pháp này từ khóa học PSP . Bạn có thể tự phát triển, nhưng ý tưởng là bạn cần có khả năng nói ra những sai lầm bạn đang mắc phải trên đường đi.

Khi bạn biết mình đang mắc lỗi gì, bạn có thể phát triển một danh sách kiểm tra mà bạn có thể sử dụng trong quá trình đánh giá. Danh sách kiểm tra này sẽ bao gồm các lỗi hàng đầu mà bạn đang mắc phải mà bạn nghĩ rằng tốt nhất có thể bị bắt trong một đánh giá (trái ngược với việc sử dụng một số công cụ khác). Mỗi khi bạn xem xét một sản phẩm công việc, hãy sử dụng danh sách kiểm tra và tìm kiếm những lỗi hoặc lỗi đó, ghi lại chúng và sửa chúng. Thỉnh thoảng sửa lại danh sách kiểm tra này để đảm bảo bạn đang tập trung vào các vấn đề thực sự, có liên quan trong mã của bạn.

Tôi cũng sẽ khuyên bạn nên sử dụng công cụ hỗ trợ khi nó có ý nghĩa. Các công cụ phân tích tĩnh có thể giúp tìm ra một số khiếm khuyết và một số thậm chí hỗ trợ kiểm tra kiểu để thực thi tính nhất quán và kiểu mã tốt. Sử dụng IDE với hoàn thành mã và tô sáng cú pháp cũng có thể giúp bạn ngăn chặn hoặc phát hiện một số vấn đề trước khi bạn nhấp vào "xây dựng". Kiểm tra đơn vị có thể bao gồm các vấn đề logic. Và nếu dự án của bạn đủ lớn hoặc phức tạp, tích hợp liên tục có thể kết hợp tất cả những điều này thành một quy trình được chạy thường xuyên và tạo ra các báo cáo tốt đẹp cho bạn.


7

Làm việc một mình có nghĩa là trừ khi bạn tin tưởng hoàn toàn người lạ để xem xét mã thay mặt bạn, bạn sẽ cần xem cách bạn viết phần mềm của mình để duy trì chất lượng mã.

Trước hết, bạn nên có một phương tiện để đảm bảo rằng mã của bạn phù hợp với yêu cầu và thứ hai là mã của bạn sẽ tương đối dễ thay đổi nếu sau đó bạn quyết định rằng bạn có gì đó không đúng. Đề nghị của tôi sẽ là áp dụng cách tiếp cận Phát triển theo hướng Hành vi vì những lý do sau:

  1. BDD có nghĩa là viết mã kiểm tra đầu tiên. Điều này đảm bảo tất cả các mã của bạn được bao phủ bởi các bài kiểm tra.
  2. BDD về cơ bản là TDD, nhưng với trọng tâm và "ngôn ngữ" hơi khác. Điều này ngụ ý là bạn liên tục cấu trúc lại mã của bạn khi bạn đang làm việc với nó và sử dụng các thử nghiệm của bạn để đảm bảo các nỗ lực tái cấu trúc của bạn tiếp tục để đảm bảo rằng mã của bạn đáp ứng thông số kỹ thuật của sản phẩm.
  3. Ngôn ngữ BDD khuyến khích các bài kiểm tra được viết dưới dạng các câu lệnh chủ yếu mã hóa các yêu cầu như các bài kiểm tra đơn vị.

Vì vậy, ý tưởng ở đây là việc tái cấu trúc mã liên tục của bạn ngay cả sau khi bạn vượt qua các bài kiểm tra của mình, có nghĩa là bạn đang xem xét mã của chính mình một cách hiệu quả và sử dụng các bài kiểm tra đơn vị của bạn như là "cặp mắt bổ sung" để đảm bảo mã của bạn không ' t đi lạc từ các yêu cầu được mã hóa trong các bài kiểm tra. Ngoài ra, phạm vi kiểm tra cao dựa trên các yêu cầu đảm bảo bạn sẽ có thể thay đổi mã của mình trong tương lai mà không bị lỗi yêu cầu.

Vấn đề thực sự đối với bạn sẽ là liệu bạn có thể phát hiện ra các vấn đề tiềm ẩn trong mã của mình hay không, điều đó cho thấy cần phải cấu trúc lại. Có một số công cụ định hình trên thị trường có thể giúp bạn điều này, cũng như một số công cụ khác liên quan đến số liệu chất lượng mã. Chúng thường có thể cho bạn biết nhiều điều mà các đánh giá mã có thể bỏ lỡ và là điều bắt buộc khi tự mình phát triển các dự án. Tuy nhiên, trong thực tế, kinh nghiệm là chìa khóa và một khi bạn có thói quen không thương tiếc trong việc tái cấu trúc, bạn có thể sẽ trở nên quan trọng hơn nhiều đối với mã của chính mình. Nếu bạn chưa có, tôi khuyên bạn nên đọc cuốn sách Tái cấu trúc của Martin Fowler như một điểm khởi đầu và tìm kiếm một API BDD tốt mà bạn cảm thấy sẽ phù hợp với bạn ở bất kỳ ngôn ngữ nào bạn đã chọn để làm việc với.


5

Bất cứ khi nào tôi gặp tình huống tương tự như mình, tôi đã cố gắng giải quyết vấn đề "quá gần mã để kiểm tra khách quan" bằng cách sử dụng các công cụ đánh giá / số liệu mã. Không cần phải nói rằng một công cụ có thể cung cấp giá trị tương tự như một người đánh giá có kinh nghiệm, nhưng bạn vẫn có thể sử dụng chúng để xác định các khu vực có thiết kế xấu.

Một công cụ mà tôi thấy khá hữu ích trong vấn đề này là SourceMonitor . Điều này hơi đơn giản, nhưng nó mang lại ý kiến ​​tốt về mã trung cấp của bạn, chẳng hạn như số lượng phương thức trong một lớp và độ phức tạp của từng phương thức. Tôi luôn cảm thấy rằng loại thông tin này cũng quan trọng (nếu không quan trọng hơn) việc thực thi các kiểu mã hóa thông qua các công cụ như StyleCop, v.v. (rất quan trọng, nhưng thường không phải là nguồn gốc của các vấn đề lớn nhất). Sử dụng các công cụ này với các khuyến cáo thông thường: biết khi nào nên phá vỡ quy tắc ngón tay cái và thứ gì đó toàn màu xanh trong công cụ số liệu mã không tự động có chất lượng tốt.


5

Tôi không thể nói cho bạn biết số lần tôi đã giải thích điều gì đó với người đánh giá mã và bóng đèn trong đầu tôi bật lên và nói, "Này, đợi một chút." Vì vậy, tôi thường tìm thấy lỗi của mình trong đánh giá mã mà người khác không thấy. Vì vậy, bạn có thể thử điều đó, chỉ cần bắt đầu giải thích mã như thể có một người ngồi bên cạnh bạn, người đang cố gắng hiểu những gì bạn đã làm và tại sao.

Một điều khác mà tôi thấy thường xuyên trong các bài đánh giá mã là nhà phát triển đã không thực sự làm theo yêu cầu. Vì vậy, so sánh mã của bạn và những gì nó yêu cầu thực tế là một kiểm tra tốt.

Chúng tôi thường làm những việc như các gói SSIS có nhu cầu cấu trúc tương tự - để đánh giá mã Tôi đã phát triển một danh sách kiểm tra những thứ cần kiểm tra (là cấu hình đúng, đang ghi nhật ký, có sử dụng cơ sở dữ liệu siêu dữ liệu, là các tệp ở vị trí chuẩn, Vân vân.). Bạn có thể có một số điều sẽ hữu ích để kiểm tra mỗi lần trong đánh giá mã. Hãy ngồi xuống và suy nghĩ về những gì bạn sẽ đưa vào danh sách kiểm tra những điều bạn muốn đảm bảo kiểm tra đánh giá mã của bạn (Mục đầu tiên, đảm bảo yêu cầu được đáp ứng, mục tiếp theo có thể có liên quan đến bẫy và lỗi đăng nhập). Khi bạn mắc lỗi và sửa chúng, bạn có thể thêm các mục khác vào danh sách (nói một cái gì đó như, tôi sẽ chuyển sang bản ghi tiếp theo trong một vòng lặp hay tôi sẽ lặp lại vô tận cùng mục đầu tiên - nó chỉ mất một vòng lặp vô tận để dạy bạn tìm kiếm điều đó!).


1
Như Patrick Hughes gợi ý trong câu trả lời của mình, sử dụng proxy như một con vịt cao su để thay thế cho người đánh giá sẽ giúp ích cho suy nghĩ.
Russell Borogove

5

Cho nó 3 tháng, sau đó quay lại và xem mã của bạn. Tôi hứa với bạn, nếu bạn không thể tìm thấy điều gì sai trái với nó (hoặc câu hỏi ai đã viết thứ linh tinh này!) Thì bạn là một người đàn ông tốt hơn tôi!


Đó cũng là kỹ thuật của tôi. 3 tháng là đủ dài để bất cứ điều gì tôi không thể hiểu ngay lập tức cần được đơn giản hóa hoặc ghi lại tốt hơn, nhưng đủ ngắn để tôi vẫn nhớ những gì đang diễn ra đủ để dễ dàng khắc phục nó.
Eric Pohl

5

Tôi thường in ra tất cả mã của mình và ngồi trong một môi trường yên tĩnh và đọc qua nó, tôi tìm thấy rất nhiều lỗi chính tả, các vấn đề, những thứ cần cấu trúc lại, dọn dẹp bằng cách làm điều đó. Đó là một cách tự kiểm tra tốt mà tôi nghĩ mọi người nên làm.


Một bổ sung tốt cho lời khuyên ở trên, cảm ơn - mặc dù tôi nghĩ rằng một máy tính bảng hoặc một cái gì đó tương tự (với trình soạn thảo, nhưng không có môi trường phát triển) cũng sẽ hoạt động. Tôi tự hỏi ai đã hạ thấp điều đó và tại sao.
Max Yankov

4

Hồi học đại học tôi là một gia sư dạy viết. Nó chắc chắn đã cho tôi một số quan điểm về mã hóa mà tôi nghĩ rằng nhiều nhà phát triển sẽ không bao giờ nghĩ tới. Một trong những điều quan trọng nhất là đọc to mã của bạn. Nghe có vẻ không nhiều, nhưng tôi sẽ đưa ra một ví dụ hoàn hảo mà tôi nghĩ mọi người đều có thể liên quan.

Bạn đã bao giờ viết một email hoặc một tờ giấy, đọc lại nhiều lần để chắc chắn rằng nó chính xác, sau đó gửi nó, chỉ để thấy rằng bạn có một lỗi chính tả, lỗi chính tả hoặc ngữ pháp? Tôi vừa mới làm điều này ngày hôm qua khi tôi yêu cầu một khách hàng nhấn phím shit thay vì phím shift. Khi bạn đọc trong đầu - bạn thấy những gì bạn muốn thấy.

Đây là lối tắt cho các đề xuất 'chỉ cần đợi một ngày hoặc một tuần hoặc một tháng' mà những người khác đã đưa ra. Nếu bạn đọc to bạn sẽ bắt gặp những điều tương tự. Tôi không biết tại sao nó hiệu quả đến vậy, nhưng sau khi ngồi với hàng trăm sinh viên và cho họ đọc to, tất cả những gì tôi có thể nói là nó hoạt động.


+1 Điều này sẽ đi cùng với phương pháp "giải thích cho con mèo của bạn". Sử dụng các phần khác nhau trong não của bạn có thể hữu ích khi bạn không thể sử dụng đồng nghiệp.
BMitch

cộng với một cho khóa shit
Mawg

3

Hầu hết mọi người có xu hướng coi mã của họ là em bé của chính họ và nuôi họ bằng bản ngã hơn là thực tế. Cũng giống như bất kỳ bài đánh giá mã nào khác, hãy xem lại khi bạn đang xem mã của người khác. Hoàn toàn quên rằng bạn đã viết một cái gì đó. Xem lại từng dòng mã. Một danh sách kiểm tra sẽ hữu ích cho việc thẩm mỹ về việc xem xét mã riêng. Các công cụ tự động để xem xét mã có thể giúp mở rộng. Tôi đã sử dụng một số công cụ như klocwork (phần mềm thương mại), Điều này khá hữu ích trong khi bạn đang làm việc trong các dự án lớn và một số nhà phát triển đang làm việc cho nó. Luôn tập trung vào phát hiện khuyết tật hơn là sửa chữa.

Nhưng một thực tiễn tốt nhất sẽ là, xem lại bản thân và sau đó liên quan đến ít nhất hai người khác để xem xét với vai trò nổi bật.


3

Hãy xem xét việc tự mình kiểm tra Fagan - bạn sẽ phải điều chỉnh quy trình bởi vì bạn là chính mình, nhưng bạn sẽ có thể nhận được khá nhiều giá trị từ nó. Bí quyết sẽ là tìm ra "quy tắc" phù hợp để đánh giá mã của bạn với tư cách là một nhà phát triển solo, và sau đó có kỷ luật để hỏi những câu hỏi đó trong một khung tâm trí phê phán, phân tích, tàn nhẫn mỗi lần. Tôi nghi ngờ bạn có thể muốn động não 4-5 câu hỏi quan trọng của riêng bạn để bắt đầu, và sau đó phát triển nó theo thời gian. Một số người chống lại việc kiểm tra chính thức vì họ dường như rất tốn thời gian ... trước khi bạn quyết định rằng chúng quá đắt, hãy ghi nhớ tất cả các bằng chứng thống kê rằng việc kiểm tra đúng cách thực sự làm giảm thời gian dự án. Đây là một liên kết Wikipedia mà bạn có thể bắt đầu nghiên cứu thêm với:

http://en.wikipedia.org/wiki/Software_inspection

Cũng đã có một vài cuốn sách, ví dụ Google cho "Quy trình kiểm tra phần mềm" của Strauss và Ebenau.

Một lựa chọn khác là trả tiền cho ai đó để kiểm tra một dự án quan trọng - hoặc có thể thỉnh thoảng trả tiền cho họ để kiểm tra tất cả mã của bạn. Anh chàng này khá tốt, chúng tôi đã bay anh ta một số lần để đào tạo các nhà phát triển mới hơn của chúng tôi:

http://www.javaspecialists.eu/


0

Ngoài tất cả các đề xuất để xem xét mã, bạn có thể sử dụng các công cụ như PMD và findBug để thực hiện mức độ tỉnh táo đầu tiên cho mã của mình.


0

Điều này chưa thực sự được đặt trong một câu trả lời (nhưng đã được thêm vào dưới dạng một nhận xét cho câu trả lời hiện có)

Xem lại mã của bạn sau một đêm ngon giấc, ví dụ: bắt đầu ngày mới bằng cách xem lại mã mà bạn đã viết ngày hôm trước.

Điều này tất nhiên sẽ không cung cấp cho bạn trải nghiệm tập thể của một nhóm, nhưng nó sẽ cho phép bạn xem lại mã từ một quan điểm mới.

Ví dụ, nếu bạn để lại một đoạn mã với một bản hack khó chịu, bạn có thể không quá thiên về sửa nó, nếu bạn xem lại mã của mình ngay sau đó. Rốt cuộc, khi bạn bắt đầu xem xét mã của mình, bạn đã biết và đã chấp nhận sự hiện diện của bản hack này. Nhưng nếu bạn đã có một giấc ngủ ngon, có lẽ bạn sẽ có động lực hơn để tìm ra giải pháp tốt hơn.

Khi chúng ta ngủ, não không thực sự ngừng làm việc với những vấn đề chúng ta gặp phải, vì vậy bạn thực sự có thể đưa ra giải pháp ở đó, mặc dù những giải pháp đó đôi khi có thể tự hiện ra theo những cách kỳ lạ .

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.