Visual Studio yoki chavandozmi? Eski va yangisini taqqoslash

Shunday qilib siz .NET dasturlarini ishlab chiqasiz, qaysi IDE (Integrated Developer Environment) sizning asosiy dasturiy vositangiz bo'lishi kerak? Rasmiy .NET qiroli: Visual Studio? Yoki Rider, Jetbraynlarning maqtovga sazovor bo'lgan IDE oilasidan bo'lgan go'dak. Bu arzimas tanlov emas, lekin ikkala variant ham juda o'xshash va aslida bir xil xususiyatlarga ega. Ular qanday farq qiladilar? Rider shubhasiz yanada zamonaviyroq va u shubhasiz ReSharper-ning kuchiga ega, lekin u haqiqatan ham .NET devori uchun uzoq vaqtdan beri mavjud bo'lgan dominant Visual Studio o'rnini bosa oladimi? IntelliCode yoki ReSharper-ning yaxshilanishi kabi so'nggi xususiyatlar Visual Studio uchun narsalarni o'zgartiradimi? Men bir nechta oylar davomida .NET dasturchisiga aylanganim kabi ikki IDEni ularning foydaliligi jihatidan taqqoslab, ularning orasidagi mazmunli tafovutlarni aniqroq qilishga yordam berishga harakat qilaman.

Bu Visual Studio 15.7.3 va Rider 2018.1 uchun yozilgan.

Mening IDE fonim

Mening safarlarim modullar (bu holda sinflar) UML diagrammasi ko'rinishida namoyish etiladigan, dasturlash bo'yicha o'qitishning oddiy vositasi bo'lgan BlueJdan boshlandi va modullar orasida harakatlanish ularni diagrammada topish va tanlashni anglatadi. Tez orada men BlueJ-ning matn muharririning xatolaridan va imkoniyatlaridan mahrum bo'ldim va Eclipse-dan boshlab IDE-ning boy xususiyatlarini o'rganishni boshladim. Eclipse-dan men oxir-oqibat Riderni ishlab chiqaradigan Jetbrains tomonidan ishlab chiqarilgan IntelliJ-ni topdim (o'sha paytda ularning kompaniyasi IntelliJ deb nomlangan).

O'shandan beri men Subtime Text va Vim kabi matn muharrirlari va to'liq huquqli IDE o'rtasida, asosan Jetbrains to'plamida (mening bepul talabalik litsenziyam yordamida) oldinga va orqaga yurdim. Yo'l davomida men ushbu matn muharrirlarini ziyorat qildim: Sublime Text, Vim, Atom, Notepad ++ va Jetbrain bo'lmagan IDE: Eclipse, Visual Studio va Jetbrains IDE: IntelliJ, Android Studio, Webstorm, Rubymine, PyCharm va Rider. Siz taxmin qilishingiz mumkin: Men Jetbrains fanatiman. Men buni eslatib o'tmoqchiman, shuning uchun men Jetbrains IDE-dan foydalanish va o'rganishga ko'p vaqt sarflaganimning noaniqligi aniq. Nisbatan men Visual Studio bilan bir necha hafta vaqt o'tkazdim, shunda Rider men uchun ishladi va unga (asosan) xushnudlik bilan o'tdim.

Qaerda VS == chavandoz

Ko'p jihatdan Rider xuddi VSga o'xshaydi: ular bir xil asosiy IDE chegaralarini joylashtiradilar, ularning imkoniyatlari deyarli bir xil. Ko'pgina vositalar va naqshlar ikkala IDE-da asboblarni yaratish, disk raskadrovka, sinov, kod navigatsiyasi kabi sohalarda o'zaro taqsimlangan. Ularning har birida plaginlar jamoasi va o'rnatilgan plaginlar kashfiyoti mavjud.

Tartib. Konvergensiya bo'ldi

Ikkala IDE-da bitta chegaralangan joylashtirilgan (markaziy qismning chap, o'ng, yuqori va pastki qismida joylashgan (shu holda muharrir)) o'rnatilgan ichki oynali yagona oynadan foydalaniladi. Yuqoridan foydalanish / test / disk raskadrovka konfiguratsiyasi va sarlavha panelini boshqarish uchun foydalaniladi. Chap, o'ng va pastki qismlardan foydalanish ikkala IDE uchun (va boshqa IDE uchun) bir xil: chap tomonda "шешім" qidiruvi fayli, pastki qismida "qurish / tuzish" jurnali va sinov dasturlari mavjud. Asbob oynalarini ikkala IDE-da chegara panellari orasiga o'tkazish mumkin.

Shu kabi vositalar to'plamlari

Nosozliklarni tuzatish, qurish / tozalash kabi ko'plab funktsiyalar ikkala IDda ham deyarli bir xil ko'rinishga ega; Aslida, Rider o'zining interfeys qismlarini qasddan VS kabi his qilish uchun ataylab ishlab chiqqan ko'rinadi. Oxir oqibat, Rider-ga qiziqqan odamlar VS-dan ko'chib o'tishlari mumkin, chunki bu de-fakto .NET dasturchisi va hozirda bozor ulushi yuqori bo'lgan IDE. Rebrayperni ishlab chiqqan VS tajribasini (VS ning yuqori qismiga funksionallik qo'shadigan) o'rganish uchun, Jetbrains ham vaqt topdi.

Rider (chapda) va Visual Studio (o'ngda) uchun echimlarni o'rganuvchi. Ular juda ko'p o'xshashliklarga ega.

Rider g'alaba qozongan joyda: VS kuchi, ammo yaxshiroq UX bilan

Men uchun ikkita IDE o'rtasidagi eng muhim farq Riderning yuqori darajadagi foydalanuvchi tajribasi (UX) bo'ldi. Men uchun bu silliqlikni, ishonchlilikni, kamroq oqimni va xiralashgan xatti-harakatlarni anglatadi va oxirida maqsadlarimga erishishimda (yaxshi ishlarni tezda bajarish) yaxshiroq qo'llab-quvvatlaydi. Jetbrains IDE-da yaxshi ishlaydigan joy - bu ma'lumotlarning ajoyib taqdimotida, toza va qisqa vizual dizaynda, yanada oqilona xulq-atvorda, intuitiv va oson o'rganiladigan xususiyatlarda. Rider albatta kuchliroq emasligi uchun u asosiy narsalarni juda yaxshi bajarganga o'xshaydi.

Riderda qaysi xususiyatlar yaxshiroq?

Men uchun eng foydali IDE xususiyatlaridan biri sifatida Rider global qidirish, kod navigatsiyasi va tergov vositalarida yanada yaxshi tajribaga ega ekanligini aniqladim. Keyingi ikkita bo'limda ikkitasini batafsil ko'rib chiqaman:

Global qidiruv

VS-ga borish men uchun hamma narsani topadi, lekin ReSharper yordamida men natijalarni ko'rmasdan oldin ba'zan yuqori kechikishni sezaman. ReSharper holda yaqinda tashrif buyurilgan fayllar unchalik yuqori emas. Chavandozlarni qidirishda hamma narsa taqqoslashda yumshoq bo'lib ko'rinadi va izchil yaxshi natijalar beradi.

String-qidiruv masalasiga kelsak: VS-ning loyihada topishi yana ishlaydi, lekin Rider-ning yo'lni topishda taqqoslaganda yosh talab etiladi va asabiy ravishda natijalarni faylning to'liq prefikslari bilan taqdim etadi (va ajratib ko'rsatilmagan), shuning uchun men yon tomonga o'tishga to'g'ri keladi (nima mumkinligini tushunib olib). haqiqiy chiziqlar nima ekanligini ko'rish uchun mayda slayder tutqichi bo'ling). Bu shuningdek chiziqlar hizalanmaganligini, ularni skanerlash va taqqoslash uchun sekinroq qilishini anglatadi. Bundan farqli o'laroq, Rider chaqmoq tezligini qidiradi va natijalarni yanada foydali tarzda taqdim etadi; yo'lni topish, shuningdek, kontekstni tezda ko'rish uchun har bir faylning qolgan qismida diqqat bilan qarashga imkon beradi.

Chavandoz (tepada) qidiruv natijalarini aniq ro'yxatlaydi, o'ng tomonda qisqartirilgan fayl nomlari va fayllarni ko'rib chiqadigan oyna. Bundan farqli o'laroq, Visual Studio (pastki qismida) bu qidiruv natijalarini buyruq satri vositasi kabi taqdim etadi.

Kodni navigatsiya qilish va tekshirish

Chavandozni topish usullari yanada moslashuvchan, taqdimoti yaxshiroq va VS-ning barcha ma'lumotlarini topgandan ko'ra bir oz yumshoqroq. Shunga qaramay, Riderning taqdimoti yanada toza va Rider sizga qanday kontekst ko'rsatilganligini (loyihani, paketni, sinfini, usulini ko'rishim kerakmi?) Tanlab olaman va natijalarni men o'qigan / yozgan holda bo'lishimga imkon beradi. . VS yo'qolgan polshaga misol: muntazam ravishda ro'y beradigan belgiga (masalan, o'zgaruvchiga, usuliga va hokazo) faqat bitta murojaat mavjud bo'lganda, Rider doimiy yonma-yon turgan joyni ro'yxat bilan to'ldirish o'rniga, unga o'tadi. odatda siz navigatsiya qilishingiz kerak bo'lgan foydalaniladigan narsalar haqida.

Rider-ning ma'lumotlari (chapda) va Visual Studio-da barcha ma'lumotnomalar topilgan (o'ngda).

Tanaffuslarni kamaytirish va kutish

ReSharper bilan VS UI oqimini to'xtatib qo'yganga o'xshaydi (garchi bu juda yaxshilangan bo'lsa-da, men buni bir necha oy oldin yozgan edim). Mening kompaniyamning monolit loyihasi yuklanganida, men darhol ReSharper VS ning pasayishiga olib kelishi haqida ogohlantiraman. VS / RS mening topshiriqlarni bajarishimga xalaqit beradigan kamdan kam. Ko'pincha men muharrirni odatdagidan foydalanganda. Global qidirish xususiyati, uni birinchi marta ishlatganimda, ba'zida tayyor emasdek tuyuladi, chunki men terayotgan matnni ko'rishga bir necha soniya vaqt ketadi va natijada menga qidiruv natijalari ko'rsatiladi. Men VS bilan ishlagan loyiham eski (10 yoshdan katta), ammo shunga o'xshash merosga ega bo'lgan boshqa ko'plab korxonalar mavjud .NET loyihalari. Chavandoz VS-ga o'xshash vaqti-vaqti bilan hiqichoqlardan aziyat chekmoqda, ammo bu xuddi shu yirik loyihada umumiy javobgarlik, qidirish tezligi va fayllarni sinxronlashtirish vaqtlari kabi muhim sohalarda barqarorlikni namoyish etadi.

Ushbu turdagi muammolar juda hayajonli bo'lib tuyulishi mumkin, ammo ular foydalanuvchi uchun oqimni to'xtatadi va (hech bo'lmaganda men uchun), ayniqsa, IDE suveren dastur bo'lganligi sababli (sizning ishingizga ko'proq e'tibor qaratadigan) og'irlashadi. Tadqiqotlar shuni ko'rsatadiki, odamlar biron bir narsani ma'lum darajada interfaollik darajasiga etganda, uni odam deb bilishadi. Sizni kun bo'yi biron bir sababsiz doimiy ravishda uzib qo'ygan odam haqida qanday fikrdasiz?

ReSharper bilan VS biz uchun fayl o'zgarishlarini qayta yuklash juda sekin, shuning uchun VS yirik loyihalarni kutishidan ko'ra uni yopish va qayta ochish tezroq. Hozirgi ish joyimga kirganimda, ishlab chiqaruvchilar VS-ni filiallar o'rtasida almashtirishni xohlaganlarida har safar yopib ochish uchun buyruqlar satrlari svs (VS-ni yopish) va vs (open vs) -ni ishlatishlari odatiy holga aylanganidan bezovta bo'ldim. Go'yo VS dizaynerlari uni manba nazorati ostidagi yirik loyihalarda foydalanilishini kutishmagan. Rostini aytsam, ushbu kechikish men birinchi marta duch kelganimdan beri kamaydi, ayniqsa ReSharper o'chirilgan bo'lsa.

Bunday xulq-atvorning yana bir misoli, men birinchi marta (yoki filialni almashtirishda) yuklamoqchi bo'lganimda (yoki biron bir narsa qilishni) xohlaganimda: VS to'liq o'qib bo'lmaguncha va echimni yuklayotganini tushunmaguncha menga hech narsa qilishimga yo'l qo'ymaydi. Riderdan farqli o'laroq, Rider fayllarni o'zgartirishni muharrirlarga tezda yuklaydi va darhol menga Rider tayyor bo'lganda keyinga qoldirilishi va avtomatik ravishda bajarilishi mumkin bo'lgan harakatlar boshlashiga imkon beradi.

Chavandoz qurishni keyinga qoldirishi mumkin.

Kiritishning kechikishiga qiziqqanimda, men duch kelgan bir narsa bu Jetbrain tadqiqotchisi tomonidan muharrirning sezgirligi va uni Jetbrainning ID-larida qanday qilib yaxshilash mumkinligi haqida yozganligi. Yozib olish natijalariga ko'ra ushbu yaxshilanishlar IntlliJ IDEA-ni Sublime Text va Notepad ++ kabi engilroq muharrirlarga qaraganda pastroq muharrirga qoldiradi.

Resurs integratsiyasi va Mercurial-ning yordami

Kodlarni tekshirishga integratsiyalashish men IDE-dan olishni kutmagan narsa emas, lekin bu mening ish jarayonimga xush kelibsiz. Men qaerda ishlayotgan bo'lsak, u erda men ishlaydigan Upsource (Jetbrains kodni ko'rib chiqish vositasi) dan foydalanamiz, shuning uchun Rider bilan integratsiya IDE-ga foydali ko'rib chiqish harakatlarini qo'shib beradi, ko'rib chiqilayotgan kodni qayta ko'rib chiqish / qayta ko'rib chiqish, to'g'ridan-to'g'ri muharrirdan sharhlar berish. , va ko'rib chiqish bildirishnomalarini olish. Upsource plagin yordamida vaqti-vaqti bilan o'tmishdagi kodlarni ko'rib chiqish uchun vaqti-vaqti bilan fayllarning chekkasida sharhlangan sharhlarni ko'rishni boshlaysiz. O'tmishning barcha sharhlari ko'rsatiladimi yoki qanday tanlanganiga amin emasman, ammo o'tmish koderlaridan tushuncha olish qiziq bo'lishi mumkin deb o'ylayman.

Rider-ning rasmiy Upsource plaginidan o'tmishdagi sharafli kodni sharhlash

Eski va yangisi

Jetbrains eridan kelib chiqqan holda, VS o'tmishdagi IDE kabi his etadi, uning ustida zamonaviy xususiyatlarga ega. Bu menga Microsoft Office 2003 yoki Eclipse (IDE) -ni eslatadi, u xususiyatlarning tezkor armiyasi pichog'i ekanligi va birligi yo'qligi bilan tanilgan. Bugungi kunda ishlab chiquvchilar git kabi manbalarni boshqarish vositalarini yaxshi biladigan va o'zlarining loyihalari versiyalari o'rtasida doimiy ravishda almashib tursalar ham, VS foydalanuvchidan fayllarni diskka saqlashni tasdiqlashni talab qiladi (VS yo'q, men tahrirlangan fayllarimning ishlashini xohlamayman. bir vaqtning o'zida filiallarni almashtirish). Bunga javoban Jetbrain IDElari o'zlarini yaxshi his qilishadi; vizual minimal va aniq va ijrochi.

Riderning kamchiliklari: nomuvofiqliklar va eski .NET-larni qo'llab-quvvatlamaslik

Men Riderga bergan barcha maqtovlarimning bir nechta usullari bor, ular meni yo'qotadi; eng katta narsa, ba'zida men ishlaydigan kompaniyada bizning asosiy echimimizni (.NET loyihasi) qurishda muammo bo'lishi. Eski .NET xususiyatlari va VS tomonidan taqdim etiladigan profil vositalari yo'q, ammo men uchun vaqti-vaqti bilan ular juda foydali.

Oh yo'q, chavandoz. Muammolarni yaratmoqchimisiz?

Men Rider bilan bog'liq bo'lgan bir muammo bu C # moduli bilan bog'liq bo'lgan ba'zi bir import bayonotlarini tuzishni rad etish (bu nima ekanligini bilib olganda tahrir qilaman). Men hozirda bir marta VS bilan qurish orqali ushbu muammoni hal qilaman va keyin Rider importni qabul qilganga o'xshaydi.

Ushbu qurilish muammosi umidsizlikka tushib, meni butunlay VS-dan Rider-ga o'tishimga to'sqinlik qiladigan asosiy to'siqdir. Men VS haqida shikoyat qilgan narsalarim uchun, hech bo'lmaganda, menga ishonchli echimlarni topishga imkon beradi (yoki agar shunday bo'lmasa, kimdir tez orada echimni topadi, chunki mening ishimdagi hamma boshqalar VSdan foydalanadi).

Rider eski .NET xususiyatlarini qo'llab-quvvatlamaydi

Men VS-ni (Post-Rider) chaqirgan yana bir narsa bu .NET Veb Boshqaruvi uchun designer.vb faylini yaratishdir. Bunga borish qiyin edi, chunki MS veb-shakl elementlarining bir-biri bilan qanday bog'langanligi haqidagi ma'lumot dunyodan yo'qolganga o'xshaydi (mening hamkasblarim bilmas edi va men Internetda javob topa olmadim). Ehtimol, Rider-ning ishlab chiqaruvchilari buni ham unutishgan.

VS ning yangi "IntelliCode"

VS o'zining Intelli AdSense bir martalik Jetbrain Kodni To'ldirish dasturida ReSharper marketingida old va markazni egallab turgan so'nggi yutuqlari? IntelliCode avvalgi Intelli AdSense-dan GitHub-dagi obro'li loyihalarda ulardan foydalanishiga asoslanib foydalanishni API-larga (usullar / funktsiyalar) ongli ravishda taklif qilib, oldingi Intelli AdSense-ga qaraganda bir qadam oldinga qadam tashlaydi.

Menga bu hayotning yaxshi sifati kabi ko'rinadi, ayniqsa kutubxonalar / ramkalarni o'rganish haqida. Jetbrains IDE va ​​ReSharperning asosiy chizmalaridan biri bu foydali kod takliflari; Jetbrains kompaniyasining vanil VS va ReSharper mahsulotlarini marketing taqqoslashi bo'yicha, ularning eng yaxshilari kod tahlillari va takliflar xususiyatlari. IntelliCode Visual Studio jamoasi haqiqatan ham hayot sifati haqida qayg'urishini va Jetbrains-ga o'xshash funktsiyalar bilan raqobatlasha olishlarini ko'rsatmoqda.

Xulosa

Shunday qilib, men Rider men uchun ishlab chiquvchi sifatida yaxshiroq tajriba etkazib berishini aniqladim. Vizual dizayni aniq, u yanada zo'r, u o'zini yanada oqilona tutadi; odatda yaxshi foydalanish oson.

Buning sodir bo'lishi mumkin bo'lgan ko'plab sabablar mavjud: ehtimol, VS devlari IDElarning kelajak avlodlari ('02) orasida boshlangan qadimgi platformani (birinchi '97 yilda chiqarilgan) va IntelliJ (Jetbrains 'platformasi) ni to'kishda qiyinchiliklarga duch kelishgan. Jetbrains, shuningdek, ishlab chiqaruvchilarga e'tibor qaratishga qodir, Microsoft esa xizmat ko'rsatadigan ko'plab mijozlarga ega. Bundan tashqari, Jetbrains VS-ning tepasida ReSharper-ni rivojlantirish orqali olingan bilimlar orqali Rider-ga o'tishga muvaffaq bo'ldi.

Ammo, menga VS tomonidan yoqadigan narsa (uning funksionalligi) Rider uchun unchalik farq qilmaydi. Men VS ishlashi haqida ba'zi shikoyatlarimni ReSharper bilan noqulay integratsiyaga bog'lashim mumkin; va IntelliCode joriy etilishi bilan ReSharperning pasayishida jozibadorlikni ko'rishim mumkin. Suratda Rider bilan birgalikda ReSharper endi IDE dunyosida joy topa oladimi?

VS uchun ingl. Yoki UX-ning yangi dizaynlari uzoq yo'lni bosib o'tishi mumkin va Visual Studio Code ba'zi usullarda IDE / muharririni toza (qisqartirilgan) funktsiyani taqdim etadi. Ehtimol, ushbu engil IDE / VS Code yoki Sublime Text kabi tahrirlovchilar VS va Rider kabi og'ir vaznli IDE-larni bosib o'tishlari mumkin, agar jamoatchilik tomonidan boshqariladigan plaginlar IDE vositalariga qaraganda yaxshiroq tajribaga ega bo'lishsa (bu plaginlarni birlashtirish muammoli bo'lsa ham).

Hozirda men VS bilan Riderga zaxira sifatida yopishib olaman. Men IntelliCode, profillar vositalari va Riderda sog'inib qolishim mumkin bo'lgan har qanday boshqa kuchlarga ozgina hasad qilaman, lekin men Jetbrainning IntelliCode-ga qanday munosabatda bo'lishidan xursandman; albatta ular oxir-oqibat kodni to'ldirishni yaxshilaydilar va men uni boshqa Jetbrain IDElarida ham ishlatishim mumkin.