اعتبار سنجی ورودی در Phoenix


#62

چیزی به نام صد در صد در این زمینه وجود نداره، همونطور که گفتم باید با استفاده از پترن option, error, ok یک مکانیسم قابل اعتماد برای validation بوجود بیاری. و در زمینه کرش کردن یادت باشه که دوباره کاری بهتر از خرابکاریه. مورد سوم اینه که قرار نیست برنامه با raise کردن error از کار بیفته، فقط اون پروسه بخصوص هست و دوباره قابل اجراست. این چیزیه که Ericson در بزرگترین شبکه های telcom دنیا استفاده میکنه


#63

ما باید تا جایی که امکان داره شرایطی ایجاد کنیم که ارور raise نشه مثلا با اعتبار سنجی روی شرایطی که از اونها آگاه هستیم، اما باید برای raise شدنش و جلوگیری از ثبت دیتای بد برنامه داشت.


#64

عزیز برنامه وقتی شروع میشه به تک تک دستگاهها و هرچیزی که بشه وصل بشه درخواست میفرسته ، جواب رو که گرفت باید تک تک اینها رو بنا بر پروتکل دستگاه بررسی کنه و از مدل دستگاه گرفته تا id و … خیلی چیزهای دیگه رو در حافظه ذخیره کنه تا استفاده بکنه ، این روند گاهی اوقات تا بالای 15 ثانیه میکشه و اگر برنامه از کار بیافته یعنی دوباره باید این 15 ثانیه طی بشه :sob: البته جدیدا یک چیزی شبیه پایگاه داده نوشتم که برنامه همه چیز رو یک بار که بالا اومد اونجا ذخیره میکنه تا اگر خراب شد و دوباره خواست کار بکنه دیگه این 15 ثانیه نکشه و داده ها رو از اونجا بخونه اما بازم چیزهاییی هستند که همچنان باعث میشن برنامه زمان بالایی رو برای شروع دوباره بخواد


#65

این رو اصلا متوجه نشدم به توضیح اضافی احتیاج دارم


#66

من با روش شهریار موافقم،
اگر به ساختار دیتا کنترل داری و میتونی تغییرش بدی باید کاری کنی که از پیچیدگی کاسته بشه، و متا پروگرمینگ رو هم تا جایی که ممکنه کمتر استفاده کنی، البته در مورد validation میتونه خیلی کاربردی باشه، بشرطی که درست بکار گرفته باشیم.


#67

دقیقا میخوام همین کار رو بکنم و ظاهرا تنها چاره مونده هست


#68

من بعید میدونم تنها راه حل باشه، اما خوب پروژه شماست و من ندیدم.
سعی کن در api ها و اینترفیس هایی که برنامه نویس های دیگه خیلی باشون سرکار دارند استفاده نکنی و برای بخش های مخفی تر برنامه باشه که کسی زیاد تغییر نمیده مثلا، یک ماژلی که فقط از action هاش در یک ماژل دیگه استفاده میشه، در ضمن تست خیلی کاملی روش انجام بگیره.


#69

چرا چه علتی داره ؟


#70

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


#71

یکمی در موردش گوگل کن بعد اگر مشکلی بود بپرس.
این لینک مثال های خوبی داره


#72

آره خب اینها که حتما باید بشه تا چندماه بعد دوباره خواستیم بازنویسی کنیم حداقل خودم بدونم چی نوشتم !


#73

و با این کار باعث خراب شدن دیتا به صورت خاموش نشیم


#74

یعنی چی ؟


#75

یعنی نفهیم که دیتا خراب و نادرسته و وقتی متوجه شدیم دلیلش رو هم نتونیم به سادگی پیدا کنیم.