اشتراک‌ها
آیا TDD مرده است؟!

صحبت‌های martin fowler , kent beck در مورد این موضوع.

توسط یکی از دوستان (احسان پورتراب ) به این موضوع بر خوردم! بسیار مطالب جالبی هستند . حتما گوش کنید.

آیا TDD مرده است؟!
نظرات مطالب
ASP.NET MVC #8
درخواست این موضوع را دادم.
جواب دادند که در ورژن بعدی، فعلا پیاده سازی برای این موضوع انجام نشده و به جای آن فیوچری به نام Tag Helpersدر ورژن بعدی ارائه خواهد شد.
نظرات مطالب
کامپایل خودکار یک پروژه برای دو فریم ورک
خیلی موضوع خوبی بود. واقعا خسته نباشید.
اگر از کتابخانه ای استفاده کنیم که DLL دات نت ۴ و ۴.۵ جداگانه ای رو ارائه داده باشه، چطور میشه این موضوع را پوشش داد؟
نظرات مطالب
NOSQL قسمت سوم
سلام ، واقعا مطالب خوبی بود هر جا رو گشتم کاملتر و جامع‌تر از همه بودید ، موضوع پروژه‌ی من روی این موضوعه ، ای کاش میشد در مورد موضوع زیر صحبت کنید.  key value store
پاسخ به بازخورد‌های پروژه‌ها
پیغام نامناسب در زمان انتخاب بانک ملت
بله اخرین ورژن رو استفاده کردم و من تابع refund رو پیاده سازی نکردم
به نظرم مشکل از سمت بانک بوده یا موضوع بحث دیگه ای که هنوز نتونستم موضوع رو بررسی کنم
مطالب
استثنای Sequence contains no elements در حین استفاده از LINQ

در ابتدا مثال‌های زیر را در نظر بگیرید:

using System;
using System.Collections.Generic;
using System.Linq;

namespace testWinForms87
{
public class Data
{
public int id { get; set; }
public string name { get; set; }
}

class CLinqTests
{
public static int TestGetListMin1()
{
var lst = new List<Data>
{
new Data{ id=1, name="id1"},
new Data{ id=2, name="id2"},
new Data{ id=3, name="name3"}
};

return (from c in lst
where c.name.Contains("id")
select c.id).Min();
}

public static int TestGetListMin2()
{
var lst = new List<Data>();

return (from c in lst
where c.name.Contains("id")
select c.id).Min();
}
}
}
در متد TestGetListMin1 قصد داریم کوچکترین آی دی رکوردهایی را که نام آن‌ها حاوی id است، از لیست تشکیل شده از کلاس Data بدست آوریم (همانطور که مشخص است سه رکورد از نوع Data در لیست lst ما قرار گرفته‌اند).
محاسبات آن کار می‌کند و مشکلی هم ندارد. اما همیشه در دنیای واقعی همه چیز قرار نیست به این خوبی پیش برود. ممکن است همانند متد TestGetListMin2 ، لیست ما خالی باشد (برای مثال از دیتابیس، رکوردی مطابق شرایط کوئری‌های قبلی بازگشت داده نشده باشد). در این حالت هنگام فراخوانی متد Min ، استثنای Sequence contains no elements رخ خواهد داد و همانطور که در مباحث defensive programming عنوان شد، وظیفه‌ی ما این نیست که خودرو را به دیوار کوبیده (یا منتظر شویم تا کوبیده شود) و سپس به فکر چاره بیفتیم که خوب، عجب! مشکلی رخ داده است!
اکنون چه باید کرد؟ حداقل یک مرحله بررسی اینکه آیا کوئری ما حاوی رکوردی می‌باشد یا خیر باید به این متد اضافه شود (به صورت زیر):

public static int TestGetListMin3()
{
var lst = new List<Data>();
var query = from c in lst
where c.name.Contains("id")
select c.id;

if (query.Any())
return query.Min();
else
return -1;
}
البته می‌شد اگر هیچ رکوردی بازگشت داده نمی‌شد، یک استثنای سفارشی را ایجاد کرد، اما به شخصه ترجیح می‌دهم عدد منهای یک را بر گردانم (چون می‌دانم رکوردهای من عدد مثبت هستند و اگر حاصل منفی شد نیازی به ادامه‌ی پروسه نیست).

شبیه به این مورد در هنگام استفاده از تابع Single مربوط به LINQ نیز ممکن است رخ دهد (تولید استثنای ذکر شده) اما در اینجا مایکروسافت تابع SingleOrDefault را نیز پیش بینی کرده است. در این حالت اگر کوئری ما رکوردی را برنگرداند، SingleOrDefault مقدار نال را برگشت داده و استثنایی رخ نخواهد داد (نمونه‌ی دیگر آن متدهای First و FirstOrDefault هستند).
در مورد متدهای Min و Max ، متدهای MinOrDefault یا MaxOrDefault در دات نت فریم ورک وجود ندارند. می‌توان این نقیصه را با استفاده از extension methods برطرف کرد.

using System;
using System.Collections.Generic;
using System.Linq;

public static class LinqExtensions
{
public static T MinOrDefault<T>(this IEnumerable<T> source, T defaultValue)
{
if (source.Any<T>())
return source.Min<T>();

return defaultValue;
}

public static T MaxOrDefault<T>(this IEnumerable<T> source, T defaultValue)
{
if (source.Any<T>())
return source.Max<T>();

return defaultValue;
}
}
اکنون با استفاده از extension methods فوق، کد ما به صورت زیر تغییر خواهد کرد:

public static int TestGetListMin4()
{
var lst = new List<Data>();
return (from c in lst
where c.name.Contains("id")
select c.id).MinOrDefault(-1);
}

نظرات مطالب
معرفی DNTProfiler
با سلام و عرض تبریک به مناسبت سال جدید و همچنین تشکر ویژه برای ارائه این Profiler عالی که برای استفاده از نوع غیربومی همیشه دچار مشکل بودیم. واقعا عیدی خوبی بود. با آرزوی موفقیت برای همه‌ی دوستان در سال جدید.
نظرات مطالب
تاریخ شمسی با Extension Method برای DateTime
با سلام و تشکر از مطلب خوبتون
میخواستم بدونم آیا این روش با سال کبیسه مشکلی نداره؟ یعنی مورد سال کبیسه هم محاسبه شده تو این روش؟
ممنون
نظرات مطالب
نوروز مبارک!
سلام سال نو رو تبریک عرض می کنم امیدوارم سال جدید سالی توام با موفقیت، سربلندی و سلامتی براتون باشه.
از زحماتتون و لطفی هم که نسبت به ما دارید سپاسگزارم.
نظرات مطالب
نوروز مبارک!
سلام.با کمی تاخیر - سال جدید شما مبارک مهندس نصیری.امیدوارم سال خوبی پیش روی شما باشد و مثل همیشه افتخار این رو داشته باشیم تا از مطالب بی نظیر شما استفاده کنیم.
با آرزوی سالی خوش و سرشار از سلامتی و موفقیت برای همه دوستان.