Подтвердить что ты не робот

Чтобы foo bar, или не foo bar: вот вопрос

Это было изначально обсуждалось во время презентации Чарльза Брайана Куинна Big Nerd Ranch в acts_as_conference. Он обсуждал то, что он узнал, обучая Ruby on Rails Bootcamp многим людям, новым для программирования и новым для Rails.

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

Что легче понять?

baz = foo + bar

или

answer = first_number + second_number

Это случалось много раз, когда я объяснял что-то, и я сразу же перехожу к foo bar placeholders, но потом осознаю свою ошибку и сделаю пример более понятным, используя сценарий реального мира.

Это особенно применимо, когда вы пытаетесь научить кого-то, у кого не было никакого воздействия на программирование, и в конечном итоге вам нужно объяснить foo и bar, прежде чем объяснять, что вы на самом деле пытаетесь учить.

Однако использование foo и bar для опытных программистов кажется ОК, хотя я лично думаю, вместе с Чарльзом, что это то, что нужно изменить.

Быстрый поиск SO для "foo" возвращает более 20 страниц результатов с использованием foo во многих смыслах, которые я могу понять. И в некоторых случаях, когда я читаю вопрос на конкретном языке, и я делаю это, чтобы лучше понять этот язык. Если применимые имена переменных используются вместо foo и bar, это значительно упрощает понимание и интерпретацию проблемы. Поэтому для опытных разработчиков конструкция кажется немного ошибочной.

Является ли это привычкой, которая когда-либо будет удалена? Почему вы выбираете "foo bar" или "foo bar"?

4b9b3361

Ответ 1

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

Например, если вы хотите показать, как выбрасывать исключение, я считаю, что это нормально, чтобы представить фрагмент, например

public void foo() { 

   // Do some things

   if (errorCondition) {
      throw new Exception("Error message");
   }

}

Так как точка в нем показывает исключения, нет смысла заботиться о имени метода, поэтому foo является "законным" в этом контексте или, по крайней мере, для меня.

Я бы не принял (в этом же примере)

public void foo() { 

   // Do some things

   if (bar) {
      throw new Exception(baz);
   }

}

поскольку он скрывает то, что вы пытаетесь учить.

Ответ 2

Я могу видеть момент, когда разговариваю с не программистами, но когда вы на доске обсуждаете проблему с некоторыми членами команды. Я бы скучал по своим foos и моим барам. Я считаю, что распространенность foo/bar является примером способности большинства программистов мыслить абстрактно.

Вероятно, больше проблем, если вы на тренировочной арене.

Ответ 3

Я использую их иногда. Но только если "реальное" имя не имеет значения.

Ответ 4

Я использую их, демонстрируя, что любых значений "foo" и "bar" будет достаточно, например "вы можете получить размер объекта с sizeof (foo)". Это удобно для того, чтобы люди поняли общую концепцию, а не только детали. Например, если бы я сказал "вы можете получить размер объекта с чем-то вроде sizeof (int)", то он почти гарантировал, что кто-то спросит, работает ли это также и для float.

Ответ 5

Для тотального нового программиста я должен сказать, что термины foo и bar могут быть неизвестны. Я думал, что они были чем-то специфичным для языка (а именно C), но после того, как я прочитал Википедию, теперь я знаю, что они просто абстрактные держатели. Поэтому, если ваша аудитория состоит из людей, которые не знают их значений, что-то еще намного яснее. Также first_number и так говорит, что это числа, которые когда-либо были представлены, а не что-то еще.

Ответ 6

Я выбираю, чтобы не foo и bar, когда моя аудитория достаточно знакома с понимаемой концепцией, что это может нанести ущерб их пониманию.

Единственное время, когда нужно использовать Foo и Bar, - это когда вы говорите о чем-то столь абстрактном, что добавление контекста потребует дополнительного обсуждения. Затем Foo и Bar являются гораздо более читабельными и создаваемыми кодами, которые являются более последовательными, чем альтернативы, такие как x, y и z.

Ответ 7

Я думаю, что это из-за мягкой или, может быть, не так мягко, саркастической природы многих программистов. Хотя многие люди пытались поместить различные значения в foo/bar больше всего или, по крайней мере, из многих, из нас думают о "FUBAR", F ** K Up Beyond All Recognition. Его путь для "опытных" людей - составить комментарий к остальным.

Из-за этого я никогда не использую его для не программистов и редко использую его даже с опытными программистами. Если я действительно использую, вы можете делать ставки, я делаю скрытую ссылку на данный предмет.

Ответ 8

Вместо того, чтобы избегать бессмысленных слов, таких как foo и bar, я счел гораздо более важным представить примеры кода для реальных сценариев, которые имеют одинаковые отношения. Это действительно помогает учащемуся правильно понять тему и предотвратить недоразумения. Например, если я рассказываю о Dependency Injection и примерном примере кода, где экземпляр класса Car вводится в класс драйвера, никто не собирается запутываться и думает: "Значит, значит, автомобиль управляет драйвером?".

Ответ 9

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

Если вы заменили бессмысленное слово на то, что оно в общем виде представляет в примере кода, вы можете получить некоторые имена, которые очень похожи на ключевые слова, классы или методы, которые вы пытаетесь объяснить. "Мой" префикс, как в myNumber, myFunction, является хорошим компромиссом, который делает имена выдающимися как произвольные.

Ответ 10

Я новичок в программировании и более или менее самоучка. Я прочитал много примеров кода онлайн и в начале обнаружил, что я заменяю foo и bar & c. с более релевантными именами, например, с примерами firstnumber и secondnumber.

Теперь я предпочитаю x, y, z, i... потому что foo и bar, похоже, испускают лингвистические импульсы в моем сознании и могут отвлечь меня от рутины, и я немного развил способность удерживать целое куча разных переменных в моей голове и помнить, что это такое. Но я все же определенно рекомендую использовать соответствующее название для обучения кого-то еще, особенно при объяснении кода тем, кто не программирует, но должен понимать, как работает программа.