Які хороші прийоми збереження свого місця в коді?


21

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

Приклад:

  1. Звіт про помилку: "Зіткнення не працюють на кутах стін"

    1. Відтворення помилки призводить до того, що певні багатокутники не стикаються.
    2. Код зіткнення був написаний недоступним розробником. Отже, слідство має щось на кшталт:

Схема потоку

Під час розслідування, особливо при перегляді елементів без коду, таких як Google, можна обґрунтовано очікувати, що вони втратять своє місце в коді ( я вже переглянув цей шлях коду? Або Який шлях коду я досліджував? до цієї функції тощо). Те саме стосується і неминучих перебоїв (бос: мені потрібен [тривалий безглуздий звіт] ЗАРАЗ і т.д.)

Було б корисно мати ресурс прийомів чи інструментів для забезпечення способу відстеження свого місця в коді.


Редагувати : наведений вище приклад розуміється як потенційна ілюстрація, а не як реальна проблема, на яку потрібно відповісти.

Ще один спосіб сформулювати це питання:

Дізнавшись про нову систему, як слід відстежувати, куди ти йдеш, вивчаючи код? Йдеться не про розуміння того, чому код робить те, що він робить (що таке коментарі повинні бути), а про те, як це робити (що дізнається лише за допомогою читання коду, а не коментарів).

Відповіді:


14

Інтерфейс бульбашок намагається вирішити цю проблему, показуючи купу бітів коду одразу. (Ви застрягли у веб-переглядачі Google для Google). Це виглядає дивовижно, але я цього не пробував. Ця версія ідеї є реалізацією Visual Studio для Visual Studio Ultimate.


+1, оскільки це практичне і готове рішення проблеми. (Це теж просто трохи приголомшливо!)
Джесс Телфорд,

Одне з речей, які я придумав у своїй голові років тому, лише для того, щоб дізнатися, що воно вже існує :( +1
phresnel

здається схожим на те, що ви можете зробити в Squeak та інших Smalltalks, де ви відкриваєте нові вікна перегляду коду і можете переходити до тих способів / класів, які ви хочете в них.
Рудольф Олах

досить приголомшливо ... Я створив маленький додаток для іграшок, який забезпечує візуалізацію вашого веб-перегляду в Інтернеті аналогічним чином (при натисканні посилань новий вузол буде доданий і пов’язаний з початком). Ніколи не думав застосовувати це до візуалізації коду.
Майкл Браун

12

Окрім усіх згаданих чудових технологій, я виявив, що старомодний аркуш паперу формату A3 - це чудова допомога в цих питаннях. Запишіть свої ідеї та впорядкуйте їх у стилі розумної карти.


Так, так. Найкраща відповідь на сьогоднішній день.
Патрік Х'юз

10

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


1
Дуже практична. Я не думав використовувати управління джерелом таким чином.
Джесс Телфорд

Який редактор та налагоджувач?
Джон Гейнс-молодший

Відладчик MULTI від Vim та Green Hill.
Карл Білефельдт

У Visual Studio це CTRL + - повертатися назад, а CTRL + = йти вперед.
VitalyB

Затемнення може відображати визначення поточного символу під курсором на окремій панелі.

3

Кілька способів я відстежую:

  • Запишіть це . Зібралися за дві хвилини? Запишіть, що ви робили і де. У мене завжди лежить ручка та папір, щоб записати речі, як я кодую.
  • Закладки . У мене є 10 пронумерованих закладок, які я можу встановити.
  • Склад . Ви можете легко переглянути всю ієрархію коду, який ви пройшли. Мій редактор також дозволяє мені скопіювати слід стека і зберегти його. Наступного разу, коли я відкрию свій редактор, я можу завантажити стек-трек для швидкої навігації.
  • Навігація в редакторі . Перейти до базового члена, перейти до спадкоємця, знайти звичаї, перейти до довідки, ...

1

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


Проблема такого підходу, як правило, полягає в тому, як ви відстежуєте кілька паралельних галузей думки / дослідження?
Джесс Телфорд

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

1

Отримайте справжній інструмент для розробників / IDE - те, що коли-небудь захоплює вас. Vi, Emacs, Eclipse або будь-що інше (вибір такий же великий, як і суперечки щодо того, що найкраще, але ось інша проблема), і навчіться правильно ним користуватися . не використовуйте його, як Блокнот із виділенням синтаксису. Навчіться використовувати гарячі клавіші, а не покладатися на мишку для загальних дій (це занадто повільно). Великий екран (мінімум 1920x1200) - корисний.

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

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


Я погоджуюся, що належний IDE найкращий. Я використовую чудові оцінки vim та функції стрибків тегів. Однак у обох є обмеження: позначки буферні, а теги - лінійні. Для складних ситуацій цього все-таки недостатньо (звідси задавати це питання).
Джесс Телфорд

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

Домовились. Я просунутий початківець з vim (вмію користуватися, не замислюючись більшу частину часу, але ледь подряпав поверхню), тому я впевнений, що є речі, які я не знаю. Навіть все-таки я не думаю, що можна зробити щось таке, як відповідь psr in vi (m) (принаймні, не з мого дослідження).
Джесс Телфорд

@Jess: позначки не обов'язково локальні буфери. Знаки, що використовують великі літери, є глобальними.
Дейв Кірбі

@DaveKirby Awesome - Я люблю вивчати нові речі про vim: D
Джесс Телфорд

1

За допомогою програми Visual Studio під час сеансу налагодження ви можете використовувати вікно 'Стек виклику' (ви можете ввімкнути це в Debug / Windows / Call Stackярлику або за допомогою ярлика Ctrl+Alt+c) для відстеження потоку коду.


1
Як і в більшості налагоджувачів. Питання більш докладно, коли ви переглядаєте код вручну, включаючи дослідження за межами бази коду.
Джесс Телфорд

1

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


0

Я використовую режим org для emacs, який є інструментом для окреслення uber. З його допомогою я можу написати контур, який імітує стек викликів коду та включає прямі посилання на сам вихідний код (через org-store-link). Ви можете включити пояснювальний текст, посилання на веб-сторінки тощо (наприклад, коли ви переглядаєте Google для магічних чисел)

Це не ідеально. Наприклад, структура структури не має поняття повернення назад рівня, тому важко простежити шлях виконання, а не просто стек. Але наступне найкраще - це діаграми на папері, які я знайшов.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.