💻مجموعه نکات مفید C# :
🔵به جای ساخت نمونه از شیء مورد نظر و سپس مقدار دهی پروپرتی های آن تا جایی که ممکن است از Object Initializer ها استفاده کنید:
// خوب
// بد
🔵در هنگام کار با اشیاء nullable مانند ?int? ،DateTime و ... زمانی که میخواهید چک کنید که دارای مقدار می باشد یا خیر به جای مقایسه با null، از پروپرتی HasValue به صورت زیر استفاده کنید:
🔵برای چک کردن اینکه لیست موردنظرتان خالی است یا خیر به جای مقایسه تعداد داخل لیست (()Count) با 0 از متد ()Any استفاده کنید:
🔵برای if/esle های ساده زمانی که میخواهید بر اساس یک شرط از بین دو مقدار یکی را برگردانید از Ternary Operator یا عملگر سه تایی به صورت زیر استفاده کنید:
🔵برای برگرداندن یک مقدار در صورت نال بودن شیء مورد نظر به صورت زیر عمل کنید:
کد بالا در صورتی که LastEditDate مقدار داشته باشد مقدار آن را داخل متغیر date می ریزد و در غیر این صورت DateTime.Now را داخل متغیر date می ریزد. به طور کلی اگر سمت چپ مقدار داشته باشد مقدارش استفاده خواهد شد و در غیر این صورت از سمت راست استفاده خواهد شد.
🔵زمانی که یک متد دارید و شرط مورد بررسی داخل متد نیز ساده می باشد می توان آن را یکجا در return متد نوشت:
// بد
// خوب
// یک مثال دیگر
🔵برای چک کردن اینکه رشته مورد نظرتان Null یا خالی است از متد IsNullOrEmpty و برای چک کردن اینکه رشته مورد نظر Null است یا فقط شامل کاراکترهای فاصله n/ و v/ و t/ و ... است نیز از متد IsNullOrWhiteSpace استفاده کنید:
🔵سعی کنید تا در طراحی متدهایتان همیشه تنها یک return وجود داشته باشد. این مورد در متدهای بسیار کوچک ممکن است خیلی بد به نظر نرسد ولی در متدهای بزرگتر خوانایی کد را پایین می آورد. در مثال زیر به جای قرار دادن return در هر case از یک متغیر به اسم result استفاده کرده ایم و در انتها result را return می کنیم: (تنها یک راه خروجی برای متد)
🔹اگر از دات نت 4.6 به بعد استفاده می کنید به جای چسباندن رشته با + به هم یا استفاده از string.Format می توانید از روش بهتری نیز استفاده کنید:
🔵در if به جای اینکه مقدار را با true یا false چک کنید می توانید به صورت زیر نیز عمل کنید:
⚪️سعی کنید به صورتی کد بنویسید که نیاز به کامنت گذاری نباشد. کامنت ها در اکثر مواقع باعث گیج شدن خواننده می شوند.
🔘استفاده از region# ها هم برخوانایی کد تاثیر میگذارند:
⚪️بیشتر از foreach به جای for استفاده شود.
🔵به جای ساخت نمونه از شیء مورد نظر و سپس مقدار دهی پروپرتی های آن تا جایی که ممکن است از Object Initializer ها استفاده کنید:
// خوب
var Customer = new Customer
{
FirstName = "saeed",
LastName = "rezayi"
};
// بد
var customer = new Customer();
customer.FirstName = "saeed";
customer.LastName = "rezayi";
🔵در هنگام کار با اشیاء nullable مانند ?int? ،DateTime و ... زمانی که میخواهید چک کنید که دارای مقدار می باشد یا خیر به جای مقایسه با null، از پروپرتی HasValue به صورت زیر استفاده کنید:
public DateTime? LastEditDate { get; set; }
if (LastEditDate.HasValue))
DoSomething();🔵برای چک کردن اینکه لیست موردنظرتان خالی است یا خیر به جای مقایسه تعداد داخل لیست (()Count) با 0 از متد ()Any استفاده کنید:
if (YourList.Any())
DoSomething();
🔵برای if/esle های ساده زمانی که میخواهید بر اساس یک شرط از بین دو مقدار یکی را برگردانید از Ternary Operator یا عملگر سه تایی به صورت زیر استفاده کنید:
bool isEven = myNumber % 2 == 0 ? true : false; 🔵برای برگرداندن یک مقدار در صورت نال بودن شیء مورد نظر به صورت زیر عمل کنید:
public DateTime? LastEditDate { get; set; }
//
var date = LastEditDate ?? DateTime.Now;کد بالا در صورتی که LastEditDate مقدار داشته باشد مقدار آن را داخل متغیر date می ریزد و در غیر این صورت DateTime.Now را داخل متغیر date می ریزد. به طور کلی اگر سمت چپ مقدار داشته باشد مقدارش استفاده خواهد شد و در غیر این صورت از سمت راست استفاده خواهد شد.
🔵زمانی که یک متد دارید و شرط مورد بررسی داخل متد نیز ساده می باشد می توان آن را یکجا در return متد نوشت:
// بد
public bool IsEven(int number)
{
if (number % 2 == 0)
return true;
else
return false;
}
// خوب
public bool IsEven(int number)
{
return number % 2 == 0;
}
// یک مثال دیگر
public string AMorPM()
{
return DateTime.Now.Hour < 12 ? "AM" : "PM";
}
🔵برای چک کردن اینکه رشته مورد نظرتان Null یا خالی است از متد IsNullOrEmpty و برای چک کردن اینکه رشته مورد نظر Null است یا فقط شامل کاراکترهای فاصله n/ و v/ و t/ و ... است نیز از متد IsNullOrWhiteSpace استفاده کنید:
if (string.IsNullOrEmpty(yourText))
// do something
if (string.IsNullOrWhiteSpace(yourText))
// do something
🔵سعی کنید تا در طراحی متدهایتان همیشه تنها یک return وجود داشته باشد. این مورد در متدهای بسیار کوچک ممکن است خیلی بد به نظر نرسد ولی در متدهای بزرگتر خوانایی کد را پایین می آورد. در مثال زیر به جای قرار دادن return در هر case از یک متغیر به اسم result استفاده کرده ایم و در انتها result را return می کنیم: (تنها یک راه خروجی برای متد)
public string MethodName(int number)
{
var result = string.Empty;
switch(number)
{
case 1:
result = "Number is 1";
case 2:
result = "Number is 2";
default:
result = "Number is not 1 or 2";
}
return result;
}
🔹اگر از دات نت 4.6 به بعد استفاده می کنید به جای چسباندن رشته با + به هم یا استفاده از string.Format می توانید از روش بهتری نیز استفاده کنید:
var name = "Saeed";
var text = $"my name is: {name}";
🔵در if به جای اینکه مقدار را با true یا false چک کنید می توانید به صورت زیر نیز عمل کنید:
if (IsPostBack)
{
// if it's True
}
if (!IsPostBack)
{
//if it's False
}
⚪️سعی کنید به صورتی کد بنویسید که نیاز به کامنت گذاری نباشد. کامنت ها در اکثر مواقع باعث گیج شدن خواننده می شوند.
🔘استفاده از region# ها هم برخوانایی کد تاثیر میگذارند:
#region —----|Sum Numbers|------
public void sum(int x, int y)
{
return x+y;
}
#endregion
⚪️بیشتر از foreach به جای for استفاده شود.
📝ویژگی های جدید C# 6.0
🔵عملگر nameof
🔸این عملگر خیلی ساده نام متغیر را برای شما برمی گرداند:
🔵مبحث Argument Exceptions:
🔸تمام Argument Exception ها یک پارامتر می گیرند که مشخص کننده پارامتر نامعتبر می باشد. قبل از این می بایست نام را به صورت رشته وارد می کردیم و مشکل بزرگ این روش زمانی بود که نام پارامتر را تغییر می دادیم و فراموش می کردیم تا پارامتر Argument Exception را نیز تغییر نام بدهیم.
🚮// روش قبلی
// روش جدید
🔵در برنامه های ASP.NET MVC
در MVC از رشته ها زیاد استفاده می شود و این مورد در پروژه های بزرگ ممکن است به مشکل تبدیل شود. به عنوان مثال ایجاد لینک با استفاده از Helper های MVC. در مثال زیر نحوه ایجاد یک لینک با استفاده از این عملگر را مشاهده خواهید کرد:
🔸علت استفاده از Helper سفارشی CusomAction در اینجا به این خاطر است که (nameof(HomeController مقدار HomeController را برمی گرداند ولی ما نیاز به قسمت بدون Controller یعنی Home داریم:
🔸نکته دیگر این که برای استفاده از کلیه ویژگی های 6.0 #C در MVC باید پکیج زیر را نصب نمایید:
Install-Package Microsoft.CodeDom.Providers.DotNetCompilerPlatform
🔵اتصال رشته یا String Interpolation
🔸با کمک روش جدید اتصال رشته در ورژن جدید #C، دیگر نیازی به String.Format و چسباندن رشته با + بهم ندارید:
عملگر Null-Conditional
🔵روشی سریع برای چک کردن نال و جلوگیری از خطای معروف NullReferenceException
🔵مقدار دهی اولیه به Auto-Property ها یا (Auto-Property Initializers) :
🔸روش جدید مقداردهی اولیه به Auto-Property ها که تا قبل از این تنها از طریق constructor ممکن بود.
🔵Expression Bodied Functions and Properties :
🔸یکی دیگر از ساده سازی های صورت گرفته در ورژن جدید.
🔵عملگر nameof
🔸این عملگر خیلی ساده نام متغیر را برای شما برمی گرداند:
string firstname = "Saeed";
Console.WriteLine(nameof(firstname))
// Prints firstname
🔵مبحث Argument Exceptions:
🔸تمام Argument Exception ها یک پارامتر می گیرند که مشخص کننده پارامتر نامعتبر می باشد. قبل از این می بایست نام را به صورت رشته وارد می کردیم و مشکل بزرگ این روش زمانی بود که نام پارامتر را تغییر می دادیم و فراموش می کردیم تا پارامتر Argument Exception را نیز تغییر نام بدهیم.
🚮// روش قبلی
public double DoSomething(string input)
{
if (string.IsNullOrEmpty(input))
throw new ArgumentNullException("input");
}
// روش جدید
public double DoSomething(string input)
{
if (string.IsNullOrEmpty(input))
throw new ArgumentNullException(nameof(input));
}
🔵در برنامه های ASP.NET MVC
در MVC از رشته ها زیاد استفاده می شود و این مورد در پروژه های بزرگ ممکن است به مشکل تبدیل شود. به عنوان مثال ایجاد لینک با استفاده از Helper های MVC. در مثال زیر نحوه ایجاد یک لینک با استفاده از این عملگر را مشاهده خواهید کرد:
<a href="@Url.CustomAction(nameof(HomeController.Index), nameof(HomeController))">خانه</a>
🔸علت استفاده از Helper سفارشی CusomAction در اینجا به این خاطر است که (nameof(HomeController مقدار HomeController را برمی گرداند ولی ما نیاز به قسمت بدون Controller یعنی Home داریم:
public static string CustomAction(this UrlHelper htmlHelper, string actionName, string controllerName)
{
return htmlHelper.Action(actionName, controllerName.Substring(0, controllerName.Length - 10));
}
🔸نکته دیگر این که برای استفاده از کلیه ویژگی های 6.0 #C در MVC باید پکیج زیر را نصب نمایید:
Install-Package Microsoft.CodeDom.Providers.DotNetCompilerPlatform
🔵اتصال رشته یا String Interpolation
🔸با کمک روش جدید اتصال رشته در ورژن جدید #C، دیگر نیازی به String.Format و چسباندن رشته با + بهم ندارید:
var firstName = "Saeed";
var lastName = "Rezayi";
// before c# 6
var introduction = string.Format("First Name: {0} - Last Name: {1}", firstName, lastName);
// after c# 6
var introduction = $"First Name: {firstName} - Last Name: {lastName}";
عملگر Null-Conditional
🔵روشی سریع برای چک کردن نال و جلوگیری از خطای معروف NullReferenceException
// Without Null-Conditional Operator
public string Truncate(string input, int length)
{
string result = input;
if (!string.IsNullOrEmpty(input))
result = input.Substring(0, Math.Min(input.Length, length));
return result;
}
// Whit Null-Conditional Operator
public string Truncate(string value, int length)
{
return value?.Substring(0, Math.Min(value.Length, length));
}
🔵مقدار دهی اولیه به Auto-Property ها یا (Auto-Property Initializers) :
🔸روش جدید مقداردهی اولیه به Auto-Property ها که تا قبل از این تنها از طریق constructor ممکن بود.
public class Post
{
public DateTime PublishDate { get; set; } = DateTime.Now;
}
🔵Expression Bodied Functions and Properties :
🔸یکی دیگر از ساده سازی های صورت گرفته در ورژن جدید.
public class Customer
{
public string FirstName { get; set; }
public string LastName { get; set; }
public string FullName => $"{FirstName} {LastName}";
public override string ToString() => $"{FirstName}, {LastName}";
}
✳️ خانه های هوشمند و فناوری اینترنت اشیاء
🔵 خانه های هوشمند به عنوان یکی از پیشرفت های تکنولوژی به شدت در حال فراگیر شدن هستند و برخی از تجهیزات خانه هوشمند میتوانند از راه دور توسط تلفن همراهتان کنترل شوند.
🔴 اپل واچ برای این کار کاملا مناسب است.
🔵 منزل من به لامپ های Hue، ترموستات Nest، و قفل هوشمند مجهز شده است.
🔴 در خانه گوشی آیفون من همیشه کنارم نیست اما اپل واچ همیشه روی مچم بسته شده است .
🔵 این واقعیت ساده به من اجازه میدهد تا بدون دسترسی به آیفون یا کلید فیزیکی روشنایی را کنترل کنم. امیدوارم بتوانم دیگر تجهیزات متصل را هم کنترل کنم.
🔴 متأسفانه تا این لحظه فقط دو گروه از تولید کنندگان سیستم خانه هوشمند اپلیکشن های سازگار با اپل واچ را ارائه کرده اند اما میتوان انتظار داشت این شرایط در آینده ای نزدیک تغییر کند و این محتوا به ترموستات های هوشمند،دوربین های امنیتی، قفل های هوشمند و دیگر تجهیزات هم برسد.
#اینترنت_اشیاء
🔵 خانه های هوشمند به عنوان یکی از پیشرفت های تکنولوژی به شدت در حال فراگیر شدن هستند و برخی از تجهیزات خانه هوشمند میتوانند از راه دور توسط تلفن همراهتان کنترل شوند.
🔴 اپل واچ برای این کار کاملا مناسب است.
🔵 منزل من به لامپ های Hue، ترموستات Nest، و قفل هوشمند مجهز شده است.
🔴 در خانه گوشی آیفون من همیشه کنارم نیست اما اپل واچ همیشه روی مچم بسته شده است .
🔵 این واقعیت ساده به من اجازه میدهد تا بدون دسترسی به آیفون یا کلید فیزیکی روشنایی را کنترل کنم. امیدوارم بتوانم دیگر تجهیزات متصل را هم کنترل کنم.
🔴 متأسفانه تا این لحظه فقط دو گروه از تولید کنندگان سیستم خانه هوشمند اپلیکشن های سازگار با اپل واچ را ارائه کرده اند اما میتوان انتظار داشت این شرایط در آینده ای نزدیک تغییر کند و این محتوا به ترموستات های هوشمند،دوربین های امنیتی، قفل های هوشمند و دیگر تجهیزات هم برسد.
#اینترنت_اشیاء
فریم ورک w3.css یک محصول از سایت خوشنام w3schools هست. این فریم ورک ادعا کرده که سریع ترین فریم ورک css هست. روی مرورگر های مختلف بخوبی قابل انعطاف هست. فقط از css استفاده کرده و به چیز دیگه ای مثل jquery وابسته نیست. و درنهایت بستر خوبی برای ساخت سایت های مدرن، responsive و منطبق بر موبایل هست.
لینک رسمی:
https://www.w3schools.com/w3css/
لینک رسمی:
https://www.w3schools.com/w3css/
W3Schools
W3Schools offers free online tutorials, references and exercises in all the major languages of the web. Covering popular subjects like HTML, CSS, JavaScript, Python, SQL, Java, and many, many more.
يك تمرين براي كمك به يافتن موقعيت شغلي مناسب:
١- همين امروز ليستي از مشاغل موجود در حوزه تخصصي خود آماده كنيد و در اين ليست از پيش پا افتاده ترين تا بالاترين جايگاه شغلي را قرار دهيد.
٢- سپس در مقابل هر موقعيت شغلي مهارتهاي حرفه اي مورد نياز آن را بنويسيد.
٣- در گام بعد توجه كنيد كه شما به عنوان يك متخصص آكادميك چه گزينه هاي جديدي مي توانيد به مخاطبان آن موقعيت شغلي ارائه نماييد كه موجب تمايز و برتري شما شود.
٤- به موارد دوم و سوم باز گرديد، هر چه در اين بخش نوشته ايد كه نياز به آموختن دارد، در اولين فرصت بياموزيد.
٥- رزومه اي از خود، علائق حرفه اي و مهارتهاي اختصاصي خود بنويسيد.
٦- اماكني كه ممكن است موقعيت مناسبي براي شما فراهم كنند را ليست كنيد، به آنجا برويد و درخواست همكاري خود را به مدير اصلي مجموعه ارائه دهيد.
.
.
شايد با گزينه ي اول تان به توافق نرسيد، اما مهارتها و توانمندي شما حتما مورد توجه يك كارفرماي هوشمند قرار خواهد گرفت.
١- همين امروز ليستي از مشاغل موجود در حوزه تخصصي خود آماده كنيد و در اين ليست از پيش پا افتاده ترين تا بالاترين جايگاه شغلي را قرار دهيد.
٢- سپس در مقابل هر موقعيت شغلي مهارتهاي حرفه اي مورد نياز آن را بنويسيد.
٣- در گام بعد توجه كنيد كه شما به عنوان يك متخصص آكادميك چه گزينه هاي جديدي مي توانيد به مخاطبان آن موقعيت شغلي ارائه نماييد كه موجب تمايز و برتري شما شود.
٤- به موارد دوم و سوم باز گرديد، هر چه در اين بخش نوشته ايد كه نياز به آموختن دارد، در اولين فرصت بياموزيد.
٥- رزومه اي از خود، علائق حرفه اي و مهارتهاي اختصاصي خود بنويسيد.
٦- اماكني كه ممكن است موقعيت مناسبي براي شما فراهم كنند را ليست كنيد، به آنجا برويد و درخواست همكاري خود را به مدير اصلي مجموعه ارائه دهيد.
.
.
شايد با گزينه ي اول تان به توافق نرسيد، اما مهارتها و توانمندي شما حتما مورد توجه يك كارفرماي هوشمند قرار خواهد گرفت.
Forwarded from Mr.Grayhat [Saeed.R]
یک اینفوگرافیک جالب از میزان درآمد کمپانی های غول آسای جهان در یک ثانیه ...