Know your Visual Studio

Има много причини да опознаем способностите на нашето IDE. За мен от най-голямо значение са бързо писане, форматиране и комфорт. В тази статия ще споделя кои са най-използваните от мен шорткъти, начинът ми на работа с тях и ситуациите при които ги използвам. Използването на някои от тях може да ви се стори незначително и дребнаво, но когато времето ви притиска или нещата не вървят добре всяко губене на време е изключително дразнещо и минимизирането му силно спомага за по-спокойна работа, поне при мен. Накратко темите, които ще засегна са:

  • Навигация във VS, създаване на проекти и работа с файлове
  • Навигация във файлове, рефактуриране, шорткъти в едитора и дебъг
  • Snippets – какво е това, кои използвам най-често и как да си напишем собствени     линк към репозиторито с моите снипети. Всички които ползвам и ще напиша за в бъдеще можете да намерите там.

“We must use time as a tool, not as a couch.” – John F. Kennedy

Навигация във VS

Нещото с което ще започна е използването на бързите клавиши в IDE-то. Още в началната страница при създаване на нов проект натискам Ctrl+Shift+N. По този начин създавате нов Solution, без значение дали сте на стартовата страница или вече сте отворили такъв – той се затваря и започвате нов в същата инстанция на VS(ако вече имате създаден мисля, знаете откъде да го отворите най-лесно). Това е един от малкото прозорци, къдетоnewProjectWindow предпочитам да използвам мишка. Избирането на видове солюшъни винаги е било объркващо от клавиатурата и най-често създавам нещо неправилно. Единствено ако искам да създам празен солюшън с Ctrl+E пиша в сърча “blank”. Ако правилният солюшън и директория  са избрани използвам Alt+N, за да достигна до полето с името.

newProjectWindow2

Когато имам нужда от още проекти ги добавям с Alt+F, D, N. Тази команда показва предишният скрийн, само че този път добавяме проект, а не създаваме напълно нов солюшън. Знам, че много от вас го знаят, но когато проверявах домашни в академията се убедих, че явно не на всички е известно и затова ще спомена, каква конвенция се използва, когато си пишете задачите заnamingTasks академията. Проектите са много по-лесни за работа и проверка, когато са подредени по начина, в който са зададени в презентацията. Именуването става като сложите номера на задачата и точка пред заглавието на проекта. Ако са повече от 9, слагате 0 пред числата по-малки от 10 и по този начин наредбата ви ще се запази. ————>

Често се случва, когато работя в даден файл да искам да променя нещо по друг. Ако той вече не е отворен използвам Ctrl+Alt+L да прехвърля фокуса върху Solution Explorer и от там навигирам със стрелките. След като го намеря влизам в него с Enter. Внимавайте когато използвате тази команда, защото е много сходна с Ctrl+L, която трие целият ред, в който сочи курсора на едитора. За затваряне на солюшъна използвам Alt+F, T. StartPage се отваря с Alt+V, G. Като цяло почти всички шорткъти по контролите на VS могат да бъдат видени с натискане на Alt.

Работа във файлове

Пиша от лаптоп и едно от най-досадните неща е, когато искам да преместя скрола на едитора надолу или нагоре. Сигурно вече сте разбрали, че мразя всичко, което ми вдига ръцете от клавиатурата, та скролването надолу или нагоре  се извършва с Ctrl + ArrowDown/ArrowUp. Не е перфектно, защото е бавно и ако ми трябва по-голямо скролиране пак трябва да използвам мишката/пада, но ако скролваше бързо сигурно щях да се оплаквам, че е бързо, а не бавно. Следващата често използвана комбинация е Ctrl + ArrowLeft/ArrowRight. Така вместо да мести курсора с един символ се минава директно от дума на дума и при по-дълги редове е незаменима. Когато искам да маркирам нещо добавям и shift – Ctrl+Shift+ArrowLeft/ArrowRight. Като стана дума за редове с бутоните Home се достига началото на реда и End за края – отново много полезни при дълги редове, примерно дефиниции или изрази. Друга често използвана комбинация е Ctrl+Enter, така се създава нов ред на мястото на курсора и всичко под него се измества надолу. Използвам я  винаги, когато искам да разширя пространството в някой метод или клас, по този начин не се налага да се връщам нагоре със стрелките, още по-хубаво е, че запазва редовете цели и няма да счупи даден стейтмънт. С Ctrl+Shift+Enter се прави същото нещо, само че оставя редовете отгоре. За следващата функционалност разбрах съвсем наскоро и определено се сещам за няколко случаи, в които би ми била много полезна. Клипборда във VS е всъщност Clipboard Ring. Това означава, че пази последните 20 копирания. Със задържане на Ctrl+Shift и многократно натискане на V се цикли през копираните неща. Тук трябва да кажа, че ако се слага един и същи код е добре първо да се помисли, дали не е добре да се отдели в отделен метод и 90% от случаите е така, за останалите 10% има clipboard ring.

Във Visual Studio има една много полезна функционалност наречена bookmark. Когато работя в по-голям проект и често ми се налага да оправям нещо по много пъти това ми е спестявало много нерви. Чрез буукмарците може да се връщаш на маркираното място, без значение дали се намираш в друг файл или проект, стига естествено да си в същияbookmarkIcon солюшън. Позиционирате курсора там, където искате да го сложите и натискате Ctrl+K, Ctrl+K(пак така се махат). Ще видите в лявата страна една малка балалайка – това ви е букмарка. Циркулирането през тях се извършва с Ctrl + K, Ctrl + P.

От опциите за рефактуриране ми се е налагало да използвам единствено Extract Method(Ctrl + R, Ctrl + M). За моя изненада работи изключително добре, даже има милостта да слага ref в аргументи, където се налага и не чупи логиката по-нататък. Оправяне на идентацията в целият документ става с Ctrl+K, Ctrl+D – много полезно, когато вземете код от някой друг. За жалост не слага скоби и не прави коментарите на английски, очаквам това в новата версия на VS. Референциите към даден обект/променлива се показват с Shift+F12 – ако ми трябват повече от 5 секунди да намеря всички места където се използва нещо прибягвам към тази комбинация и досега ми е спестила много пулене пред кода.

Debug mode

Понякога проекта може да се окаже претрупан с break points лесно могат да се махнат с Ctrl+Shift+F9. С Ctrl+Alt+D се показва native кода – добре е да се включи и JIT компилатора. Shift + F5 спира дебъг сесията. Освен стандартните бутони за дебъгване тук ще спомена някои, които започнах да използвам от скоро и тотално промениха дебъг експириънса ми. Когато се влезе в даден метод с F11 стигнем донякъде в него и останалата част вече не ни интересува с Shift+F11 се излиза от него дебъгването продължава откъдето е извикан метода. Преди за да постигна подобен ефект слагах break point след извикването на метода и с F5 да продължа до него. Понякога watch прозореца става претъпкан или е много по-удобно променливите да се групират по някакъв начин. Това може да стане с Ctrl+Alt+W+1/2/3/4. Тази команда ще изведе нови прозорци в които можем семантично(или както ни е кеф) да разделим променливите, които ни интересуват. За добавянето не намерих друг начин, освен drag’n’drop.

Snippets

ForSnippet

Има ли нещо по-добро от това да ускорим писането на код? Да. Въобще да не пишем такъв. Снипетите представляват малки парчета код, които напълно елиминират формалностите около многократното писане на код като for цикли, често използвани функции и въобще каквото ви мързи да го пишете повече от един път. Обикновено имената им са кратки и когато изберем правилният в интелисенса се натиска два пъти Tab. Много от тях предлагат допълнителна гъвкавост, като ни позволяват да променяме имената на написаните променливи, какъвто е случаят с for. В него има два параметъра i и length – можем да ги променяме много бързо или ако i ни харесва с натискане на tab курсора се прехвърля на следващата променлива. Веднъж започнете ли да ги ползвате, ще го правите винаги.

Най-често използвам for, foreach и cw. Във for обаче има много досадно поведение. Когато го напиша и примерно искам да променя знака за сравнение на <= или > след като се изтрие length и се натисне още един Backspace за да се стигне до заветния оператор курсора се прехвърля на i. Ако сте ползвали снипета няма как да не сте се натъквали на тази екстра. Затова реших да си напиша собствен фор – forw. При него имаме същото нещо, но го няма знака за сравнение, тоест като се стигне до втората променлива директно пиша каквото ми трябва без да имам проблеми с непредвидено поведение на курсора и възможността да ползвам Tab се запазва.

Как да пишем собствени снипети

SnippetsManager

Дълго се рових в нета и така и не можах да намеря свестен туториал за това, но се оказа, че не ми и трябва – доста лесно е. Отваряте Code Snippets Manager – Ctrl+K, Ctrl+B. В него са показани всички снипети заредени от VS в момента. В полето Location се вижда къде се намират папките от които са заредени, отивате в желаната от вас и започвате да разглеждате снипетите – те представляват xml файлове с разширение snippet, така че VS няма да има никакви проблеми да ги отвори. Разгледайте добре for и cw – от там се вижда какъв е начина за създаване на динамично поведение и правилното викане на метод. Променливите се обграждат с $. $selected$ се използва, когато снипета ви може да обгърне даден код. $end$ оказва къде ще бъде курсора след написването на снипета. Всичкият код се пише в тага <![CDATA[ тук ]]>. След като го напишете можете да го сложите в някоя от вече съществуващите папки, но аз предпочитам да си създам собствена папка, от мениджъра да натисна Add и да я добавя по този начин. Така няма опасност да променя или изтрия нещо по системните снипети.

За финал

Въпреки, че статията се получи по-дълга отколкото очаквах, едва ли съм казал всичко най-важно. Ако сте нови в програмирането обема може да ви се стори твърде голям, но не е. Никой не е научил това за 1 час, всъщност никой не го е учил. Всичко е практика.

Posted in Programming Tagged with: , , , , , , , , , , ,
One comment on “Know your Visual Studio
  1. belichev says:

    Жоре благодаря много, сайта е прекрасен с много пълзотворна информация и съвети :)

Leave a Reply

Your email address will not be published.