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

Tell Don’t Ask Principal

یکی از اصول بسیار مهم در دنیای برنامه نویسی شی گرا اصل مهم معروف به Tell-Don’t-Ask می باشد.
هرچند ایده ی این اصل بسیار ساده می باشد؛ نیک که بنگریم؛ اما فلسفه ی زیربنایی تشکیل دهنده ی این اصل نقش بسیار مهمی در طراحی ها چه در سطح پایین و چه سطح بالا را ایفا می کند. و بشدت جای این فلسفه خالی می باشد.

به زبان ساده این اصل و فلسفه ی جهت باز یادآوری نکته ایست ظریف از OOP که در واقع می توان گفت فلسفه ی وجودی پارادایم برنامه نویسی شی گرا نسبت به پارادایم های برنامه نویسی تابعی(Functional) و روالی(Procedural) است.
به بیان ساده هدف اصلی در توسعه یک برنامه بر اساس پارادایم شی گرایی؛ باندل نمودن داده ها و عملیاتی که بر روی آنها انجام می شود در یک کلاس می باشد. در نیتجه ضمن قرار دادن ویژگی های یک کلاس بصورت پراپرتی های آن این کلاس باید شامل توابع(که فقط جهت برگشت دادن داده های استفاده می شوند و state های instance مورد نظر را تغییر نمی دهند) و متدهایی باشد که تمامی نیازهای کلاینت های آن کلاس را مرتفع می سازند.

اولین نقطه ی پخش شدن بیزینس در سناریوهایی که روزانه با انها سروکار داریم از حضیض شمردن این اصل مهم آغاز می شود.
به عنوان مثالی بسیار ساده فرض کنید object خواهید داشت که در آن فیلدی بصورت enum تعریف شده است؛ و در جای دیگری از برنامه قصد دارید که این enum را جهت human readable بودن تفیسر کنید. سناریوی اول این هست که می شود ابتدا آن مقدار را توسط تابعی گرفت و سپس به کمک کلاسی دیگر و ارسال این مقدار به آن آنرا تفسیر کرد. خوب این هماش روش مغایر با این اصل یعنی استفاده از Asking_Approach# است.
اما روش دیگر می تواند استفاده از متدی دیگر درون همین کلاس جهت bundle کردن عملیات parse می باشد و هر جا نیاز بود از این متد جهت گرفتن داده ها استفاده نمود.
در لینک بالا آقای فاولر ضمن توضیح این اصل مثالی ساده رو جهت رشن تر شدن مطلب بیان می کنه.

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

درباره ی masoud@admin

همچنین ببینید

بررسی دقیق تر Unit Of Work

Unit of Work Misconceive یا برداشت غلط یکی از مواردی است که معمولا همه ما …

پاسخ دهید

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

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

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

پیوستن بستن