نکات کدنویسی خوانا در تمام زبان های برنامه نویسی

اول کتاب Clean Code از Robert C Martin میگه:نوشتن کد تمیز کاری است که شما با انجام دادن آن میتوانید خود را حرفه ای بنامید.شما چقدر حرفه ای هستین؟تو این مقاله میخوام چندتا نکته بگم که چطور کد تمیزی بنویسین و بعدا که خواستین آپدیت کنین یا پروژه رو بسپرین به یکی دیگه،ویرایش برنامه راحت تر باشه و کد به اصطلاح خوانا تری نوشته باشیننام متغیرهمه کسانی که تا حالا کدنویسی انجام دادن میدونن که متغییر ها قسمتی از حافظه هستند که به برنامه اختصاص داده میشن تا بشه یسری اطلاعات داخل اون ذخیره کرد و بعدا بشه بی معطلی از اون استفاده کردحالا از بحث تخصصی و وظیفه متغییر که بگذریم میرسیم به نام گذاری متغیر هاتمام زبان های برنامه نویسی دنیا از متغیر ها استفاده میکنن که نام این متغیر ها توسط برنامه نویس مشخص میشهبه طور مثال من در کد زیر متغیری با نام str از نوع String در زبان برنامه نویسی جاوا تعریف میکنم و مقدار اون رو برابر با Hello World قرار میدم:String str = &quotHello World"اما این اشتباهه!!چرا؟این کد از لحاظ فنی ایرادی نداره ولی مشکل اینجاست که متغیر من دارای یک نام کاملا غیر مربوطه!کلمه str مخفف کلمه String هست،ولی ممکنه برنامه من اونقدر بزرگ باشه که چندین متغیر String داشته باشه و من ممکنه که نام های غیر مربوطی مثل str رو الان یادم بمونه ولی مطمعنا پس از مدتی که خواستین برنامه رو ویرایش کنین مطمعن باشین که یادتون نمیاد str چیکار میکرد و مجبورین دوباره برین به قسمتی که متغیرو تعریف کردین یا کلی سرچ کنین بین کدتون که این متغیر کجا استفاده شده یا کجا ویرایش شده و...!برای همین باید از متغیر معنی دار استفاده کرد//روش نام گذاری اشتباهString n = &quotHello World"//روش نام گذاری صحیحString name = &quotMohsen"از کلاس ها و شی گرایی استفاده کنیدشی گرایی و کلاس ها که الان خیلی از زبان های برنامه نویسی این امکان رو دارا هستن یکی از بهترین راه ها برای نوشتن کد خوانا هست به غیر از این،به ما کمک میکنه که توابع رو به زیرشاخه یک کلاس منتقل کنیم تا هم راحت تر توابع رو پیدا کنیم و هم توابع منظم تر باشن.به طور مثال زبان C که از شی گرایی پیروی نمیکنه و یه زبان تابع محور هست کلی تابع داره که ممکنه بعدا یا اسماشون یادتون بره یا وظیفه شون ولی مثلا تو سی شارپ کلاس String دارای توابعی هست که مربوط به رشته ها هست و میتونیم به راحتی با IDE مخصوص که میشه همون Microsoft Visual Studio توابع مربوط به رشته هارو پیدا کنیم مثل تابع Split ، IndexOf و...وظیفه کلاس هاتون رو مشخص کنید و هیچوقت از یک کلاس برای انجام چند عمل مختلف استفاده نکنید به جاش کلاس دیگه ای ایجاد کنید.مثلا کلاسی که وظیفه اتصال به دیتابیس و Fetch(رفتن و آوردن دیتا) از دیتابیس رو داره رو بهش امکان Limit داده هارو ندین به جاش return کنید و Limit رو در کلاس یا تابع دیگه ای انجام بدین؛حالا چرا اینو میگم؟چون اگه شما داده هارو توی همون کلاس Limit کنید ممکنه بعدا یه جای دیگه از برنامه نیازمند اطلاعات از دیتابیس باشید که به صورت خام برگشت داده بشن.این بحث وظیفه کلاس ها شاید چیز ساده ای باشه ولی کمک میکنه که پروژه رو به صورت منعطف تری پیش ببرین.وقتی خودتون رو لایک میکنید کامنت هم بزارید :)منظورم اینه که وقتی که کد خفنی مینویسید و احساس میکنید که بعدا ممکنه وقتی دیدینش گیج بشین حتما و سریعا،آخر یا بالای کد کامنت بزارین(حتی اگه بحث امنیتی باشه هم میتونید کامنت بزارید چون کامپایلر ها و مفسر ها کامنت رو اجرا نمیکنن و در آخر فایل executable ی که تحویل میدن فاقد از هرگونه کامنتی هست).فاصله ی زیرشاخه هارو رعایت کنیدیکی از مهمترین بحث های کدخوانی و تشخیص بین شرط ها همین بحث فاصله بین کد هاست.چطور؟به طور مثال وقتی یک شرط یا تابع ایجاد میکنیم یک آکولاد باز و بسته ( {} ) هم باید باشه تا نقطه شروع و پایان تابع یا شرط ما مشخص باشه:Function main(){ printf(&quotHello\n&quot);}تو کد بالا میبینید که دستور printf کمی جلوتر از آکولاد ها هست(دقیقا هشت کاراکتر فاصله که با کلید Tab ایجاد میشه)؛حالا این برای چی هست؟ممکنه ما توی یه تابع که خودش brace(آکولاد) داره کلی شرط و کد های دیگه داشته باشیم که توی شرط ها یا توی تابع اجرا بشه پس همین فاصله 8 تایی خیلی به تشخیص محل اجرای کد کمک میکنه.اعتراف میکنم نمیدونم اسمش چیه دقیقا D:کد تمیزاین مقاله در آینده آپدیت خواهد شد.امضا:MoHsEn