نود و هفت چیزی که هر برنامه‌نویسی باید بداند: برنامه های خود را به زبان مشتریان بنویسید!


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

منظور از این که برنامه ی سفارشی خود را به زبان مشتری بنویسید این است که در کدهای برنامه از اصطلاحات کسب و کار مشتری استفاده کنید و روابط و رویه های کاری او را در برنامه پیاده سازی کنید. بگذارید با مثال هایی موضوع را شفاف تر سازیم. مثال فروشگاه را در نظر بگیرید. برای مدل سازی کالاهای خریداری شده، باید متغیری تعریف کنیم که نام کالای جدید را در آن ذخیره کنیم تا بعداً در بخش های دیگر برنامه از آن استفاده شود. می دانیم که برای تعریف هر متغیر یا Variable در برنامه نویسی، نیاز به یک اسم داریم. بهترین کار این است که به جای استفاده از یک نام بی معنی، مثلاً x، نامی را انتخاب کنیم که معرف این باشد که قرار است چه چیزی در متغیر مد نظرمان ذخیره شده و در عین حال برای مشتری هم شناخته شده باشد. به طور مثال این متغیر را new_product_name نام گذاری کنیم و با ورود هر کالای جدید آن را در این متغیر ذخیره کنیم،

new_product_name = "Icecream"
// or
new_product_name = "Pen"

در مورد رویه ها نیز به همین ترتیب عمل کنیم. مثلاً این طور نیست که کارکنان انبار تمام اجناس خریداری شده را در یک قسمت نگه داری کنند، بلکه متناسب با نوع محصول، آن ها را در بخش های مختلف انبار می کنند. مواد غذایی فاسد شدنی را در سردخانه، کرم ها را در بخش لوازم بهداشتی، پارچه ها را در بخش منسوجات و  . . .  وقتی نوبت به شما می رسد تا این رویه را مدل سازی کنید، شاید با خود فکر کنید در این مدل مجازی کنار هم قرار دادن کالاهایی مثل مواد غذایی، لوازم بهداشتی، و غیره تأثیری روی آن ها نمی گذارد. بنابراین به جای آن که با صرف زمان بیش تر و نوشتن کدهای بیش تر، نام این محصولات را در جداول جداگانه ای در دیتابیس قرار دهید، تصمیم می گیرید تمام آن ها را در یک جدول قرار داده تا در زمانی که بخواهید وضعیت یک محصول را بررسی کنید، کدهای برنامه به جای چند جدول دیتابیس، یک جدول را بیش تر در دیتابیس نگردند. شاید این کار برای شما راحت باشد، اما این نکته را در نظر داشته باشید که این برنامه برای صاحب فروشگاه است، نه شما!

بهتر است که کدهای شما صریحاً رویه های ذخیره سازی در انبار را شبیه سازی کنند. مزیت این نوع کدنویسی صریح و مطابق با روال های کاری مشتری آن است که اولاً، تصحیح خطاها و تغییرات مورد نیاز در برنامه را برای شما راحت تر می کند (حتی اگر فراموش کنید هر قطعه از کد شما چه طور و برای چه منظوری کار می کند، می توانید به رویه های کاری مشتری رجوع کنید و الگوریتم آن را رمز گشایی کنید) ثانیاً، اگر برنامه نویس دیگری جایگزین شما شود تا سیستم موجود را به روز رسانی کند، از طریق آشنایی با این رویه های کاری، منظور کدهای شما را به راحتی درک می کند و نیازی نیست که به شما مراجعه کند تا آن ها را تفسیر کنید یا این که بخواهد برنامه ی جدیدی که برای خودش قابل فهم باشد را بازنویسی کند!

لیست نظرات
کاربر میهمان
دیدگاه شما چیست؟
کاربر میهمان
محسن
محسن
یک عامل مهم در کیفیت پروژه های نرم افزاری،وجود دیکشنری در اون پروژه هست
این دیکشنری درواقع یک کتابچه از لیست تمام عناوین، متغیرها، توابع و... هست که در پروژه استفاده شدن و براشون در حد مناسب توضیحی داده شده. این کار باعث میشه تا کار گروهی بهتر پیش بره و پروژه وابسته به یک نفر نشه،وهمینطور اگر برنامه نویس جدیدی به تیم اضافه شد یا برنامه نویس عوض شد خیلی سریع فرد جدید با پروژه آداپته بشه و کار با مشکل خاصی مواجه نشه
محسن
محسن
اگر علاقه مند به موضوع دیکشنری و اهمیت اون در پروژه های نرم افزاری هستید، پیشنهاد می کنم مقاله زیر رو از رفرنس معتبر springerبخونید

https://link.springer.com/chapter/10.1007/978-3-642-93201-4_136

در پاسخ به

Insight
Insight
یکی از وجوه تمایز بین برنامه نویسی و سایر مشاغل اینه که نرم‌افزارها با تمامی صنایع و مشاغل دیگه در ارتباط هستن. این یعنی برنامه نویس هم در هنگام توسعه‌ی نرم‌افزار ممکنه با صنایع دیگه درگیر بشه و از یک پروژه‌ی نرم‌افزاری، تجارب دیگری در حوزه‌های دیگه هم کسب کنه.
بطور کلی ما در برنامه نویسی به دنبال مدل کردن دنیای اطراف خودمون هستیم و هرچقدر این مدل سازی رو بهتر انجام بدیم به نوعی کد بهتری نوشته شده. لذا درمورد سایر پیاده سازی عملکردهای سایر مشاغل هم باید این مدلسازی مشابه دنیای واقعی اونها باشه و ارتباط بهتری با اون صنعت داشته باشه.