درس اول طراحی – بخش 2

  • یوسف مهرداد بی‌بالان

سه:
اغلب دانشجویان آن چه را که آموخته‌اند به شیوه‌ی «یادگرفتن از روی دست کسی» است. یعنی در تیمی که بوده‌اند یا جایی که درس خوانده‌اند، شخصی الگویی را برای طراحی استفاده کرده است و آنها نیز آن را یاد گرفته‌اند و استفاده می‌کنند. مثال پررنگ این شیوه، مبحث لایه‌بندی در معماری است یا استفاده از ترکیبی از interface و class که البته در این مثال (مسأله اشکال هندسی) زیاد از آن استفاده می‌شود. برای این کار، رابط interfaceای به نام IShape و بعد کلاسی به نام Circle و … که آن را پیاده‌سازی می‌کند، ایجاد می‌کنند.

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

در اینجا وقتی که از دانشجو می‌پرسید که «چرا از ترکیب interface و class استفاده کرده‌اید؟» و بعد بحث را به این سمت می‌برید که «چرا از interface استفاده کرده‌اید؟»، پاسخ‌هایی که دریافت می‌کنید نشان می‌دهد که یادگیری آنان به «چرایی» ختم نگردیده است. آخر گفت‌وگو به اینجا ختم می‌شود که «روزی شخصی (همکاری یا استادی) این گونه انجام داده است و من یادگرفتم». یکی از بامزه‌ترین آنها پاسخی بود که یکی از عزیزان داد: «استادی داشتیم که می‌گفت ما همیشه از ترکیب interface و class استفاده کرده‌ایم و جواب گرفته‌ایم!».
ندانستن «چرایی» خطرات زیادی به همراه دارد. شاگردی که چرایی را نداند، احتمالاً از استاد پیشی نخواهد گرفت. وقتی «چرایی» را می‌دانیم، با حفظ آن، «چگونگی‌»های متنوع و متفاوتی را ابداع می‌کنیم. چرایی‌ها معمولاً ثابت هستند و این چگونگی‌ها هستند که در طول زمان و با تجربه تغیییر می‌کنند.
یکی از گروه‌هایی که به دنبال «یادگیری با مثال» هستند، کسانی‌اند که علجه دارند، وقت کافی برای یادگیری دقیق و عمیق ندارند یا کلاً عجول هستند. این روش هر چند برای شروع و «راه افتادن کار» خوب است، اما اگر در همین سطح باقی بماند، اثرات عمیقی نخواهد داشت.

پرسشهایی که در مسأله‌ی اشکال هندسی می‌توان طرح کرد عبارتند از:
1- تفاوت بین interface و abstract class چیست؟ (لطفاً دقت فرمایید که پاسخ این پرسش فقط دو کلمه است و نه یک لیست بلند و بالا که در اینترنت پیدا خواهید کرد)

2- از interface برای shape استفاده کنیم یا abstract class؟ یا فرقی نمی‌کند کدام یک را انتخاب کنیم؟ (امیدوارم پاسخ شما از این جنس نباشد: «تجربه‌ی من می‌گوید….»؛ «فلانی در کتاب فلان گفته است ….»؛ «چه فرقی نمی‌کند؟!»؛ «مهم آن است که مشتری راضی باشد!»)

3- اصلاً چرا باید برای Shape عنصر و المانی در طراحی در نظر بگیریم؟ (توجه داشته باشید که وجود عامل سومی باعث توجیه وجود Shape می‌گردد و نه دایره و مستطیل. اگر عامل سوم وجود ندارد، وجود Shape در طراحی بی‌استفاده است و فقط از روزی عادت ایجاد شده است)

پرسش از چرایی، حتی در آموزه‌های مدیریتی نیز وجود دارد:
«چرا؟
سیمون سینک، نویسنده کتاب «قدرت چرایی» می‌گوید: همه سازمان‌های بزرگ دنیا، با این سوال روبه‌رو هستند که چرا ما این کار را انجام می‌دهیم؟» این سوال، باید برحسب سیاستی در سطح شرکت باشد. به کارمندانی که مودبانه در مورد چرایی عملکرد سازمان سوال می‌پرسند، توجه کنید. این نشان می‌دهد آنها به شغلشان علاقه دارند و کنجکاوی آنها می‌تواند در نهایت به یک قابلیت مدیریتی تبدیل شود.» دنیای اقتصاد

توصیه: علاوه بر «چگونگی»، به دنبال «چرایی»‌ باشید.
توصیه: فلسفه‌ی مکانیزم‌ها و امکاناتی را که در طراحی دارید، به درستی یاد بگیرید. چرا Interface؟ چرا …

گزیده:
متفاوت بودن آسان، ولی بهتر بودن بسیار دشوار است.
جاناتان ایو

نظرات (1)

wave
  • دوست

    15 شهریور 1392 در 00:00

    مواجه شدن افراد با الگوهاي طراحي شيء‌گرا هميشه به همين نحو است. ابتدا فقط روخواني است. بعد مدتي گيج بودن. بعد نهادينه شدن. بعد بكارگيري ناخوداگاه.
    دنيا تغيير كرده. مسايل و پروژه‌ها بزرگتر شدن. خوبه كنجكاو بودن براي ياد گرفتن تازه‌ها. ياد گرفتن اون‌ها هم الزاما به معناي ضرورت استفاده از اون‌ها نيست. تكامل مرحله به مرحله است.

    پاسخ

برای خروج از جستجو کلید ESC را بفشارید