26

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

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

Что лучше понять?

baz = foo + bar 

или

answer = first_number + second_number 

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

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

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

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

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

+3

Большой вопрос. (+1) – 2010-10-09 15:27:29

+1

Вы пытаетесь научить людей использовать хорошие имена переменных, и первое, что вы делаете, это бросить в них «foo and bar». Я могу сказать, что это больше расстраивает для неанглийских ораторов, поскольку они запутываются и не понимают, что такое foo и bar, и могут подумать, что foo и bar - это языковые конструкции. – 2012-07-03 08:09:02

ответ

35

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

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

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); 
    } 

} 

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

15

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

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

+0

Отличная точка мышления абстрактно. Это то, что я никогда не рассматривал. – mwilliams 2008-10-24 17:39:05

7

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

1

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

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

3

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

0

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

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

1

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

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

1

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

2

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

1

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

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

Смежные вопросы