Mẫu mã của tôi nên như thế nào? [đóng cửa]


24

Tôi vừa có một cuộc phỏng vấn qua điện thoại khá tốt (đối với vị trí liên quan đến CakePHP, không phải là điều đặc biệt quan trọng đối với câu hỏi). Người phỏng vấn dường như rất ấn tượng với lý lịch và tính cách của tôi. Tuy nhiên, cuối cùng, anh ấy đã yêu cầu tôi gửi email cho anh ấy một mẫu mã từ dự án công việc hiện tại của tôi, "để kiểm tra xem bạn không bí mật là một lập trình viên khủng khiếp, ha ha!"

Tôi không quá lo lắng rằng mã của tôi không thể tự đứng bằng hai chân, nhưng tôi rất là một lập trình viên trung gian hơn là một chuyên gia. Những cạm bẫy rõ ràng nào tôi nên đảm bảo rằng mẫu mã của tôi không rơi vào, trong trường hợp họ loại trừ tôi ngay tại chỗ? Thứ hai, và đây có lẽ là phần khó hơn của câu hỏi để trả lời, những tính năng nào trong một mẫu mã sẽ ấn tượng đến mức chúng sẽ ngay lập tức khiến bạn nghiêng về phía lập trình viên nhiều hơn ?

Tất cả các ý tưởng hoặc đề xuất hoan nghênh!


2
Có bất kỳ yêu cầu về mẫu mã để gửi? Có vẻ khá vô nghĩa, bất cứ ai cũng có thể sao chép / dán mã đẹp từ web. Trừ khi họ đang cố gắng loại bỏ những người thậm chí không thể hiểu đúng ...
Thất vọngWithFormsDesigner

5
Chỉ với những cú đá, bạn có thể gửi một tập lệnh Perl có hình dạng của tên anh ấy / cô ấy ...;)
Thất vọngWithFormsDesigner

2
@thesunneversets: Vì vậy, tôi đoán mã nguồn tuyệt đẹp từ các dự án cá nhân của bạn đã bị loại bỏ ...;) Nghiêm túc mà nói, điều này thể dễ dàng bị làm giả. Và nhà tuyển dụng hiện tại của bạn có ổn không khi bạn đưa ra một mẫu đại diện cho mã nguồn của bạn? Có ổn không nếu một số mã được viết bởi một đồng nghiệp (có thể tệp bị qua lại giữa một số người theo thời gian)?
Thất vọngWithFormsDesigner

2
Ý nghĩa đạo đức là một chút đáng lo ngại ... nhưng chỉ một chút. Tôi không nghĩ rằng tôi đang rơi vào một cái bẫy gián điệp công nghiệp. Đối với đồng nghiệp, than ôi chỉ có hai người đã chạm tay vào cơ sở mã này và mã của anh chàng kia là một mớ hỗn độn lớn, vì vậy tôi tự mình làm khá nhiều! :)
thesunneversets 23/211

4
@thesunneversets, cung cấp mã nhà tuyển dụng của bạn không chỉ là phi đạo đức, ở nhiều nơi, đó là bất hợp pháp. Đừng làm thế.
HLGEM

Câu trả lời:


17

Tôi muốn xem mã sạch :

Mã sạch : phần mềm được định dạng chính xác và theo cách có tổ chức để một lập trình viên khác có thể dễ dàng đọc hoặc sửa đổi nó.

Điêu đo co nghia la:

  • Chức năng - Một số bit đơn giản của chức năng không tầm thường (một loạt các getters / setters sẽ không hiển thị rằng bạn biết bất cứ điều gì)
  • Phong cách nhất quán, sạch sẽ - Kiểu phổ biến hoặc ít nhất là phổ biến , thụt lề, khoảng cách và khung
  • Đặt tên tốt - Tên chất lượng - không sử dụng itrừ khi đó là giá trị gia tăng duy nhất. Đừng sử dụng tên biến vô nghĩa.
  • Các thuộc tính khác của Mã sạch - Thực hành tốt về kiểm tra lỗi, điều kiện, vòng lặp, phương pháp tiện lợi hoặc phương thức tiện ích và phân tách mối quan tâm tốt (giữa các phương thức). Và đây là thời điểm tốt để được KHÔ 100% - không lặp lại!

Bạn muốn gửi cho họ một cái gì đó đủ phức tạp để trở nên thú vị nhưng đủ sạch để một nhà phát triển giỏi có thể hiểu ngay lập tức những gì nó đang làm.

Một số ý kiến ​​ở trên có vẻ quan tâm đến việc có thể giả mạo dễ dàng như thế nào. * Nếu bạn muốn bảo vệ chống lại điều này, thì có thể gửi mô tả nhanh về mục đích và lịch sử của mã trong email.


* Ít nhất nếu người phỏng vấn hỏi về các dự án trong quá khứ, sau đó hỏi bạn một mẫu từ dự án này và hỏi bạn yêu cầu gì để viết nó hoặc nó phát triển như thế nào, tôi nghĩ rằng quá trình này sẽ khá bằng chứng. Tôi nghĩ rằng hầu hết các ứng cử viên sẽ nói dối sẽ hiển thị các vấn đề trong các lĩnh vực khác, dù sao.


Nếu bạn yêu cầu người đó giải thích mã và họ không thể viết mã hoặc họ đã điều chỉnh mã của người khác để bảo trì mà không cần phải hiểu mã trước. Thật ngạc nhiên với tôi có bao nhiêu người tôi đã phỏng vấn trong những năm qua, những người không thể giải thích mẫu của họ.
HLGEM

Thêm một số ý kiến ​​trong trường hợp điểm đánh dấu của bạn ghét mã sạch.
Ewan

9

Khi tôi đang tìm việc, tôi đã giải quyết một loạt các câu hỏi của cuộc thi lập trình ACM, bằng nhiều ngôn ngữ khác nhau và sử dụng chúng cho các mẫu mã kể từ đó. Tôi nghĩ rằng họ đã tạo ra các ví dụ mã tốt bởi vì:

  • Họ đã giải quyết những vấn đề thách thức
  • Vấn đề không đòi hỏi một lượng lớn bối cảnh, cộng với việc dễ dàng nhận được các câu hỏi
  • Mã được viết không có bất kỳ rủi ro IP nào liên quan đến nó.
  • Mỗi vấn đề có thể tồn tại một cách hợp lý trong một tệp duy nhất và thường không quá dài, do đó, mọi người nên dễ dàng biên dịch và kiểm tra giải pháp của bạn và có thể sử dụng dữ liệu kiểm tra từ các câu hỏi.
  • Cho thấy bạn có thể chia nhỏ một vấn đề phức tạp thành nhiều phần nhỏ hơn.
  • Nếu bạn được hỏi về bất kỳ khía cạnh nào của giải pháp của bạn hoạt động, nó sẽ cho bạn một cơ hội tuyệt vời để chứng minh bạn biết bạn đang nói về điều gì, đặc biệt là nếu nó nhiều năm tuổi nhưng bạn có thể nhanh chóng giải mã những gì đang diễn ra.

Và sau đó, mã bạn tạo phải rõ ràng, nhất quán, dễ đọc và dễ hiểu.

Và cuối cùng:

  • Thật đáng để giải quyết chúng chỉ để cho vui, và là một thực hành tốt.

Đây là một giải pháp tuyệt vời. Tôi sẽ làm điều này. Có câu hỏi cụ thể nào bạn thích nhất không?
zkent

1
Theo nhận xét từ tôi, tôi nghĩ rằng việc có một mẫu mã một tệp không nhất thiết là một ý tưởng tuyệt vời trừ khi bạn đang ứng tuyển vào một vị trí để tối ưu hóa mã hoặc thuật toán. Mã chắc chắn không nên lớn, nhưng nó phải đại diện phần nào cho những gì bạn thực sự có thể thực hiện (ví dụ: nếu bạn có thể viết mã OO tốt và chia mã thành các mô-đun một cách hợp lý, nó sẽ chứng minh điều đó).
Tên

6
  • Nó sẽ biên dịch / giải thích lỗi và cảnh báo miễn phí ở mức độ nghiêm ngặt cao nhất.
  • Nó không nên là mã soạn sẵn mà bạn viết mỗi ngày. Làm cho nó độc đáo và thú vị để rõ ràng là bạn đã không sao chép / dán nó.
  • Nó nên có một số quyết định thiết kế thú vị với các bình luận giải thích làm thế nào / tại sao bạn thực hiện chúng.
  • Mục tiêu không quá 2-3 trang được in ra.
  • Nó phải là ngôn ngữ bạn đang áp dụng.
  • Nó không nên làm cho bộ não của tôi bị tổn thương khi tôi đọc nó lần đầu tiên. Có một người bạn xem nó hoặc đăng trên codereview.

3

Chà, nếu tôi đang phỏng vấn bạn, tôi muốn xem mã của bạn .

Sạch sẽ là tốt, giải quyết vấn đề là tốt, nhưng mã thực sự là tốt hơn. Một lập trình viên giỏi biết khi anh ta / cô ta bị lừa bởi một lập trình viên khác, vì vậy sự tự tin có thể đi xuống.

Đọc mã người khác giống như nhảy múa quan hệ tình dục: bạn biết khi nào đó là thật, và nếu người kia đang giả vờ, cuối cùng một thảm họa sẽ xảy ra. (chỉ nhận ra những người mọt sách thực sự không biết nhảy)

Chỉ cần tin tưởng bản thân và khả năng mã hóa của bạn . Trừ khi bạn thực sự biết người phỏng vấn, bạn không thể lường trước những gì anh ấy mong đợi từ phong cách / kỹ năng mã hóa của bạn.


10
Tôi thích rằng bạn không nghĩ mọt sách có thể nhảy nhưng bạn tự tin về năng lực tình dục của họ! : D
thesunneversets 23/211

Không, bản thân tôi đã thấy quá nhiều thảm họa ... :)
Machado

Ở trường tôi, những người duy nhất xuất hiện trong các lớp học nhảy / bóng xã hội là chuyên ngành kỹ thuật.
Eva

Bạn nên thay thế sex bằng một số tài liệu tham khảo chơi game để chính xác hơn :)
zb 23/2/2015

2

Ngoài ra, hãy cẩn thận rằng đó KHÔNG phải là mã từ nhà tuyển dụng hiện tại của bạn (Họ sở hữu nó mà bạn không và tôi đảm bảo họ sẽ không thích bạn chia sẻ nó.). Lấy thứ gì đó mà bạn tự hào và tự mình làm lại để không phải là chủ nhân cụ thể (loại bỏ bất kỳ tham chiếu nào đến bảng cơ sở dữ liệu hoặc tên máy chủ của họ, v.v.). Bất cứ điều gì bạn không gửi mã có lỗi hoặc là một kỹ thuật kém đối với loại mã đó (tôi có thể sẽ từ chối ai đó đã gửi con trỏ khi thao tác dựa trên tập hợp sẽ đơn giản hơn và hoạt động tốt hơn khi xem lại mã SQL. Có những kỹ thuật tương tự cho các ngôn ngữ khác để giải quyết một vấn đề tương đối hiếm gặp có thể được sử dụng cho các vấn đề phổ biến khác nhưng không phải là lựa chọn tốt nhất cho những vấn đề khác. Câu đó có hợp lý không?)


Tôi đồng ý, hoàn toàn làm lại nó để nó không còn chứa bất kỳ thông tin cụ thể nào của nhà tuyển dụng có vẻ như là một ý tưởng hay. Đạo đức là quan trọng - cảm ơn vì tiền boa!
thesunneversets

0

Tôi sẽ thứ hai bài đăng từ Renesis về mã sạch, nhưng sẽ thêm vào danh sách cung cấp các bài kiểm tra đơn vị chất lượng và tài liệu tốt cho mã bạn gửi. Một lập trình viên giỏi nên viết bài kiểm tra đơn vị cho mã của họ.


0

Theo ý kiến ​​của một người yêu cầu mẫu mã khi đánh giá ứng viên, có một vài tính năng cấp cao (nội dung của mã) và một vài tính năng cấp thấp (cấu trúc của mã). Các tính năng cấp cao:

  1. Danh tính : Hương vị của mã. Nếu bạn đang tự thanh toán cho mình như một người viết mã UI / HCI, tôi muốn thấy một cái nhìn / cảm nhận tốt về một cái gì đó trực quan khi tôi chạy nó. Nếu bạn là người xây dựng DB, tôi muốn thấy điều gì đó thú vị với biểu diễn hoặc phân tích dữ liệu. Mẫu nên là một cái gì đó bạn tự hào . Nếu bạn không có ít nhất một trong số đó, bạn không có danh tính.
  2. Trưởng thành : Bạn có thay đổi chiến lược cho các vấn đề khác nhau? Bạn đang giải quyết vấn đề thú vị? Mã hoặc cách tiếp cận sẽ dễ dàng mở rộng cho một vấn đề tương tự? Ngược lại, tôi có cảm thấy như mình đang nhìn vào một thành viên của một xã sùng bái hàng hóa không?
  3. Truyền thông : Liệu mã có dễ dàng giải thích những gì nó đang làm và tại sao? Điều này không có nghĩa là mã cần phải đơn giản. Trong thực tế, nó là một phần thưởng để làm cho mã phức tạp dễ hiểu.

Các khía cạnh cấp thấp đơn giản hơn:

  1. Phong cách : Mã phải sạch sẽ, nhất quán (tuân theo một số nguyên tắc đã được thiết lập) và được ghi chép đầy đủ.
  2. Đóng gói : Tối thiểu phải có một readme ngắn, một phiên bản có thể chạy được và các bài kiểm tra có thể chạy được. Các readme sẽ cho tôi biết làm thế nào để chạy hai cái sau, cũng như lý do tại sao bạn đang trình diễn mẫu mã cụ thể này.
  3. Ngôn ngữ : Tôi thường yêu cầu ai đó lấy mẫu bằng ngôn ngữ cho vị trí, cũng như người mà họ cảm thấy mạnh nhất. Đưa ra ý tưởng hay về trần nhà hiện tại của một người.

Đối với một ứng cử viên tốt, tôi hy vọng một mẫu sẽ là: A) Một mẫu nhỏ chống đạn hoặc B) Một phần tốt của một dự án thú vị lớn hơn (ví dụ, một mô-đun từ repo cá nhân Github). Tôi hy vọng chúng là dự án cá nhân hoặc dự án học tập. Nếu họ gửi một từ một dự án phải trả tiền, tôi mong đợi một lưu ý rằng họ đã được cho phép sử dụng nó. Nếu tôi không nhận được ghi chú đó, tôi sẽ cắt họ khỏi các ứng cử viên (ứng cử viên yếu) hoặc hỏi họ về điều đó trong cuộc phỏng vấn (ứng cử viên mạnh). Không có sự cho phép sẽ là một lá cờ đỏ lớn (có thể không thể vượt qua). Đối với một ứng cử viên tiên tiến, tôi mong muốn từ chối lưu ý rằng một số mẫu nguồn tốt nhất của họ không thể được hiển thị vì nó được thực hiện như một phần công việc của họ. Tuy nhiên, sau đó tôi mong đợi một lời chứng thực tràn đầy lý do tại sao họ tự hào về thiết kế không thể lay chuyển đó và cách họ yêu nó như một đứa trẻ.

Cuối cùng, cũng như nhiều người nói rằng "Ồ, ai đó chỉ có thể lấy một mẫu mã từ internet", lập luận phản đối là hầu hết những người không hiểu mã chất lượng sản xuất tốt cũng không hiểu nó khi họ nhìn thấy nó . Bên cạnh đó, người ta luôn có thể Google một dòng đặc biệt để kiểm tra mã. Ngoài ra, tốt nhất, ăn cắp mã sẽ đưa một ứng viên đến một cuộc phỏng vấn nơi họ lúng túng ("Vậy tại sao bạn lại làm theo cách này ...?").

Như một lưu ý cuối cùng về mã từ việc làm trước: Chỉ cần không. Từ quan điểm nhân sự, yêu cầu mã từ việc làm trước đó là không phù hợp và cờ đỏ về công ty. Cả hai bạn đều có trách nhiệm pháp lý (nghĩa là cả hai bạn đều có thể bị kiện) và điều đó cho thấy rằng họ không biết họ đang làm gì. Mã được thực hiện cho một nhà tuyển dụng trước không bao giờ nên được cung cấp trừ khi mã đã có sẵn công khai hoặc bạn có sự cho phép rõ ràng từ nhà tuyển dụng đó. Tồi tệ hơn, trong một công ty lớn, ông chủ trực tiếp của bạn có thể không có quyền cho phép bạn, vậy hãy vui vẻ với bộ phận pháp lý trong trường hợp đó? Tôi chắc rằng họ sẽ rất vui mừng khi tiết lộ IP của mình cho một nhân viên xuất cảnh.


Tôi cũng sẽ lưu ý rằng, trong sự tiết lộ đầy đủ, tôi đã cung cấp một mẫu mã cho phòng thí nghiệm của trường sau đại học nơi tôi được nhận bằng tiến sĩ. Mẫu mã này là mã đầy đủ cho một robot tự trị (5-10k dòng), với ba tệp cụ thể được chọn ra. Tài liệu là đáng kính, nhưng không nguyên sơ. Nếu tôi phải làm lại từ đầu, có lẽ tôi đã không mang phiên bản in mã đến cuộc phỏng vấn tại chỗ của mình (có thể đã mang 100 trang có nội dung "ROOKIE MISTAKE" bằng chữ lớn). Tôi đã nhận được một học bổng đầy đủ, vì vậy đó không phải là quá nhiều giả tạo. Đạo đức: Quá nhiều> = quá ít.
Tê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.