Нужно ли разработчику запоминать детали? [закрыто]

33

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

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

Anyname Donotcare
источник
27
Я хотел бы забыть их.
Джеффо
6
Скажите ему, что он должен писать левой рукой (это очень легко для одних и довольно трудно для других).
Работа
4
«Принудительно запоминать имена таблиц» ??? WTF !? «Каждый должен выучить эти десять тысяч названий столбцов к концу недели! Тогда будет испытание; любой, кто не получит 100%, будет вынужден сначала насильно кормить ногами моей личной гордости бешеных львов !!! Bwahahahahaa !!!!! ”
Донал Стипендиаты
4
Когда я был студентом кооператива, я работал с парнем, который требовал именно этого от меня, сказал, что я «теряю время», когда я искал вещи, сказал: «Вы сказали, что изучали это!» когда я не мог произнести имена таблиц (и их содержимое) из памяти и использовал свое отсутствие приверженности запоминанию имен таблиц в качестве предлога, чтобы вообще перестать наставлять меня. Я изнасиловал его в своем отчете о совместной деятельности.
user16764
2
Не запоминай, запоминай.
Tylermac

Ответы:

63

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

Вы также должны иметь доступ к инструментам, которые помогут вам с автозаполнением и тому подобным.

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

ChrisF
источник
6
Работая в приложении с таблицами 4k, я могу засвидетельствовать полезность этого совета. Запоминание не помогает, соглашения проекта помогают (особенно когда они применяются; а если нет, то вам приходится полагаться на свою память).
Винит Рейнольдс
1
Чтобы помочь обнаружению, создайте шпаргалки и / или (модельные) схемы того, что вам нужно. Таким образом, вам просто нужно посмотреть на документ или документ / изображение и отсканировать нужные вам имена таблиц и столбцов.
Киссаки
34

Эйнштейн сказал: «Никогда не запоминай, что ты можешь найти [в книгах]», и я полностью согласен.

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

HappyCat
источник
да ... не запоминай это, оно придет, когда ты будешь использовать информацию. Хотя у вас всегда есть справочные документы для этого.
Ньютопия
17

Стыдно признаться - я использую C уже почти 30 лет, но никогда не могу вспомнить, как объявлять указатели на функции - мне всегда нужно вызывать K & R для проверки синтаксиса.

Еще более неловко, я должен очень серьезно задуматься о том, как работает typedef - так ли это:

 typedef foo int;

или

 typedef int foo;

Это мои личные слепые пятна. Я бы не волновался, если бы у вас были подобные.

Нил Баттерворт
источник
2
+1: я начал программировать на C в 1985 году, и мне все еще нужно искать, как объявлять указатели на функции. Я сделал удар в один день, и это сработало, и я был вполне доволен собой. (Я помню, как делать typedefs ... :-)
Боб Мерфи
2
Я счастлив, что в языке, с которым я работаю (C #), эквивалент указателей на функции на самом деле может быть проанализирован людьми, а не только компилятором.
svick
@svick О, у меня нет проблем с чтением указателей на функции, я помню, как писать их, с чем у меня проблемы.
Нил Баттерворт
3
Я сознательно не запомнил таблицы приоритетов C или C ++. Они мне пригодятся для мгновенного обращения, если они мне понадобятся, и я действительно не хочу писать код, который может запутать кого-то, кто не запомнил их.
Дэвид Торнли
Код, который зависит от неочевидных правил приоритета, является плохим кодом.
Gort the Robot
9

Компьютеры хорошо запоминают вещи. Компьютеры также хороши в поиске вещей, которые они запомнили ранее.

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

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

tdammers
источник
5

Память важна

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

Сколько должно потребоваться?

Но я не верю, что это справедливое требование требовать запоминания всех вещей. Я верю, что вы начнете фиксировать вещи в памяти как естественную часть дел. Вот почему чтение книги о языке и использование его в производственной среде - это не одно и то же. Когда вы ежедневно работаете с чем-то (некоторые называют это «практикой»), вы начнете делать некоторые вещи второй натурой.

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

Как вы можете улучшить?

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

Было бы интересно увидеть исследования того, как такие вещи, как игры в мозг, программирование и интерактивные действия, влияют на мозг с течением времени. Могут ли такие вещи помочь в борьбе с потерей памяти, вызванной возрастом или слабоумием?

Бернард Ди
источник
5

Откуда я родом, есть старая поговорка, которая звучит примерно так по-английски: «Дурак запоминает, умный человек записывает». В принципе, не важно, насколько хороша ваша память, вы забудете . Вы только человек. И это, как следствие, делает опору на человеческую память ... ну, ненадежной. Даже если вы думаете, что помните эти имена таблиц, можете ли вы быть уверены на 100%? Вам нужно всего несколько секунд, чтобы найти имена таблиц, но вам могут понадобиться часы или даже дни, чтобы отследить ошибки, вызванные ошибкой в ​​написании.

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

Давор Адрало
источник
3

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

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

Томас Оуэнс
источник
1
Я категорически не согласен с запоминанием деталей. Вы должны помнить концепции и функции. То есть знать, что может делать ваша система, и знать, как узнать точное имя метода / переменной / столбца.
edA-qa mort-ora-y
1
Я не ожидал бы, что вы будете знать все, но я ожидал бы, что любой, работающий над определенной подсистемой, будет знать эту подсистему внутри и снаружи. Я бы посчитал эти знания заботой о вашей работе.
Томас Оуэнс
3

Есть ли смысл запоминать точные имена классов? Я так не думаю.

Есть ли смысл знать, какие термины использует ваш проект в именах классов, чтобы вы могли искать их быстрее? Определенно.

Скотт Макинтайр
источник
2

Я не согласен с тем, что вы должны запомнить имена таблиц, но их должно быть легко угадать. Чтобы было легко догадаться, будьте последовательны. Таким образом, вы не будете спрашивать себя: «Хм… таблица foo множественное число или единственное число? Идентификатор первичного ключа или RID или FooRID?»

Earlz
источник
2

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

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

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

HLGEM
источник
1

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

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

Винод Р
источник
извините, не могли бы вы объяснить, в чем смысл domain driven design?
Anyname Donotcare
1
@just_name Я начал с этого martinfowler.com/bliki/EvansClassification.html
Vinod R