در این قسمت قصد داریم در رابطه با تکنیک های متنوع و متعددی صحبت کنیم که اگر آنها را مورد استفاده قرار دهید، می توانید نرم افزار موفق تری ایجاد کنید. اما قبل از انجام این کار بیاید در رابطه با ویژگیهای یک نرم افزار موفق صحبت کنیم.
یک نرم افزار موفق دارای ویژگی های متعددی است که در لیست زیر برخی از مهم ترین های آنها را بررسی می کنیم:
قابلیت حمل (portable بودن): یک نرم افزار موفق، می بایست بتواند بر روی گستره وسیعی از سیستمهای کامپیوتری اجرا گردد. این نوع خاصیت را اصطلاحاً قابل جابه جا بودن و یا portable بودن می نامیم. منظور از این قابلیت این است که نرم افزار توسعه داده شده، می بایست بر روی سیستم های کامپیوتری متنوعی که از سیستم عامل های مختلف استفاده میکنند اجرا گردد. به عبارت دیگر، نباید نرم افزار طوری پیادهسازی بشود که فقط بتواند بر روی یک سیستم عامل خاص اجرا شده و امکان اجرا کردن آن بر روی نسخه های دیگر همان سیستم عامل وجود نداشته باشد. ضمناً اگر نرم افزار برای کامپیوترهای شخصی نوشته نشده باشد و برای تبلت ها و یا دستگاه های موبایل توسعه داده شده باشد، می بایست طوری طراحی شود که بتواند بر اساس استانداردهای خاص، بر روی گستره وسیعی از تبلتها و یا دستگاههای موبایلی اجرا شود. در این رابطه توصیه میکنیم از بسته ی آموزش ویدئویی شروع به کار Xamarin.Forms و بسته ی آموزش ویدئویی عمیق Xamarin.Forms و ساخت برنامه های Cross-Platform استفاده کنید.
کارآمد بودن (efficient بودن): منظور از کار آمد و یا efficient بودن این است که یک نرم افزار باید وظایف اختصاص داده شده به خود را، به بهترین شکل ممکن، در کمترین زمان و با حداقل مصرف منابع انجام بدهد. بهینه سازی کد و بهینه سازی حافظه، دو روش بسیار تاثیرگذار در رسیدن به efficient بودن یک نرم افزار هستند. تصویر زیر نیز ویژگی های نرم افزارهای موفق را نشان میدهد
موثر بودن (effective بودن): یک نرم افزار باید موثر باشند و این بدان معناست که نرم افزار باید بتواند مشکل مورد نظر که برای آن توسعه داده شده است را به خوبی حل و فصل کند. به عبارت دیگر، اگر نرم افزار نتواند مشکل ما را حل و فصل کند، هیچ تأثیر گذاری خاصی ندارد و توسعه آن بیهوده بوده است.
قابل اعتماد بودند (reliable بودن): منظور از قابل اعتماد و یا reliable بودن این است که یک نرم افزار می بایست بتواند با یک خروجی یکسان، در دفعات مختلفی که ورودی های یکسان دریافت می کند، تولید کند. به عبارت دیگر، اگر نرم افزار با دریافت ورودی های یکسان، هر دفعه یک خروجی تصادفی و یا غیر یکسان را تولید کند قابل اعتماد نیست.
کاربر پسند بودن (user friendly بودن): یک نرم افزار باید کاربر پسند باشد. به عبارت دیگر، کاربر باید بتواند از کار کردن با آن نرم افزار لذت ببرد. طراحی واسط کاربری و یا همان user interface، یک موضوع بسیار مهم در طراحی یک نرم افزار موفق است. استفاده به موقع از لینک ها، دکمه ها و آیکون ها نیز نباید فراموش شود.
خود مستند بودن (self documenting بودن): یک نرم افزار و یا برنامه باید خود مستند باشد. به عبارت دیگر، نام متغیرها، نام کلاس ها و دیگر قسمت های کد، باید بدون نیاز به نوشتن comment قابل خوانا باشند. این موضوع تحت عنوان قابلیت خوانایی و یا readability نیز شناخته میشود. در این رابطه توصیه می کنیم از بسته ی آموزش ویدئویی ریفکتورینگ در سی شارپ و بسته ی آموزش ویدئویی کدنویسی تمیز: نوشتن کد برای انسان ها و آموزش متنی کدنویسی تمیز (Clean Coding) در سی شارپ استفاده کنید.
در ادامه برخی از روشهای مناسب برای نوشتن کدهای تمیز را بررسی خواهیم کرد.
انتخاب نام مناسب برای متغیر ها، کلاس ها و غیره
نام مناسب می تواند بسیار در نوشتن یک کد تمیز موثر باشد. نام ها برای متغیر ها، objectها، توابع، کلاسها و متدها لحاظ می شوند. اصطلاحاً به نامهایی که برای این موارد انتخاب میکنیم، شناسه و یا identifier میگویند.
انتخاب یک identifier مناسب می تواند بر روی قابلیت خود مستند بودن کد نیز تاثیر مثبتی بگذارد. این بدان معناست که اگر یک object، یک نام مناسب داشته باشد، دیگر نیازی نیست که در قالب comment در رابطه با آن توضیحات اضافی نوشته شوند. مثالی از این موضوع در قسمت زیر نشان داده شده است.
همانطور که در تصویر بالا مشاهده می کنید، به راحتی می توان دید که از این دستورات برای انتخاب کردن student id و name و roll number استفاده شده است. نام این متغیرها خود توصیفی هستند. یعنی بسیار شفاف هستند و با خواندن آنها میتوان فهمید که در آنها چه نوع داده ای قرار گرفته است. برخی از ترفندهای انتخاب یک identifier مشخص و مناسب شامل موارد زیر هستند:
- استفاده کردن از رسم و رسومات کدنویسی در آن زبان برنامه نویسی خاص
- استفاده از نام های طولانی تر و شفاف تر
- استفاده از حروف بزرگ و کوچک برای نشان دادن معنا
- عدم استفاده از نام های یکسان برای متغیر ها و توابع مختلف
استفاده کردن از commentها
در مثال بالا دیدید که برای این که خواننده کد، درک بهتری از دستورالعملهای مربوط به کد به دست بیاورد و بتواند آن را بهتر درک کند، comment اضافه کردیم. همان طور که می دانید، comment ها بخشی از کدی که کامپایلر آنها را اجرا کند نیست و صرفاً برای اینکه، اندکی مستندات برای یک برنامه نویس دیگر به کد اضافه شود لحاظ می شوند. استفاده کردن از comment ها باید با دقت و حساسیت بیشتری لحاظ شوند. در این رابطه توصیه می کنیم از آموزش متنی کدنویسی تمیز (Clean Coding) در سی شارپ استفاده کنید.
برای مثال، کد زیر که استفاده از کامنت ها را در دستور کار قرار داده است را ببینید.
البته این را نیز بگویم که هر زبان برنامه نویسی، نسبت به زبان های دیگر ممکن است در اضافه کردن کامنت ها از تکنیک های مختلفی استفاده کند. فراموش نکنید که از اضافه کردن کامنت های طولانی باید جلوگیری کرد. چرا که میتوانند جریان اجرا شدن کد در ذهن برنامه نویس را دچار اختلال کنند. همانطور که گفتیم، سیستم های کامپیوتری از اجرا کردن کامنت ها صرف نظر میکنند، اما خواندن آنها توسط یک برنامه نویس دیگر می تواند بار پردازش ذهنی داشته باشند. اگر سعی کنید که از تکنیک های ارائه شده در بسته ی آموزش ویدئویی ریفکتورینگ در سی شارپ استفاده کنید، استفاده کردن از comment ها در کدهای شما به حداقل خواهند رسید.
حاشیه گذاری (indentation)
منظور از حاشیه نویسی و یا indentation، فاصله گذاشتن از حاشیه ی پنجره، برای نوشتن دستورات است. در زبان های برنامه نویسی مختلف، با شروع شدن یک قسمت جدید از خود و یا اصطلاحاً code block، اغلب حاشیه نویسی به صورت خودکار اتفاق میافتد. این موضوع در تصویر زیر نشان داده شده است.
همان طور که مشاهده میکنید، برنامهای که در سمت چپ قرار داده شده است به علت حاشیه نویسی مناسب قابلیت درک بالاتری نیز دارد. البته جریان اجرا شدن هر دو برنامه یکسان است و برای کامپایلر تفاوتی نمیکند. اما برنامه نویسی که پس از شما نیاز دارد که این نرم افزار را مدیریت و یا نگهداری کند، با کد سمت چپ ارتباط راحت تری برقرار می کند و در یک نگاه درک آن برای وی راحت تر است. بنابراین اگر سعی کنیم از حاشیه نویسی به روش صحیح استفاده کنیم، قابلیت نگهداری کد را افزایش داده ایم. اضافه کردن فاصله های خالی و یا خطوط خالی نیز بخشی از تکنیک حاشیه نویسی هستند. در قسمت زیر، برخی از شرایطی که در آن ها می توانید از حاشیه نویسی استفاده کنید را قرار داده ایم:
- سعی کنید یک خط خالی بین قسمت های functional و logical مربوط به کد اضافه کنید.
- سعی کنید در قسمت چپ و راست عملگرها از فاصله استفاده کنید و آنها را به هم نچسبانید.
- سعی کنید در ابتدای شروع جملات پس از یک دستور تصمیم گیری از قبیل جملات شرطی از tab استفاده کنید.
همانطور که می بینید، نوشتن یک کد خوانا و قابل نگهداری، تکنیک های متعددی را طلب می کند که در این رابطه آموزش های متنوع بر روی سایت قرار گرفته است. اما در این قسمت در رابطه با برخی از آنها که شامل انتخاب نام مناسب، استفاده از کامنت ها به صورت موثر و همچنین حاشیه نویسی بود صحبت کردیم. در پایان بار دیگر توصیه می کنیم از بسته ی آموزش ویدئویی کدنویسی تمیز: نوشتن کد برای انسان ها و آموزش متنی کدنویسی تمیز (Clean Coding) در سی شارپ استفاده کنید.