خانه / OOP / Tell Don’t Ask Principal

Tell Don’t Ask Principal

#Tell_Dont_Ask_Principal
#OOP
#اندکی_تامل
✍✍✍✍✍✍✍✍✍✍✍
یکی از اصول بسیار مهم در دنیای Object-Oriented اصل بسیار مهم معروف به Tell-Don’t-Ask می باشد.
هرچند ایده ی این اصل بسیار ساده می باشد؛ نیک که بنگریم؛ اما فلسفه ی زیربنایی تشکیل دهنده ی این اصل نقش بسیار مهمی در طراحی های چه در سطح low-level و چه high-level را ایفا می کند. و بشدت جای این فلسفه خالی می باشد.
به زبان ساده این اصل و فلسفه ی جهت باز یادآوری نکته ایست ظریف از OOP که فلسفه ی object-orientation درباره ی boundle نمودن data توسط function هایی است که بر روی این data اعمال می شوند. این اصل می گوید که عوض درخواست data از function و سپس انجام عملیات بر روی آنها, باید به function یا object بگوییم که چه عملیات و کارهایی بر روی data انجام دهد..

اولین نقطه ی #پخش_شدن_بیزینس در سناریوهایی که روزانه با انها سروکار داریم از حضیض شمردن این اصل مهم آغاز می شود.
به عنوان مثالی بسیار ساده فرض کنید object خواهید داشت که در آن فیلدی بصورت enum تعریف شده است؛ و در جای دیگری از برنامه قصد دارید که این Enum رو جهت human readable بودن parse کنید. سناریوی اول این هست که می شود ابتدا آن object را گرفته و سپس توسط متدی یا utility یا View modelیا… enum رو فرستاده و سپس این متد یا utility این enum را parse کرده و نتیجه رو بر گردونه.- خوب این هماش روش مغایر با این اصل یعنی استفاده از Asking_Approach# است.
اما روش دیگر می تواند استفاده از متدی دیگر درون همین object جهت boundle کردن عملیات parse شود و هر جا نیاز بود این متد یا فیلد دارای getter رو استفاده نمود. که این روش که از #Telling_Approach استفاده می کند؛ کاملا با اصل OCP هم هخوانی دارد برخلاف روش قبلی که در تناقض کامل با OCP هم نیز می باشد.
در لینک بالا آقای فاولر ضمن توضیح این اصل مثالی ساده رو جهت رشن تر شدن مطلب بیان می کنه.

توجه کنیم که عدم توجه به این مورد می تواند زمینه ساز مشکلات زیاد دیگری شود که #پخش_شدن_بیزینس یکی از موارد آن می باشد.

درباره ی masoud@admin

پاسخ دهید

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

در تلگرام هم همراه شما هستم

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

پیوستن بستن