با سلام،
با اجازه دوستان و اساتید محترم، این تاپیک رو با توجه به اندک تجربیاتم پیرامون کد نویسی شروع میکنم و امیدوارم که با مشارکت همه دوستان بتونیم کمکی برای ارتقاء سطح دانش عمومی انجمن در کد نویسی باشیم.
نوشتن یک کتابخانه صرف نظر از سخت افزار و پلتفرم کامپایلر مورد استفاده، میتونه از سه جنبه حائز اهمیت باشه.
1 - در نظر گرفتن یک قالب استاندارد [قراردادی] برای نوشتن کدها
2 - رعایت انعطاف پذیری و سازگاری سخت افزاری
3 - رعایت سازگاری در پلتفرم های متفاوت کامپایلرها
هر کدوم از این سه جنبه دارای ابعاد مختلفی هستند که در ادامه سعی میکنم که نقطه نظرات خودم رو در مورد اونها اعلام کنم.
در نظر گرفتن یک قالب استاندارد [قراردادی] برای نوشتن کدها
اولین اصل در کدنویسی، شناسنامه دار بودن کلیه فایل هاست که مثلا میتونه یک هدری به شکل زیر باشه که در اون مشخصات کلی فایل و توضیحات اولیه و در صورت لزوم، سابقه تغییرات در ورژن های مختلف، ذکر شده باشه. شاید در نظر اول، این موضوع بی اهمیت جلوه کنه، ولی به مرور متوجه خواهید شد که برعکس، از اهمیت خاصی برخورداره!
نکته بعدی اینکه از اونجایی که ممکنه، هدر فایل ها در جاهای مختلفی فراخوانی ( یا اضافه ) بشن، حتما باید مکانیزمی در نظر گرفته بشه که یک هدر فایل بطور همزمان در چند جای مختلف فراخوانی نشه، برای این منظور، باید هدر فایل ها در شرطی مشابه شرط ذیل نوشته بشن :
نوشتن کامنت های خلاصه و کلیدی در کلیه فایل ها ( در جاهای مناسب، عنداللزوم ) نکته پر اهمیت بعدی است! اهمیت این موضوع زمانی روشن میشه که بعد از مدتی میخواهید فایل هاتون رو بررسی و یا اصلاح کنید. مضاف بر اینکه این موضوع برای استفاده کننده های بعدی هم میتونه از جنبه راهنمایی و سهولت در استفاده مهم باشه.
لزومی نداره که همه فانکشن های یک کتابخونه در دسترس عموم باشند! برخی از روتین ها جنبه استفاده داخلی دارند و به عبارتی فانکشن های Low-Level محسوب میشن. بطور نمونه در کتابخونه در حال بررسی ( کتابخونه AD7715 ) روتین های AD7715_WriteToReg و AD7715_CS پس این روتین ها رو نباید در لیست فانکشن پروتوتایپ هدر فایل کتابخونه قرار بدیم.
یک کتابخونه کامل باید طوری نوشته بشه که استفاده کننده نیازی به دستکاری در متن اصلی کدها نداشته باشه، به همین منظور باید حتی الامکان پیش بینی های لازم صورت بگیره. بطور مثال، ست کردن پارامترهای Run-Time باید توسط ماکروها و یا فانکشن ها انجام بشه، ست کردن پارامترهای Static باید در تعاریف ثابت و در یک فایل جداگانه در دسترس استفاده کننده باشه.
در این راستا توصیه میشه که هر کتابخونه حداقل شامل سه فایل باشه، یک فایل C که کدهای اصلی در اون نوشته شده، یک هدر فایل اصلی که تعاریف پایه، ساختارها و پروتوتایپ ها در اون نوشته شده ( که معمولا نیازی به اعمال تغییرات توسط کاربر نداره ) و یک هدر فایل کانفیگ که تمامی پارامترهای ثابت، فلگ ها و تعاریف سخت افزاری و غیره در اون هست و توسط کاربر تنظیم خواهد شد. بحث و بررسی بیشتر در این زمینه رو به مبحث بعدی موکول میکنم.
در پست های بعدی، در مورد سایر مباحث گفتگو خواهیم کرد. لطفا جهت پر بار تر شدن موضوع، در مباحث مورد بحث مشارکت بفرمائید.
با اجازه دوستان و اساتید محترم، این تاپیک رو با توجه به اندک تجربیاتم پیرامون کد نویسی شروع میکنم و امیدوارم که با مشارکت همه دوستان بتونیم کمکی برای ارتقاء سطح دانش عمومی انجمن در کد نویسی باشیم.
***************************
نوشتن یک کتابخانه صرف نظر از سخت افزار و پلتفرم کامپایلر مورد استفاده، میتونه از سه جنبه حائز اهمیت باشه.
1 - در نظر گرفتن یک قالب استاندارد [قراردادی] برای نوشتن کدها
2 - رعایت انعطاف پذیری و سازگاری سخت افزاری
3 - رعایت سازگاری در پلتفرم های متفاوت کامپایلرها
هر کدوم از این سه جنبه دارای ابعاد مختلفی هستند که در ادامه سعی میکنم که نقطه نظرات خودم رو در مورد اونها اعلام کنم.
در نظر گرفتن یک قالب استاندارد [قراردادی] برای نوشتن کدها
اولین اصل در کدنویسی، شناسنامه دار بودن کلیه فایل هاست که مثلا میتونه یک هدری به شکل زیر باشه که در اون مشخصات کلی فایل و توضیحات اولیه و در صورت لزوم، سابقه تغییرات در ورژن های مختلف، ذکر شده باشه. شاید در نظر اول، این موضوع بی اهمیت جلوه کنه، ولی به مرور متوجه خواهید شد که برعکس، از اهمیت خاصی برخورداره!
کد PHP:
//-----------------------------------------------------------------------------
// Copyright:
// Author:
// Remarks:
// known Problems:
// Version:
// Description:
//
//-----------------------------------------------------------------------------
نکته بعدی اینکه از اونجایی که ممکنه، هدر فایل ها در جاهای مختلفی فراخوانی ( یا اضافه ) بشن، حتما باید مکانیزمی در نظر گرفته بشه که یک هدر فایل بطور همزمان در چند جای مختلف فراخوانی نشه، برای این منظور، باید هدر فایل ها در شرطی مشابه شرط ذیل نوشته بشن :
کد PHP:
#ifndef _SHN_UTILS_H_
#define _SHN_UTILS_H_
.
.
.
.
.
#endif //_SHN_UTILS_H_
نوشتن کامنت های خلاصه و کلیدی در کلیه فایل ها ( در جاهای مناسب، عنداللزوم ) نکته پر اهمیت بعدی است! اهمیت این موضوع زمانی روشن میشه که بعد از مدتی میخواهید فایل هاتون رو بررسی و یا اصلاح کنید. مضاف بر اینکه این موضوع برای استفاده کننده های بعدی هم میتونه از جنبه راهنمایی و سهولت در استفاده مهم باشه.
لزومی نداره که همه فانکشن های یک کتابخونه در دسترس عموم باشند! برخی از روتین ها جنبه استفاده داخلی دارند و به عبارتی فانکشن های Low-Level محسوب میشن. بطور نمونه در کتابخونه در حال بررسی ( کتابخونه AD7715 ) روتین های AD7715_WriteToReg و AD7715_CS پس این روتین ها رو نباید در لیست فانکشن پروتوتایپ هدر فایل کتابخونه قرار بدیم.
یک کتابخونه کامل باید طوری نوشته بشه که استفاده کننده نیازی به دستکاری در متن اصلی کدها نداشته باشه، به همین منظور باید حتی الامکان پیش بینی های لازم صورت بگیره. بطور مثال، ست کردن پارامترهای Run-Time باید توسط ماکروها و یا فانکشن ها انجام بشه، ست کردن پارامترهای Static باید در تعاریف ثابت و در یک فایل جداگانه در دسترس استفاده کننده باشه.
در این راستا توصیه میشه که هر کتابخونه حداقل شامل سه فایل باشه، یک فایل C که کدهای اصلی در اون نوشته شده، یک هدر فایل اصلی که تعاریف پایه، ساختارها و پروتوتایپ ها در اون نوشته شده ( که معمولا نیازی به اعمال تغییرات توسط کاربر نداره ) و یک هدر فایل کانفیگ که تمامی پارامترهای ثابت، فلگ ها و تعاریف سخت افزاری و غیره در اون هست و توسط کاربر تنظیم خواهد شد. بحث و بررسی بیشتر در این زمینه رو به مبحث بعدی موکول میکنم.
در پست های بعدی، در مورد سایر مباحث گفتگو خواهیم کرد. لطفا جهت پر بار تر شدن موضوع، در مباحث مورد بحث مشارکت بفرمائید.

دیدگاه