Làm cách nào để đánh giá chất lượng mã khi bạn không quen với ngôn ngữ này? [đóng cửa]


10

Theo giả thuyết, nếu tôi phỏng vấn ai đó cho vị trí nhà phát triển PHP mới khi kinh nghiệm của tôi ở .NET, làm thế nào tôi có thể xác định xem mẫu mã họ đã cung cấp cho tôi có hiệu quả và chất lượng tốt không?

Nói cách khác, cách tốt nhất để đánh giá mã của lập trình viên là gì nếu bạn không quen với ngôn ngữ này?


1
Tôi ghét phải chia sẻ nó với bạn, nhưng bạn không :-) Bao gồm một người nào đó trong cuộc phỏng vấn biết ngôn ngữ hoặc tự học nó.
Joppe

2
Đây là lý do tại sao phỏng vấn là một nỗ lực của nhóm. Bạn đánh giá rằng những gì bạn có thể đánh giá và trì hoãn loại công cụ này cho một số lãnh đạo nhóm kỹ thuật quen thuộc với nó.
Kaz

Đối với tôi, số liệu tốt nhất là kích thước của các hàm (bao gồm cả độ sâu lồng nhau) theo sau là kích thước của các lớp / tệp.
m3th0dman

Câu trả lời:


20

Làm cách nào để xác định xem mẫu mã họ đã cung cấp cho tôi có hiệu quả và chất lượng tốt không?

Những điều bạn sẽ không thể đánh giá là sử dụng chính xác các thành ngữ ngôn ngữ và sử dụng thư viện. Vì vậy, đây không phải là những điều bạn nên cố gắng xem xét.

Những gì bạn có thể đánh giá là:

  • Mã cấu trúc như thế nào
  • Các biến được đặt tên tốt (bạn có thể hiểu ý nghĩa của mọi thứ)
  • Các hàm / đơn vị mã được cấu thành tốt
  • Tính nhất quán trong cơ sở mã

Các điểm trên (mặc dù không đầy đủ) sẽ cho biết mã có mùi hay không và nên là thứ mà một lập trình viên có kinh nghiệm có thể xác định là tốt hay xấu.

Nói tóm lại - hãy tìm những thứ nên chỉ ra mã tốt bất kể ngôn ngữ.


5
Một điều quan trọng khác: "Các ý kiến ​​có rõ ràng, có ý nghĩa và dễ hiểu không?" Bạn có thể tìm hiểu một chút về những gì một đoạn mã làm từ các bình luận, ngay cả khi bạn ít tiếp xúc với ngôn ngữ?
Thất vọngWithFormsDesigner

2
@FrustratedWithFormsDesigner - Nhận xét? Đó là những gì? Nghiêm túc mà nói, mã nên tự nhận xét. Nhận xét chỉ nên có mặt để giải thích lý do hoặc đưa ra lý do cho mã xấu.
Oded

6
Tôi hết sức thận trọng: cuối cùng rất dễ lựa chọn trên cơ sở người viết mã giống như bạn đã quen, có thể sử dụng ngôn ngữ đó tương đối kém.
Jerry Coffin

@FrustratedWithFormsDesigner Oded có lẽ nghĩ rằng bạn nên đọc Elegantcode này.com / 2010/04/18 / Mark
Joel

4

Để họ lưu đồ hoặc dẫn bạn đi qua nó như một phần của cuộc phỏng vấn. Bạn có lý do hoàn hảo để hỏi và nó cho biết một chút công bằng về cách họ nghĩ để xem cách họ giải thích.

Nếu họ sẽ chuyển sang ngôn ngữ ưa thích của bạn, bạn biết rằng bạn có rất nhiều cố vấn sắp tới, vì vậy bạn nên tìm kiếm các kỹ năng logic / lý luận tốt hơn tất cả.

Nếu họ sẽ tiếp tục làm việc với ngôn ngữ ưa thích của bạn, bạn sẽ phải chấp nhận rằng họ sẽ tự mình quản lý các chi tiết cụ thể của ngôn ngữ tốt hơn cho đến khi có người khác tăng tốc, vì vậy tất cả những gì bạn sẽ phải tương tác với là bên thiết kế ở đó là tốt.


1
Nếu ứng viên có thể giải thích mã của họ sao cho mục đích và mục đích đằng sau nó rõ ràng và trực quan, tổ chức và cấu trúc chung có vẻ hợp lý, họ có thể nắm bắt hợp lý những gì mã đại diện. Và có khả năng có thể lặp lại một sinh sản sạch tương tự. Ngay cả khi các phần cụ thể được giải thích ít nhất là 'bởi vì đó là những gì một tài liệu giới thiệu cụ thể đã chỉ ra cách thực hiện', trong khi đặt tên cho tài liệu giới thiệu, ít nhất bạn cũng có một đại diện khiêm tốn về khả năng không chỉ 'mã' mà còn tìm thấy và áp dụng các giải pháp cho các vấn đề mà họ không thường xuyên phải đối mặt.
JustinC

1

Mã đầu xương / rõ ràng là sai mã sang một bên, hiệu quả sẽ phụ thuộc phần lớn vào trình biên dịch / trình thông dịch của ngôn ngữ được đề cập và bạn sẽ không thực sự có thể nhận ra điều đó từ một mẫu mã. Một mẫu mã có thể được viết đẹp và thanh lịch như đồ sứ tốt trên do doa nhưng chạy chậm nếu được biên dịch / diễn giải kém.

Bạn sẽ không thể đánh giá việc sử dụng thành ngữ các tính năng ngôn ngữ / đường cú pháp / quy ước mà không có sự quen thuộc.

Bạn sẽ có thể nói nếu nó được viết tốt nói chung dựa trên những cân nhắc phổ quát như sự gọn gàng, dòng kiểm soát, đặt tên biến, thứ tự các hoạt động, v.v.

Tuy nhiên, thực tế hơn, nếu bạn biết ngôn ngữ nào sẽ diễn ra trong quá trình, bạn có thể thử tìm một hoặc nhiều hướng dẫn về phong cách cho ngôn ngữ đó, đi đến cửa hàng sách và lật một vài cuốn sách cho ngôn ngữ đó và đọc lướt các ví dụ mã tìm kiếm các chất tương tự với thứ bạn quen thuộc với ngôn ngữ bạn chọn, kiểm tra một hoặc nhiều dự án nguồn mở sử dụng ngôn ngữ đó, v.v.

Nếu bạn có thời gian và nếu không có rào cản về chi phí, bạn thậm chí có thể đi xa hơn để thiết lập môi trường phát triển cho ngôn ngữ đó và tạo ra một ứng dụng Hello World, viết mã kata hoặc viết một ứng dụng nhỏ đơn giản trong đó. Bạn sẽ phát triển một khung tham chiếu thô sơ khá nhanh chóng và không chỉ điều này sẽ giúp bạn hiểu rõ hơn về mục đích cụ thể của việc xem xét mã được đề cập, bạn có thể bị ngôn ngữ ép buộc và phân nhánh ra một chút.


1

Bất kể ngôn ngữ:

  • Có sự phân tách rõ ràng về mối quan tâm, việc sử dụng các lớp phù hợp (đối với các ngôn ngữ OO) hoặc bất kỳ dấu hiệu nào cho thấy các nỗ lực cố tình phá mã thành các "khối" có thể sử dụng lại được không?
  • Tương tự, bất kỳ bằng chứng của thử nghiệm - thử nghiệm đơn vị hoặc cách khác?
  • Nếu đó là mã sản xuất, nó có rải đầy các chuỗi gỡ lỗi có thể gợi ý sự tách biệt nhỏ giữa phát triển và triển khai không?
  • Mã có tuân theo bất kỳ loại quy ước đặt tên nào không (dù bạn có thích quy ước đó hay không là không quan trọng!)?
  • Nếu bạn có tệp, chứ không phải là bản in, thì mọi chức năng / lớp trong tệp có liên quan đến (vì vậy nếu đó là tệp có tên data_access_layer , bằng chứng về các chức năng xử lý hình ảnh có thể sẽ không đúng chỗ).
  • Bất kỳ dấu hiệu nào cho thấy sự thiếu tin tưởng đối với đầu vào của người dùng cũng tốt, đặc biệt là đối với các ngôn ngữ dựa trên web như PHP. Vì vậy, các cấu trúc như input = esc (input) ít nhất cho bạn thấy rằng họ nhận thức được vấn đề.
  • Nhận xét hoặc mã tự mô tả luôn luôn tốt. Có một số trường phái suy nghĩ về số lượng bình luận nên có mặt, nhưng hoàn toàn không có ý kiến
  • Với chi phí là hoài nghi, tôi cũng sẽ google một số mã trước khi phỏng vấn. Nó có thể dễ dàng là một công việc sao chép và dán, đáng buồn.

Không nói rằng bất kỳ mã nào không có tất cả các mã này đều tự động kém, nhưng tôi coi đây là các chỉ số của một người đã phản ánh và xem xét thực tiễn của họ.

Tuy nhiên, đối với tất cả các chỉ số này, bạn nên hỏi lý do căn bản của mã là như thế nào. Có thể có một lý do tốt, cụ thể về ngôn ngữ cho các lựa chọn của họ ... và sau đó, google là bạn của bạn khi họ và các ứng cử viên khác biến mất, vì bạn có thể kiểm tra xem những gì họ nói nghe có vẻ hợp lý không ...!

Chúc may mắn, vì tuyển dụng người giỏi là một trong những vai trò quan trọng nhất trong tổ chức của bạn;)


Nhìn nhận lại, điều này trùng lặp phần lớn những gì @Oded (và các bình luận) đã nói.
frackham

0

Bạn nên hỏi ai đó biết ngôn ngữ trong câu hỏi để đến phỏng vấn hoặc xem mẫu. Một người như vậy nhiều khả năng sẽ tìm thấy những điểm xấu nếu có.

Là ứng cử viên sẽ được làm việc trong một nhóm? Hãy để các thành viên trong nhóm gặp anh ấy và đặt câu hỏi về kỹ năng của anh ấy.


-2

Hỏi họ về những hạn chế mà họ gặp phải trong khi sử dụng ngôn ngữ. Yêu cầu họ chỉ cho bạn một truy vấn SQL đơn giản. Bất kỳ Php dev nào đáng để chơi khăm đều có thể tạo ra một truy vấn chọn / cập nhật / xóa cơ bản mà không cần quá nhiều nỗ lực.

đôi

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.