Как оценить качество кода, когда вы не знакомы с языком? [закрыто]

10

Гипотетически, если бы я брал интервью у кого-то для новой должности разработчика PHP, когда мой опыт работы в .NET, как я могу определить, является ли образец кода, который они предоставили мне, эффективным и хорошего качества?

Другими словами, как лучше всего оценить код программиста, если вы не знакомы с языком?

Джейсон Таун
источник
1
Я не хочу вас об этом рассказывать, но вы этого не делаете :-) Включите в собеседование кого-то, кто знает язык, или выучите его самостоятельно.
Joppe
2
Вот почему собеседование - это командная работа. Вы оцениваете то, что умеете оценивать, и откладываете подобные вещи на руководителей технической группы, которые знакомы с этим.
Каз
Для меня лучший показатель - это размер функций (включая глубину вложения), за которыми следует размер классов / файлов.
m3th0dman

Ответы:

20

Как я могу определить, является ли предоставленный мне пример кода эффективным и качественным?

То, что вы не сможете оценить, - это правильное использование языковых идиом и использование библиотеки. Итак, это не те вещи, на которые вы должны попытаться взглянуть.

Что вы можете оценить это:

  • Насколько хорошо структурированный код выглядит
  • Хорошо названные переменные (можете ли вы понять смысл вещей)
  • Хорошо составленные функции / единицы кода
  • Согласованность в кодовой базе

Вышеуказанные пункты (хотя и не исчерпывающие) будут указывать, пахнет ли код или нет, и должен быть тем, что опытный программист может определить как хороший или плохой.

Короче - ищите вещи, которые должны указывать хороший код независимо от языка.

Одед
источник
5
Еще один важный вопрос: «Являются ли комментарии четкими, значимыми и легкими для понимания?» Не могли бы вы немного узнать о том, что делает фрагмент кода из комментариев, даже если вы мало знакомы с языком?
FrustratedWithFormsDesigner
2
@FrustratedWithFormsDesigner - Комментарии? Что это такое? Если серьезно, код должен быть самокомментируемым. Комментарии должны быть там только для объяснения причин или причин плохого кода.
Одед
6
Я призываю к крайней осторожности: очень легко в конечном итоге выбрать на основе того, кто пишет код наиболее привычный для вас, что может быть относительно плохим использованием этого языка.
Джерри Коффин
@FrustratedWithFormsDesigner Одед, вероятно, думает, что вы должны прочитать этот элегантный код.com/2010/04/18/…
Джоэл
4

Попросите их представить блок-схему или проведите вас через это во время интервью. У вас есть идеальное оправдание, чтобы спросить, и это говорит о том, как они думают, чтобы увидеть, как они объясняют.

Если они собираются перейти к вашему предпочтительному языку, вы знаете, что у вас много наставничества, так что в любом случае вы должны искать хорошие навыки логики / аргументации.

Если они будут продолжать работать на предпочитаемом им языке, вы должны будете согласиться с тем, что они будут в некоторой степени самостоятельно управлять мельчайшими подробностями, связанными с языком, пока кто-нибудь еще не наберет скорость, так что все, с чем вам придется взаимодействовать с дизайнерской стороной там тоже.

Билл
источник
1
Если кандидат может объяснить свой код так, чтобы его намерения и цели были ясны, и визуально организация и общая структура выглядели разумными, они, вероятно, имеют разумное представление о том, что представляет код. И вполне может повторить подобное чистое воспроизведение. Даже если отдельные части объясняются всего лишь как «потому что именно этот конкретный ссылочный материал показал, как это сделать», при названии ссылочного материала вы по крайней мере скромно представляете способность не только «кодировать», но и находить и применять решения проблем, с которыми они обычно не сталкиваются.
JustinC
1

Помимо неправильного кода, работающего с костями, эффективность во многом будет зависеть от компилятора / интерпретатора языка, о котором идет речь, и вы не сможете увидеть это из примера кода. Пример кода может быть красиво написан и изящен как прекрасный фарфор на салфетках, но работать медленно, если скомпилировано / интерпретировано плохо.

Вы не сможете оценить идиоматическое использование особенностей языка / синтаксического сахара / соглашений без некоторого знакомства.

Вы должны быть в состоянии определить, хорошо ли он написан в целом, исходя из универсальных соображений, таких как аккуратность, поток управления, именование переменных, порядок операций и так далее.

Однако на практике, если вы знаете, какой язык будет использоваться в процессе, вы можете попытаться найти одно или несколько руководств по стилю для этого языка, перейти в книжный магазин и пролистать пару книг для этого языка и просмотрите примеры кода, ища аналоги того, что вам знакомо на выбранном вами языке (языках), посмотрите один или несколько проектов с открытым исходным кодом, использующих этот язык, и так далее.

Если у вас есть время и нет ценового барьера, вы можете даже зайти так далеко, чтобы настроить среду разработки для этого языка и запустить приложение Hello World, создать код-ката или иным образом написать простое небольшое приложение. в этом. Вы довольно быстро разработаете элементарную систему отсчета, и это не только даст вам возможность разобраться с конкретной целью анализа рассматриваемого кода, вы можете быть вынуждены использовать язык и немного расшириться.

Эд Гастингс
источник
1

Независимо от языка:

  • Есть ли четкое разделение проблем, правильное использование классов (для ОО-языков) или какие-либо признаки преднамеренных попыток разбить код на многократно используемые модульные «куски»?
  • Точно так же есть какие-либо доказательства тестирования - модульное тестирование или иное?
  • Если это производственный код, он усыпан строками отладки, которые могут предложить небольшое разделение между разработкой и развертыванием?
  • Соответствует ли код какому-либо соглашению об именах (нравится ли вам это соглашение или нет, оно несущественно!)?
  • Если у вас есть файл, а не распечатка, относится ли каждая функция / класс в файле к (так, если это файл с именем data_access_layer , свидетельство функций, которые обрабатывают изображения, вероятно, будет неуместным).
  • Любые признаки отсутствия доверия к пользовательскому вводу также хороши, особенно для веб-языков, таких как PHP. Таким образом, такие структуры, как input = escape (input), по крайней мере, показывают, что они знают о проблеме.
  • Комментарии или самоописывающий код это всегда хорошо. Есть несколько точек зрения на количество комментариев, которые должны присутствовать, но полное отсутствие комментариев
  • Ценой циничности, я бы также засканировал часть кода перед собеседованием. К сожалению, это может быть просто копирование и вставка.

Не говоря уж о том, что любой код, который не имеет всего этого, автоматически становится плохим, но я бы посчитал, что это показатели кого-то, кто размышлял и рассматривал их практику.

Тем не менее, для всех этих индикаторов вы должны спросить, каково обоснование такого кода. Для их выбора может быть веская причина, зависящая от языка ... и после этого Google, когда они и другие кандидаты уйдут, станет вашим другом, так как вы можете проверить, правдоподобно ли то, что они сказали ...!

Удачи, так как наем хороших людей - одна из самых важных ролей в вашей организации;)

frackham
источник
Оглядываясь назад, это дублирует многое из того, что сказал @Oded (и комментарии).
Frackham
0

Вам следует попросить кого-нибудь, кто знает рассматриваемый язык, прийти на собеседование или взглянуть на образец. Такой человек, скорее всего, найдет плохие места, если таковые имеются.

Собирается ли кандидат работать в команде? Пусть члены команды встретятся с ним и зададут вопросы о его навыках.

завивать волосы щипцами
источник
-2

Спросите их об ограничениях, с которыми они столкнулись при использовании языка. Попросите их показать вам простой SQL-запрос. Любой разработчик Php, достойный крика, должен иметь возможность выполнять базовый запрос выбора / обновления / удаления без особых усилий.

Дуг

SnoopDougieDoug
источник