‫چطور یک attribute ناقابل ده روز سرکارم گذاشت!

چند وقت پیش یک پروژه تستی کوچک NHibernateی ایجاد کردم برای ذخیره و بازیابی چند کلاس ساده. یک پروژه تست هم با استفاده NUnit درست کردم برای تست آن. در تست کردن به یک خطای آزار دهنده برخورد کرده بودم. طبق معمول از سر بی‌دقتی فقط آخر پیغام خطا را می‌خواندم که گفته بود don’t flush the Session after an exception occurs. به همین خاطر به شدت به مدیریت session مربوط به NHibernate در متودهای [SetUp] و [TearDown] مشکوک شده بودم. خیلی آن را بالا و پایین کردم و کلی آن را با نمونه کدهای قبلی مقایسه کردم. آخرش متقاعد شدم یا ایراد از همان دو متود Setup و TearDown است یا به این خاطر است که این بار از روش جدیدی برای ایجاد پروژه‌ی اصلی استفاده کرده بودم.

 توی این هیری ویری هم هاردم سوخت و پروژه یک هفته خوابید. تا این که امشب بعد از کلی دقت به پیغام خطا فهمیدم که پیغام خطا با not-null property references a null or transient شروع می‌شود. البته جستجوی این خطا هم در اینترنت باز هم بیشتر مرا گمراه کرد. نمی‌دانم در «یک لحظه» چه اتفاقی افتاد که به mapping کلاس مربوطه شک کردم و نگاهی به آن انداختم. حدستان درست است، علت خطا در mapping نهفته بود. در تعریف همه propertyها یک attribute وجود داشت به اسم not-null که برابر true قرار داده شده بود. در واقع چیزی که برای من اتفاق افتاده بود خطا نبود. بلکه خود من از طریق آن attribute به NHibernate گفته بودم که آن property حق ندارد null باشد و NHibernate هم فقط داشت این موضوع را به من یادآوری می‌کرد چون من در بعضی جاهای تستم مقدار بعضی propertyها را اصلاً set نمی‌کردم.

این بود علت خطایی که ده روز کامل من را سر کار گذاشته بود و اعتماد به نفسم را از بین برده بود. البته دنیای برنامه‌نویسی و به طور کلی دنیای کامپیوتر پر از این مشکلات است که اولش فکر می‌کنیم چه خطای عجیب و غریب و پیچیده‌ای است و آخرش می‌فهمیم علت آن یک موضوع کاملاً پیش پا افتاده است. من فقط دوست دارم بدانم چطور می‌شود وقوع آن «یک لحظه‌های» طلایی را جلوتر انداخت. نظر شما چیست؟

دیدگاه‌ها

  1. ناشناس

    ba nazar shoma kamelan movafegham, baziha fekr mikonanad ke chon yek nafar computer khoonde ya kar karde bayad az hame chize ettelaat dashte bashe, dar hali ke intor nist gahi vaghtha be tore mesal dar programming error-haei ettefagh miofte ke vaghean ya sakht hastan ya sade! vali be har hal hamishe vaghtgir hastan, ari in ast donyaye Computer!!

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *