Как вы возвращаетесь к коду, когда не помните, что делали? [Дубликат]

    

У этого вопроса уже есть ответ:

    

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

Я имею в виду, я знаю свой проект, я написал 100% кода до сих пор, и я знал более или менее то, что делал, но я точно не помню, что, я не помню, какой файл я был редактирование и почему.

Как я вернусь? (потому что прямо сейчас моя методика открытия исходного кода и просмотра на нем не работает)

6 голосов | спросил speeder 29 +04002013-10-29T18:51:43+04:00312013bEurope/MoscowTue, 29 Oct 2013 18:51:43 +0400 2013, 18:51:43

8 ответов


8

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

Поиск последних изменений

Поиск файла, над которым вы работали до откладывания, не должно быть большой проблемой. Если вы используете инструмент управления исходным кодом (SCM), такой как Git, чтение истории должно помочь. Если вы не используете SCM или систему контроля версий (VCS), вы все равно можете сортировать свои файлы по дате изменения ( вот как это сделать в оболочке UNIX ).

Вспоминая ваши намерения

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

Предотвращение проблемы в будущем

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

SCM . Если вы не используете SCM /VCS, начните делать это. В случае отслеживания ваших предыдущих шагов, SCM поможет вам, если вы сохраните чистую историю (помните принцип: "совершить ранний, совершить часто" ). Он также запрещает вам безотзывно удалять файлы (например, с помощью UNIX rm).

Отслеживание ошибок . Если все это по-прежнему не поможет вам избежать проблем, начните использовать трекер проблем. Существует множество бесплатных и легких инструментов, которые помогут вам отслеживать ваши изменения.

Тестирование модулей . Еще один способ, который поможет вам быстро найти место для продолжения вашей работы, - создать модульные тесты. Существуют рамки для всех широко используемых языков (например, Java, C, Objective-C, ...), и некоторые языки даже имеют такую ​​структуру в своих стандартных библиотеках (например, Python). Если вы считаете, что модульное тестирование может вам помочь, ознакомьтесь также с тестовым развитием (TDD). Для многих разработчиков кажется странным не начинать программирование сразу, а писать тесты на то, чего там нет. Однако это может привести к совершенно новой перспективе разработки программного обеспечения.

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

ответил sfat 29 +04002013-10-29T21:58:13+04:00312013bEurope/MoscowTue, 29 Oct 2013 21:58:13 +0400 2013, 21:58:13
11
  1. Запустите тесты. Если у меня заканчиваются тесты, это, вероятно, то, над чем я работал.
  2. Diff рабочая копия с контролем версий. Видя все изменения, которые я сделал недавно, но не совершил, обычно напоминает мне о том, что я делаю.
  3. Прочитайте историю фиксаций. Начните просматривать историю управления версиями при том, что происходит в последнее время. Это обычно указывает мне на дорожную карту и следующую задачу в списке.
ответил stonemetal 29 +04002013-10-29T22:18:53+04:00312013bEurope/MoscowTue, 29 Oct 2013 22:18:53 +0400 2013, 22:18:53
3

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

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

Желаем удачи.

ответил Ricardo 29 +04002013-10-29T20:03:23+04:00312013bEurope/MoscowTue, 29 Oct 2013 20:03:23 +0400 2013, 20:03:23
3

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

Затем я разработал привычку оставлять небольшие заметки для себя в коде, рядом с местом, где я планировал продолжить работу. Это не проверено в VCS, это только для меня. Возможно, две /три линии достаточно полны, чтобы фиксировать последние, когда вы покидаете работу.

Когда вы вернетесь позже, вы просто нажмете «компилировать», а компилятор выведет (несовместимое) место в коде, где вы оставили заметки. И это отправная точка.

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

ответил JensG 29 +04002013-10-29T23:02:29+04:00312013bEurope/MoscowTue, 29 Oct 2013 23:02:29 +0400 2013, 23:02:29
3

Все, что я делаю, это хранение файла тетради /TODO, и, прежде чем я продолжу длинный (> час) перерыв, я записываю, что еще нужно сделать. Мой разум затем экстраполирует то, что я делал раньше. Я всегда это делаю, и это никогда не разочарует.

ответил Yam Marcovic 30 +04002013-10-30T09:07:25+04:00312013bEurope/MoscowWed, 30 Oct 2013 09:07:25 +0400 2013, 09:07:25
2

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

1. A lack of version control and bug tracking.  Get one of the many free 
   VCS/bug trackers/project managment.  TFS from Microsoft, git and Jira or 
   or even FogBugz from Fog Creek.  There's a bunch out there, pick one or 
   just try a bunch.
2. Having lost track of what you were doing, you're now in something like 
   analysis paralysis -- and the solution is the same.  Do something.  It 
   doesn't matter what you were working on, it will come back to you if it's 
   important, and you can work on something else important until then.

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

ответил jmoreno 30 +04002013-10-30T09:00:09+04:00312013bEurope/MoscowWed, 30 Oct 2013 09:00:09 +0400 2013, 09:00:09
1

Сначала выучите урок.

С этого момента писать код легко понять:

  • Документируйте его. Инструменты, такие как Doxygen, очень полезны. Фактически, Doxygen полезен даже с недокументированным кодом с возможностью рисовать дерево вызовов, дерево вызывающих и дерево зависимостей.

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

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

ответил mouviciel 30 +04002013-10-30T11:29:08+04:00312013bEurope/MoscowWed, 30 Oct 2013 11:29:08 +0400 2013, 11:29:08
1

То, что уже было предложено, возможно, полезно, но в целом я бы использовал отдельную систему отслеживания проблем или управления задачами (например, Jira ) для планирования и управления вашей работой. Существуют также дополнительные инструменты (такие как Mylyn для Eclipse), которые интегрируют вашу среду IDE в систему управления задачами .

ответил Muton 30 +04002013-10-30T11:41:16+04:00312013bEurope/MoscowWed, 30 Oct 2013 11:41:16 +0400 2013, 11:41:16

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132