Чтобы 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"?
Ответы
Ответ 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, похоже, испускают лингвистические импульсы в моем сознании и могут отвлечь меня от рутины, и я немного развил способность удерживать целое куча разных переменных в моей голове и помнить, что это такое. Но я все же определенно рекомендую использовать соответствующее название для обучения кого-то еще, особенно при объяснении кода тем, кто не программирует, но должен понимать, как работает программа.