Чи слід змусити забудовника запам'ятати деталі? [зачинено]


33

Багато разів я забуваю речі про своє застосування. Я не запам'ятовую назви таблиць або те, що робив запит, і шукаю, щоб отримати те, що я хочу. Керівник моєї команди сказав мені, що я повинен запам'ятати імена таблиць, якими я користуюся.

Чи потрібно розробнику запам'ятовувати назви таблиць у базі даних, назви класів тощо? І якщо відповідь "Так, весь час", що мені робити, щоб запам'ятати ці речі?


27
Я б хотів, щоб я міг їх забути.
JeffO

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

4
"Примусово запам'ятовувати назви таблиць" ??? WTF !? «Кожен повинен вивчити ці десять тисяч назв стовпців до кінця тижня! Тоді буде тест; той, хто не набере 100%, буде силовим ногами спочатку мою приватну гордість шалених левів !!! Bwahahahahaa !!!!! ”
стипендіати

4
Коли я був студентом кооперативу, я працював з хлопцем, який вимагав саме цього від мене, сказав мені, що я "витрачаю час", коли я переглянув речі, сказав "ти сказав, що ти це вивчаєш!" коли я не міг декламувати назви таблиць (та їх вмісту) з пам’яті і використав мою відсутність прихильності до запам’ятовування імен таблиць як привід для припинення наставника мені. Я здичав його у своїй доповіді про кооператив.
user16764

2
Не запам'ятовуйте, запам'ятовуйте.
tylermac

Відповіді:


63

Вам не потрібно буде явно запам'ятовувати ці речі. Під цим я маю на увазі сісти і вивчити їх так, як і перелік слів для перевірки орфографії. У першу чергу імена повинні бути пам’ятними та відкритими, щоб ви могли їх знову знайти без особливих зусиль.

Ви також повинні мати доступ до інструментів, які допоможуть вам тут із автоматичним завершенням тощо.

У великій системі, що містить понад 100 таблиць, немає ніякого способу очікувати запам’ятовування кожного імені таблиці та кожного стовпця, однак із пам’ятними, відкритими іменами та регулярним використанням ви повинні запам'ятати найважливіші деталі та ті, якими ви користуєтесь кожну день.


6
Попрацювавши в додатку з 4-класовими таблицями, я можу засвідчити корисність цієї поради. Запам’ятовування не допомагає, це роблять конвенції проектів (особливо коли вони виконуються; якщо ні, то потрібно покладатися на свою пам’ять).
Vineet Reynolds

1
Щоб допомогти відкрити, створіть шпаргалки та / або (модельні) діаграми потрібних речей. Таким чином, вам доведеться просто переглянути свій папір або документ / зображення і зможете просканувати потрібні таблиці та стовпці.
Кіссакі

34

Ейнштейн сказав "ніколи не запам'ятовуй те, що ти можеш шукати [у книгах]", і я повністю згоден.

Використовуйте свою пам’ять для абстрактних речей (методики та принципи розробки), а не фактів, які ви можете знайти, коли вони вам потрібні.


так ... не запам'ятовуйте це, воно з’явиться при використанні інформації. Нехай у всіх випадках є довідкові документи для цього зручно.
Ньютопський

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

Комп'ютери добре запам'ятовують речі. Комп'ютери також добре знаходять речі, які раніше пам’ятали.

Тому ключовим навиком є ​​використання комп’ютера як розширення до вашої пам’яті. Напишіть чистий код, документуйте матеріали, навчіться ефективно використовувати інструменти пошуку, налаштуйте своє середовище розробки, щоб було легко знайти речі тощо.

Приємний побічний ефект полягає в тому, що ви також полегшите для інших ознайомлення з вашим кодом.


5

Пам'ять важлива

Міцна пам'ять справді є одним із найкращих талантів, який може мати розробник; насправді це може мати кожен. Це справді особлива річ, і я заздрю ​​і захоплююся тими, хто її благословив. Це, безумовно, може допомогти людині бути сильнішим розробником, юристом, механіком або (вставте тут вибір на вибір).

Скільки потрібно вимагати?

Але я не вірю, що вимагати запам'ятовування всіх речей справедлива вимога. Я вірю, що ви почнете робити речі для пам’яті як природну частину вчинити. Ось чому читати книгу про мову та використовувати її у виробничому середовищі - це не одне й те саме. Коли ви щодня працюєте з чимось (дехто би назвав це "практикою"), ви почнете робити деякі речі другого характеру.

Як і в інших плакатах, я вважаю, що запам'ятовування ключових частин програми допомагає. Однак я не впевнений, що вкладати кошти в запам'ятовування всього цього варто, коли можна скористатися такими функціями, як intellisense, що все частіше зустрічається в сучасних інструментах.

Як можна вдосконалитись?

Я не є знавцем пам’яті, але деякі вважають, що ви дійсно можете покращити пам’ять за допомогою розумових вправ, таких як ігри на мозок (кросворди, судоку, пазли тощо). Теорія полягає в тому, що ваш мозок схожий на м'яз, і якщо ви використовуєте його різними способами і здійснюєте його, то ви можете зміцнити його.

Було б цікаво побачити дослідження того, як такі дії, як заняття мозковими іграми, програмування та інтерактивні дії, впливатимуть на мозок з часом. Чи можуть подібні речі допомогти боротися з настанням втрати пам’яті, спричиненої віком чи деменцією?


5

Звідки я родом, є стара приказка, яка говорить приблизно так англійською мовою: "Дурень запам’ятовує, розумна людина записує". В основному, жодна матерія, наскільки хороша ваша пам’ять, ви забудете . Ти лише людина. І це, як наслідок, робить покладатися на пам’ять людини ... ну, ненадійною. Навіть якщо ви думаєте, що пам’ятаєте ці назви таблиць, чи можете ви бути на 100% впевнені? Щоб шукати назви таблиць, вам знадобиться лише кілька секунд, але для пошуку помилок, спричинених неправильним написанням, вам можуть знадобитися години, а то й дні.

Як висновок, ні, це смішна вимога, особливо щодо великих проектів, які можуть мати тисячі таблиць і класів.


3

Якщо це над тим, над чим ви працюєте, і це довгострокове завдання, то так, ви повинні працювати над навчанням і мати можливість запам’ятовувати різні назви таблиць і стовпців, класи, змінні та методи. Це те, що прийде через час, коли ви працюєте з ними. Ви не навчитеся їх все протягом ночі, але ви повинні прагнути знати якомога більше про систему, над якою працюєте. Крім того, у великій системі немає жодного способу запам'ятати все, але немає причин не вчитися і запам’ятовувати стільки, скільки зможете.

Потрібно постійно шукати все - це лише удар по продуктивності - якщо ви працюєте над завданням і мусите зупинятись і шукати речі кожні кілька хвилин, це перерва концентрації. Скористайтеся відповідними інструментами, щоб допомогти вам та вивчити / запам'ятати, що ви можете. Це значно покращить вашу продуктивність.


1
Я категорично не згоден із запам'ятовуванням деталей. Ви повинні пам’ятати поняття та функції. Тобто, знайте, що може зробити ваша система, і знайте, як з’ясувати, який саме метод / ім’я змінної / стовпця.
edA-qa mort-ora-y

1
Я б не очікував, що ви все знаєте, але я би сподівався, що кожен, хто працює над певною підсистемою, буде знати цю підсистему всередині та зовні. Я вважаю, що знання піклуються про вашу роботу.
Томас Оуенс

3

Чи є сенс запам'ятовувати точні назви класів? Я не думаю, що так.

Чи є сенс знати, які терміни використовує ваш проект у назвах класів, щоб ви могли швидше їх шукати? Безумовно.


2

Я не згоден, що ви повинні запам’ятовувати назви таблиць, але їх слід легко здогадатися. Щоб легко здогадуватися, будьте послідовними. Таким чином, ви не будете запитувати себе: "Хм .. таблиця foo множинна чи однина? Ідентифікатор первинного ключа або RID або FooRID?"


2

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

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

Особисто я вважаю, що люди, які не намагаються вивчити структуру, часто залишаються на рівні початківців у запитах до конкретної бази даних. Вони також не прагнуть пережити звільнення. Я думаю, що ти бос намагається зробити тобі прихильність, щоб змусити приділяти більше уваги.


1

Більше, ніж сильна пам'ять, тим, що дуже допомагає, є дизайн, керований доменом, та дотримання простих конвенцій, таких як назви таблиць та назви класів, щоб бути однаковими. Якщо власник вашого бізнесу розмовляє з вами про цю вимогу, в коді повинні бути вказані конкретні доменні терміни. У цьому випадку нам не потрібно пам’ятати відображення між термінами та іменами бізнесу в коді. Ця звичка потребує певного часу, але це дуже корисно, оскільки вона також зменшує помилки в перекладі сюди та знову між власниками бізнесу та розробниками.

Поряд з цим, якщо тривалість проекту дуже довга, приємне використання кодової бази протягом певного періоду підсвідомо допоможе пам'яті.


Вибачте, ви могли б пояснити, у чому сенс domain driven design?
Anyname Donotcare

1
@just_name Я почав з цього martinfowler.com/bliki/EvansClassification.html
R
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.