دوشنبه، مرداد ۱۳

دلتنگيهاي ارسطو

...داشتم مي گفتم، در دنياي امروز کاربر اصلا نبايد براش مهم باشه که پشت اين ماجرا SQL داره روي NT اجرا ميشه يا Orcale روي Solaris ، به عبارت ديگه ما نمي تونيم از يک کاربر متوسط انتظاري بيشتر از توانايي خوندن و فهميدن راهنماييهاي ساده اي که روي صفحهء نمايش مي بينه داشته باشيم. ببين مثلا تو ميري ساندويچي، اصلا به اندازهء نوک سوزن برات مهم نيست که اينا اجاقشون گازيه يا زغالي يا برقي، تو هر جا که همبرگرش ارزونتر و خوشمزه تر باشه رو انتخاب مي کني، نه اينکه حالا چون مارک اجاقشون فلانه حتما بهتره ، علاوه بر اين تو هيچ وقت نحوهء پخت و سسي که بايد براي ساندويچت استفاده بشه رو نمي دوني، يعني مي دوني، ولي اين وظيفهء تو نيست که بدوني، تو مي خواي غذا بخوري، و براي خريد فقط اسم غذات رو بدوني کافيه، که البته اون رو هم مي توني از تابلويي که روبروت قرار مي دن بخوني. بقيهء اطلاعات بايد بصورت انتزاعي و مجرد در سيستم ضبط شده باشه، و تو با استفاده از کلمه اي که به طور قراردادي سيستم رو راه اندازي مي کنه مي توني از محصول اين اطلاعات استفاده کني. ببين کلا بايد تا جايي که ميشه عناصر موجود در يک Integrated System رو به صورت گسسته و مستقل طراحي کرد، براي هر شي ء بايد يک interface کاملا ابتدايي و استاندارد طراحي کني که مطمئني با تبادل حداقل اطلاعات لازم بشه از تمام کارايي اون شي ء بهره برداري کرد. تمام اشياء ديگه در سيستم مي تونن به راحتي و به صرف آگاهي از استانداردهاي تعيين شدهء اون interface با هم صحبت کنن و با تبادل اطلاعات محصول نهايي رو در اختيار کاربر قرار بدن . ببين مثلا تو به دنيا مياي، درس مي خوني، کار مي کني و از دنيا ميري، و در تمام اين مدت تنها محصولي که از اين سيستم موردنظر تو بوده لذت از تمامي مراحل زندگي بوده. من به عنوان طراح اين جهان نمي تونم از يک کاربر عادي - مثلا توي نوعي - انتظار داشته باشم که نحوهء عملکردِ کليهء اشياء موجود رو بدوني و بتوني از تمام اونها استفادهء درست بکني. بنابراين براي تو به تعداد اشيائي که در اختيار داري استانداردهاي برقراري ارتباط تعيين مي کنم. تو، به عنوان يک عنصر خودگردان، به هيچ وجه نه مي توني و نه درسته که سعي کني از نحوهء کارکرد اشياء انتقاد کني يا نحوه‌ء عملکرد هر عنصري رو تحت کنترل بگيري. تو يک شيء کاملا مجرد و مستقل هستي که تمام آگاهي، توانايي، وظايف و مسووليتهات محدود به Scope خودت ميشه. هيچ کدوم از متغير ها و پارامترهايي که زندگي تو رو متاثر مي کنن براي اشياء ديگه - انسانها يا موجودات اطرافت - تعريف شده نيستن. اگر واقعا مي خواي از محصول اين سيستم لذت ببري : - روشهاي ارتباطي رو ياد بگير، - دنبال هيچگونه اطلاعات اضافه اي که مربوط به عملکرد بقيه عناصر ميشه نباش، - وقتي اطلاعات لازم براي بهره برداري از يک شيء رو در اختيارش گذاشتي، به کارهاي ديگه ات برس و هيچ اصراري براي بهبود کارکرد اون شيء (‌البته از نظر خودت) و يا تسريع يا تغييرش نداشته باش تا خودش به تو جواب بده. فراموش نکن که تو هم هيچ کدوم از متغيرها، پارامترها و شرايط مسلط به عملکرد اون شيء رو نمي دوني. در کل طراحي هميشه بايد بر پايهء مينيمم تسهيلات موجود کار کنه. طراحي براي شرايط ايده آل منجر به آسيب پذيريِ بيش از حد راهکار و در نهايت انزوا و قطع رابطه با اشياء ديگهء سيستم ميشه. پس همين کار رو بکن، يک لايهء abstraction بين Client و Server اضافه کن و به کاربر اجازه بده بدون توجه به Backbone برنامهء تو بتونه از API ثابتي که در اختيارش ميذاري استفاده کنه...

هیچ نظری موجود نیست:

بايگانی وبلاگ