مباحث درباره ی افزونه های Visual Studio

SajjadKhati

کاربر فعال <A href="http://forum.majidonline.com/f
سلام استاد .

استاد ، اگه میشه درباره ی هوش مصنوعی Resharper یه کم بیشتر توضیح میدین که اگه اشتباه نکنم میگین از هوش مصنوعیِ IntelliCode در Visual Studio 2022 بهتره؟
من درباره ی این قابلیت در Resharper و Rider مختصرا تحقیق کردم ، همچین قابلیتی را ندیدم .
قابلیت Code Completion را دیدم که یه کم از Intellisense شاید بهتر باشه .

به نظرتون میارزه که Resharper را نصب و اسنادش را برای یادگیری پیگیری کنم (البته اگه کنم ، در آینده این کار را میکنم) .
من با Visual Studio مشکلی ندارم و همین جوری ، ابزارها و قابلیت هاش برام کافی هست . باز به نظرتون بهتره همین جوری بدون Resharper کار کنم یا اینکه برای یادگیری اسنادش وقت اضافه ای صرف کنم؟

تشکر استاد .
 

the_king

مدیرکل انجمن
سلام استاد .

استاد ، اگه میشه درباره ی هوش مصنوعی Resharper یه کم بیشتر توضیح میدین که اگه اشتباه نکنم میگین از هوش مصنوعیِ IntelliCode در Visual Studio 2022 بهتره؟
من درباره ی این قابلیت در Resharper و Rider مختصرا تحقیق کردم ، همچین قابلیتی را ندیدم .
قابلیت Code Completion را دیدم که یه کم از Intellisense شاید بهتر باشه .

به نظرتون میارزه که Resharper را نصب و اسنادش را برای یادگیری پیگیری کنم (البته اگه کنم ، در آینده این کار را میکنم) .
من با Visual Studio مشکلی ندارم و همین جوری ، ابزارها و قابلیت هاش برام کافی هست . باز به نظرتون بهتره همین جوری بدون Resharper کار کنم یا اینکه برای یادگیری اسنادش وقت اضافه ای صرف کنم؟

تشکر استاد .
هیچکدوم از اینها هوش مصنوعی پیچیده ای ندارند، شما باید ببینید کدوم ابزار بهتر براتون جواب میده.
نیازی نیست برای یادگیری کار با ReSharper اسنادی رو مطالعه کنید، نصب کردنش برای استفاده از اغلب کارکرد هاش کفایت می کنه.
مهمترین کاری که انجام می دهید اینه که دوره ای یا زمانی که فرصتش رو دارید با Inspect کردن کدتون از ReSharper میخواهید بهتون توصیه های لازم رو بکنه، بسیاری از تغییرات رو حتی خودش میتونه بصورت خودکار و گروهی انجام بده.
قبلا هم گفتم و تکرار می کنم، ReSharper برای بهینه سازی کد و یادگیری اصولی یکسری نکات در کد نویسی خیلی مفیده و اگر تا حالا ازش استفاده نکرده اید ضرر کرده اید. هم موقع نوشتن کد و هم بعدش میتونه کدتون رو Inspect کنه و بگه فلان جا رو اینطور بنویسید بهتره یا فلان جا کدتون ایراد منطقی داره.
و با وجود اینکه تنظیمات بسیار زیادی داره، این قابلیت رو هم داره که خودش کدتون رو بررسی کنه و بر اساس اون قالب و فرمت و شیوه که در کدتون دارید، تنظیماتش رو به روز کنه.
و معایبش هم افزایش بار پردازنده و مصرف حافظه است که میتونه کارکرد ویژوال استدیو در یک سیستم ضعیف کند کنه.
 

SajjadKhati

کاربر فعال <A href="http://forum.majidonline.com/f
هیچکدوم از اینها هوش مصنوعی پیچیده ای ندارند، شما باید ببینید کدوم ابزار بهتر براتون جواب میده.
نیازی نیست برای یادگیری کار با ReSharper اسنادی رو مطالعه کنید، نصب کردنش برای استفاده از اغلب کارکرد هاش کفایت می کنه.
مهمترین کاری که انجام می دهید اینه که دوره ای یا زمانی که فرصتش رو دارید با Inspect کردن کدتون از ReSharper میخواهید بهتون توصیه های لازم رو بکنه، بسیاری از تغییرات رو حتی خودش میتونه بصورت خودکار و گروهی انجام بده.
قبلا هم گفتم و تکرار می کنم، ReSharper برای بهینه سازی کد و یادگیری اصولی یکسری نکات در کد نویسی خیلی مفیده و اگر تا حالا ازش استفاده نکرده اید ضرر کرده اید. هم موقع نوشتن کد و هم بعدش میتونه کدتون رو Inspect کنه و بگه فلان جا رو اینطور بنویسید بهتره یا فلان جا کدتون ایراد منطقی داره.
و با وجود اینکه تنظیمات بسیار زیادی داره، این قابلیت رو هم داره که خودش کدتون رو بررسی کنه و بر اساس اون قالب و فرمت و شیوه که در کدتون دارید، تنظیماتش رو به روز کنه.
و معایبش هم افزایش بار پردازنده و مصرف حافظه است که میتونه کارکرد ویژوال استدیو در یک سیستم ضعیف کند کنه.

سلامی مجدد استاد .
خیلی ممنون استاد از پیشنهادتون .
Resharper 2021.3.1 را هم توی Visual Studio 2019 و هم در نسخه ی 2022 نصب کردم .

در دید اول خوب هست .
ولی همونطور که قبل اش هم یه جستجو درباره اش کردم ، حداقل تا حالا ، قابلیتی ازش را ندیدم که مثل IntelliCode ئه Visual Studio 2022 باشه .

حتی نصب و فعال بودنِ Resharper ، تاثیرِ ضعیفی روی IntelliCode ئه VS 2022 میذاشت و در جاهایی (هر چند کم) باعث میشد که IntelliCode ، پیشنهاد نده (اما وقتی Resharper را غیر فعال میکردم ، اون پیشنهاد را میداد) .
هر چند اون جاها و این حالت (که Resharper روی IntelliCode ئه VS 2022 تاثیر بذاره) ، کم بود و معمولا زمانی که میخواستیم شی ای بسازیم بود .

در کد زیر ، در VS 2022 ، وقتی Resharper غیر فعال بود :

C#:
            StringBuilder[] stringBuilders = new StringBuilder[3];
            stringBuilders[0] = new StringBuilder("1");
            stringBuilders[1] = new StringBuilder("2");
            stringBuilders[2] = new StringBuilder("3");

            foreach (StringBuilder item in stringBuilders)
            {
                string itemString = item.ToString();
                if (!string.IsNullOrEmpty(itemString))
                    MessageBox.Show(itemString);
            }

کدهای خیلی کمی از این کدِ بالا را خودم نوشتم .
یعنی من فقط اون StringBuilder[] ئه اولش را نوشتم (اون هم بخشی از این را نوشتم) ، بقیه در خط اول را تقریبا IntelliCode پیشنهاد داد .
خط دوم را بجز مقدار "1" را که خودم نوشتم ، بقیه را IntelliCode پیشنهاد داد .
چون مقدار 1 در خط اول را نوشتم ، خودش فهمید و خط سوم (خطی که stringBuilders[1] نوشته) را خودش کاملا پیشنهاد داد (یعنی مقدار "2" را خودش نوشت) .
خط چهارم هم همینطور .

خطِ foreach را کاملا من نوشتم .
بعد که Enter زدم (با کلیک کردن در فضای خالیِ Editor پیشنهاد نمیده . من ، Enter را زدم و)، خط بعدی (خطی که متغییر itemString نوشته) را کاملا خودش پیشنهاد داد .
خط بعدی (بجز عملگرِ ! را که من نوشتم) ، بقیه را خودش پیشنهاد داد .
خط بعدی که MessageBox اش را من نوشتم و بقیه را خودش پیشنهاد داد .

========

منتها وقتی Resharper فعال هست ، انگار (چون تازه باهاش آشنا شدم ، دقیقا نمیدونم) زمان هایی که شی ای میدیم یا متدی را فراخونی میکنیم ، روی IntelliCode تاثیر میذاره و باعث میشه که IntelliCode پیشنهاد نده .

فرضا زمانی که کد بالا را مینوشتم ، وقتی Resharper فعال بود ، وقتی MessageBox را مینوشتم ، دیگه در این خط ، IntelliCode پیشنهاد نمیداد (و باید خودم متد Show را فراخونی میکردم و متغییر itemString را توش مینوشتم) .

==========

اما خودِ Resharper ، قابلیتی شبیه این (IntelliCode ئه VS 2022) نداشت .
نهایتا چیزی شبیه به IntelliSense ئه Visual Studio داشت که یه کم ازش بهتر بود .


همین کد بالا را بدون قابلیت IntelliCode ئه VS 2022 ، یعنی در نسخه ی VS 2019 به همراه Resharper مینویسیم ، خیلی بیشتر طول میکشه و نهایتا از قابلیت IntelliSense ئه Resharper یا VS 2019 میتونیم استفاده کنیم .


ولی Resharper ، خوبی های دیگه ای هم انگار در دیدِ اول داره . مثلا اینکه هشدار میده که فلان متغییر ات ممکنه ارور Null Refrence را پرتاب کنه و از این نوع یادآوری ها که کمک کننده هست .

راستی ، انگار یکی از معایب VS 2022 ، مصرف زیاد حافظه هست . یک پروژه (جوری که باهاش یک کار را هم در) VS 2022 و هم در VS 2019 میکنم و باز کردم ، اما در VS 2022 حدودا 2.6 گیگ و در VS 2019 حدود 1.5 گیگ استفاده میکنه .
تشکر استاد .
 
آخرین ویرایش:

SajjadKhati

کاربر فعال <A href="http://forum.majidonline.com/f
سلامی مجدد
استاد ، وقتی Resharper فعال هست و کد مینویسم ، اندازه ی فونتِ قسمت توضیحات اعضا ، خیلی کوچیک تر هست (توی VS این طور نبود . منظورم ، وقتی که Resharper فعال نیست و از IntelliSense ئه VS استفاده میشه ، این طور نیست) .

در عکس زیر ، سمت راست که توضیحات (عضو Width) را نوشته ، معلومه که چقدر ریزتر هست :


1.JPG


توی تنظیمات Environment > Font and Colors رفتم و در قسمت Display Items ، خیلی گزینه ای داشت که با Resharper شروع میشد :


حالا میدونین که کدوم گزینه ی اون Resharper ، برای تنظیم کردنِ فونتِ مربوط به این قضیه هست؟

-----------

یه مشکلی هم که IntelliSense ئه Resharper داره اینه که در قسمت آخرِ IntelliSense اش که آیکون ها را نمایش میده ، اگه عضوی بنویسیم که توی اون گروه نباشه ، آیکونِ مربوط به اون را کمرنگ نمیکنه اما VS این کار را میکرد .
فرضا در لیست بالا ، اعضای شیِ this ام ، عضوِ فیلد ای نداره که در اون عبارت wi پیدا بشه که در این صورت ، VS ، آیکون مربوط به فیلد را کم رنگ میکرد اما Resharper نمیکنه .

تشکر استاد
 

SajjadKhati

کاربر فعال <A href="http://forum.majidonline.com/f
سلامی مجدد
استاد ، من IntelliSense ئه Resharper را غیر فعال کردم تا از IntelliSense ئه VS استفاده کنه (اما بقیه ی گزینه های Resharper را فعال باقی گذاشتم) .

این رو برای آینده میگم که از چه مسیری هست :
در VS در مسیر Option > Resharper > Option و در صفحه ی تنظیمات Resharper هم در مسیر Environment > IntelliSense > General و گزینه ی Visual Studio را در لیست انتخاب کردم (عکس میزارم برای دفعات بعد هم آسونتر باشه) :


2.JPG

که با گزینه ی آخر (Custom IntelliSense) میشه مشخص کرد که IntelliSense اش در چه زبان هایی غیر فعال یا فعال بشه (احتمالا فقط در #C غیر فعال کنم چون IntelliSense ئه xaml اش به نظر میاد یه کم بهتر از VS باشه) .

================

چون به نظرم ، یه کم که کار کردم ، هر چند IntelliSense ئه #C اش ، خوبی هایی داشت ولی در کل ، نسبت به IntelliSense ئه سی شارپِ VS ، ضعف هایی داشت :

- یکی اش اینکه نمیدونم چرا انگار گاها در بعضی از اشیاء ، نام اعضاش را در توضیحاتِ IntelliSense ، نمیگفت که از کدوم کلاس هستن (فرضا در ViewModel ام که جز یکی ، شیِ بقیه را از کلاس Object نمیگفت و تفکیک نمیکرد) .

- دوم اینکه در لیست IntelliSense اش ، extension method هایی را میاره که من فضای نام اش را اصلا using نمیکنم . فرضا اکستنشن متدهای کلاس Microsoft.OneGet.Utility.Extensions.SingletonExtensions که فضای نام اش را در فایل cs ام اصلا using نکرده بودم .

- سوم اینکه با لیست کردن template ها (که اسمش را خودش انگار همچین چیزی گذاشت) مثل not null و اینها در لیستِ IntelliSense ، و همچنین فرمت و چیدمانش هم جوری هست که باعث شلوغ به نظر رسیدنِ IntelliSense اش میشه .

- رنگ بندی اعضای IntelliSense اش هم به نظرم زیاد درست انجام نشده . و به همراه مشکلی که در پست قبل گفتم (کم رنگ نشدن آیکون در صورتی که توی لیست موجود نباشه) .

- آخریش اینکه حتی قابلیت IntelliCode که مایکروسافت در نسخه ی 2019 اش گذاشته بود که باعث میشد که اعضای پر کاربردتر را با آیکون ستاره در IntelliSense ، علامت گذاری کنه و در بالای فهرست بیاره را هم نداره (قابلیت IntelliCode ئه Visual Studio 2022 که بصورت هوش مصنوعی پیشنهاد کامل کردن کد را میده منظورم نیست که اصلا قابل قیاس با IntelliCode ئه نسخه ی قبل اش نیست) .

همه ی این دلایل باعث شده که به نظرم IntelliSense ئه Resharper ، ضعیف تر از IntelliSense ئه VS باشه و این آیتمش را (حداقل برای سی شارپ) ، غیر فعالش کردم .

===============

البته قضیه ی Inspect کردن کد که گفته بودین ، نمیدونم قضیه اش چیه؟
اگه بصورت کلی و خیلی خلاصه (در یکی دو خط) بگین این قضیه به چه درد میخوره ، ممنون میشم .

و البته نمیدونم هم کجا باید قابلیت های مهمِ Resharper را هم ببینم که کجاست؟
یعنی من الان از قابلیت IntelliSense اش خبر دارم با فرضا اینکه زیر کدها خط میکشه و هشدار میده و میگه که فلان کدت ، ممکنه خطای null reference را پرتاب کنه و از این جور چیزها .
باز قابلیتی هست که مهم باشه و به کارمون بیاد و نیاز به توجه کردن مون بهش داشته باشه؟

تشکر استاد .
 

SajjadKhati

کاربر فعال <A href="http://forum.majidonline.com/f
سلامی مجدد استاد .
استاد ، میگم تازه دارم بهتر متوجه میشم وقتی شرکت jet brains میاد مقایسه ی VS با Resharper و Rider را میذاره :


الان فرضا در همون قسمت Code Completion اش (همون IntelliSense ، در قسمت جدولِ Coding assistance) ، درسته که ویژگی های خودش را میذاره که فرضا VS اون چند مورد را شاید نداشته باشه یا ضعیف تر اش را یه کم داشته باشه اما در مقابل نمیاد بگه که مخصوصا در عمل ، VS IntelliSense ، چند ویژگی دیگه ای داره که محصولات من یا نداره یا ضعیف ترش را داره که در عمل باعث میشه VS IntelliSense ، در عین سادگی ، بهتر عمل کنه .

مثل مواردی که در بالا گفتم .
نمیدونم چرا از طرف مایکروسافت ، همچین جواب ها و مقایسه ای را هم در سایت مایکروسافت انجام نمیدن که اگه این مقایسه را در شرکت jet brains میبینیم ، بتونیم در شرایط واقعی و در عمل ، ببینیم که جواب مایکروسافت هم بهش چیه .
 

جدیدترین ارسال ها

بالا