اصول كدنويسي

يرنامه نويسي

اصول كدنويسي

۲۲ بازديد

ورودي بزرگ (و مخرب) ، يك كاربر مخرب مي تواند اصول كدنويسي بافر روي پشته را پر كند. با انجام دادن

با اين كار، آدرس برگشتي مي تواند به آنچه كه كاربر مخرب برنامه ريزي كرده است، بازنويسي شود. بنابراين،

وقتي فراخواني تابع به پايان مي رسد ، كنترل به جايي مي رود كه كاربر مخرب برنامه ريزي كرده است

معمولاً برخي از كدهاي مخرب براي كنترل رايانه يا انجام برخي موارد است استحكام: اگر يك برنامه حتي در موارد استثنايي برنامه ريزي شده را انجام دهد قوي است

شرايط يك برنامه ممكن است با اصول كدنويسي شرايط استثنايي در اشكال نادرست مواجه شود

ورودي، مقدار نادرست برخي از متغيرها، و سرريز. اگر چنين شرايطي پيش بيايد،

برنامه نبايد فقط "خراش" يا "داپت اصلي" باشد. بايد پيام معناداري توليد كند

و با ظرافت خارج شويد

Switch case with default: اگر هيچ مورد پيش فرضي در عبارت "switch" وجود نداشته باشد، رفتار مي تواند

غيرقابل پيش بيني باشد اگر آن مورد در مقطعي از زمان كه در آن زمان قابل پيش بيني نبوده رخ دهد

مرحله توسعه چنين عملي مي تواند منجر به باگي مانند عدم ارجاع NULL، نشت حافظه،

و همچنين انواع ديگر اشكالات جدي آن.اصول كدنويسي اين يك تمرين خوب است كه هميشه يك مورد پيش فرض را وارد كنيد.

به استثناها اهميت دهيد: بيشتر برنامه نويسان تمايل كمتري به موارد ممكن دارند

موارد استثنايي و تمايل دارند با جريان اصلي رويدادها، ايرانيان سايبر كنترل ها و داده ها كار كنند. اگر چه

كار اصلي در مسير اصلي انجام مي شود، اين مسيرهاي استثنايي هستند كه اغلب باعث ايجاد نرم افزار مي شوند

خرابي سيستم ها براي اطمينان بيشتر از سيستم نرم افزاري ، برنامه نويس بايد همه موارد را در نظر بگيرد

امكان ها و نوشتن كنترل كننده هاي استثنايي مناسب براي جلوگيري از خرابي يا ضرر در چنين شرايطي

شرايط پيش مي آيد

5. استانداردهاي كدگذاري

برنامه نويسان زمان بسيار اصول كدنويسي بيشتري را صرف خواندن كد مي كنند تا نوشتن كد. در طول عمر كد،

نويسنده زمان قابل توجهي را صرف خواندن آن در حين اشكال زدايي و بهبود مي كند. مردم

به غير از نويسنده نيز تلاش قابل توجهي در خواندن كد صرف مي كند زيرا كد اغلب است

توسط شخصي غير از نويسنده نگهداري مي شود. به طور خلاصه، نوشتن كد از اهميت بالايي برخوردار است

به گونه اي كه خواندن و درك آن آسان باشد. استانداردهاي كدگذاري قوانين و

دستورالعمل هايي براي برخي از جنبه هاي برنامه نويسي به منظور سهولت خواندن كد. اكثر

سازمان هايي كه نرم افزار توسعه مي دهند به طور منظم استانداردهاي خود را توسعه مي دهند.

قراردادهاي نامگذاري

برخي از قراردادهاي استاندارد نامگذاري كه اغلب رعايت مي شوند عبارتند از:

• نام بسته ها بايد با حروف كوچك (به عنوان مثال ، mypackage ، edu.iitk.maths) باشد

• نام هاي نوع بايد اسم باشند و با حروف بزرگ شروع شوند (مثلاً،

8

Day، DateOfBirth، EventHandler) نام متغيرها بايد اسم هايي باشند كه با حروف كوچك شروع مي شوند.

(به عنوان مثال، نام،

مقدار) اسامي ثابت بايد همه با حروف اصول كدنويسي بزرگ باشند (مانند PI، MAXJTERATIONS)

• نام روش ها بايد افعالي باشد كه با حروف كوچك شروع مي شوند (به عنوان مثال ، getValue ())

• متغيرهاي كلاس خصوصي بايد پسوند _ داشته باشند (به عنوان مثال، "مقدار int خصوصي_"). (برخي استانداردها

نياز است كه اين يك پيشوند باشد.)

• متغيرهاي با دامنه بزرگ بايد داراي نامهاي بلند باشند. متغيرهايي با دامنه كوچك مي توانند داشته باشند اسامي كوتاه ؛ تكرار كننده هاي حلقه بايد i، j، k و غيره قواعد كدنويسي نامگذاري شوند.

اصول كدنويسي

۲۳ بازديد

آزاد كردن يك منبع از قبل آزاد شده به طور كلي ، اصول كدنويسي در برنامه ها ، منابع ابتدا اختصاص داده مي شوند و سپس آزاد مي شوند. به  مثال ، حافظه است تخصيص و سپس تخصيص داده شد. اين خطا زماني رخ مي دهد كه برنامه نويس سعي مي كند آن را آزاد كند

منبع در حال حاضر آزاد شده است. تاثير اين خطاي رايج مي تواند فاجعه بار باشد.

اين خطا زماني رخ مي دهد كه ما سعي مي كنيم به محتواي مكاني كه به NULL اشاره مي كند دسترسي پيدا كنيم. اين

يك خطاي رايج است كه مي تواند يك سيستم نرم افزاري را خراب كند. انجام آن نيز مشكل است

تشخيص دهيد كه عدم ارجاع NULL ممكن است فقط در برخي از مسيرها و فقط در برخي از مسيرها رخ دهد

موقعيت ها اغلب مقداردهي اصول كدنويسي اوليه نامناسب در مسيرهاي مختلف منجر به مرجع NULL مي شود

بيانيه.

عدم وجود آدرس هاي منحصر به فرد

نام مستعار مشكلات زيادي ايجاد مي كند، و از جمله آنها نقض آدرس هاي منحصر به فرد است

انتظار آدرس هاي مختلف را داشته باشيد به عنوان مثال در تابع الحاق رشته، ما انتظار داريم

آدرس مبدا و مقصد متفاوت باشد.

خطاهاي همگام سازي

در يك برنامه موازي، كه در آن موضوعات متعددي وجود دارد كه احتمالاً به برخي از موضوعات مشترك دسترسي دارند

منابع ، سپس خطاهاي همگام  اصول كدنويسي سازي ممكن است [43 ، 55]. انجام اين خطاها بسيار دشوار است

پيدا كنيد زيرا آنها به راحتي آشكار نمي شوند. اما هنگامي كه ظاهر شوند، مي توانند آسيب جدي ايجاد كنند

به سيستم دسته بندي هاي مختلفي از خطاهاي همگام سازي وجود دارد كه برخي از آنها عبارتند از:

1. بن بست ها . شرايط مسابقه

 . همگام سازي ناسازگار فهرست آرايه خارج از محدوده شاخص آرايه اغلب از محدوده خارج مي شود كه منجر به استثنا مي شود. براي ديدن بايد دقت كرد كه مقادير شاخص آرايه منفي نيستند و از مرزهاي خود فراتر نمي روند. استثناهاي حسابي اينها شامل خطاهايي مانند تقسيم بر صفر و استثناهاي مميز شناور است. نتيجه اصول كدنويسي اينها وجود دارد

ممكن است از دريافت نتايج غيرمنتظره تا پايان برنامه متفاوت باشد. خاموش توسط يك اين يكي از رايج ترين خطاهايي است كه مي تواند به طرق مختلف ايجاد شود. مثلا،

از 1 شروع مي شود زماني كه بايد از 0 شروع كنيم يا برعكس ، < - N را به جاي

هنگام كار با انواع شمارش شده ، خطاهاي سرريز و سرريز به راحتي رخ مي دهد ، و

هنگام فرض مقادير انواع داده هاي شمارش شده بايد دقت شود.

استفاده غيرقانوني از &؛ بجاي &؛&:

اگر از منطق غير اتصال كوتاه (مانند & يا |) به جاي منطق اتصال كوتاه (&&) استفاده شود، اين اشكال ايجاد مي شود.

يا ||). منطق غير اتصال كوتاه هر دو طرف عبارت را ارزيابي ايرانيان سايبر مي كند. اما اتصال كوتاه

اپراتور يك طرف را ارزيابي مي كند و بر اساس اصول كدنويسي نتيجه تصميم مي گيرد كه آيا بايد طرف ديگر را ارزيابي كند يا خير

طرف يا نه

خطاهاي مديريت رشته

چندين روش وجود دارد كه در آنها توابع مديريت رشته مانند strcpy، sprintf، دريافت و غيره وجود دارد

مي تواند شكست بخورد. به عنوان مثال يكي از عملوندها NULL است، رشته NULL خاتمه يافته نيست، يا

عملوند مبدا ممكن است اندازه بزرگتر از مقصد داشته باشد. خطاهاي مديريت رشته كاملاً هستند

مشترك.

سرريز بافر

اگرچه سرريز بافر نيز يكي از دلايل مكرر خرابي نرم افزار است، اما در دنياي امروزي اصلي ترين دليل آن است

تأثير اين است كه يك نقص امنيتي است كه مي تواند توسط يك كاربر مخرب براي اجرا مورد سوء استفاده قرار گيرد كد دلخواه هنگامي كه يك برنامه ورودي را كه اصول كدنويسي در يك بافر كپي مي شود ، با دادن a قواعد كدنويسي مي گيرد