اندازهی قلم متن
تخمین مدت زمان مطالعهی مطلب:
یک دقیقه
احتمالا تا حالا شده که میخواستید متدهایی بنویسید که دادههای ورودی رو چک
کنند و از درست بودن مقادیر اطمینان حاصل کنید و احتمالا کدهای شما هم مثل
نمونه پایین هستش
public class timeclock { public void clockin( int32 id, datetime clockdate ) { if ( id < 0 ) { throw new argumentoutofrangeexception( "..." ); } if ( clockdate.date != datetime.now.date ) { throw new argumentexception( "..." ); } } public dailyreport getdailyreport( int32 employeeid, datetime fordate ) { var dailyreport = new dailyreport(); return dailyreport; } } public class dailyreport { public int32 employeeid { get; set; } public int32 hoursworked { get; set; } }
نکته: برای استفاده از این روش اگر از net4 به پایین استفاده میکنید باید فضای نام microsoft.contracts را به پروژه اضافه کنید ولی برای .net4 به بالا نیازی به این کار نیست. چون کلاسهای مربوطه در فضای نام system.diagnostics.contracts قرار دارند.
حالا مثال بالا رو به روش زیر پیاده سازی میکنیم
public void clockin( int32 id, datetime clockdate ) { contract.requires<argumentoutofrangeexception>( id < 0 ); contract.requires<argumentexception>( clockdate.date != datetime.now.date ); contract.endcontractblock(); }
فرق این روش با روش قبلی اینه که اگر در برنامه متد clockin رو به روش پایین استفاده کنیم، در هنگام اجرای برنامه با خطای زیر متوقف و رو برو میشیم
var timeclock = new timeclock(); timeclock.clockin( -1, datetime.now );
در مطالب بعدی بیشتر به این مورد میپردازم