موضوع مقاله: قراردادهای کدنویسی | مخاطب: عمومی | لحن: دانشنامه‌ای | ساختار: عنوان، مقدمه، 3 بخش، جمع‌بندی | مقاله: | # قراردادهای کدنویسی | مقدمه: قراردادهای کدنویسی مجموعه‌ای از دستورالعمل‌ها برای یک زبان برنامه‌نویسی خاص است که برای هر جنبه‌ای از یک برنامه نوشته شده در آن زبان، سبک برنامه‌نویسی، شیوه و روش‌های برنامه‌نویسی‌ای توصیه می‌کند. | ## بخش 1: قراردادهای کدنویسی | به برنامه نویسان نرم‌افزار به شدت توصیه می‌شود که برای بهبود خوانایی code|سورس کد و آسان کردن نگهداری نرم‌افزار به دنبال این دستورالعمل‌ها بروند. قرادادهای کدنویسی، تنها برای نگهداری توسط انسان‌ها و بازبین‌های همتای یک پروژه نرم‌افزاری مناسب هستند. قراردادها می‌توانند در مجموعه ای از قوانین ثبت شده باشند که کل تیم یا شرکت از آن‌ها پیروی می‌کنند، یا ممکن است به صورت غیررسمی به عنوان عادت‌های برنامه‌نویسی معمول یک فرد باشد. نگهداری نرم‌افزار کاهش هزینه‌های نگهداری نرم‌افزار، بیشترین دلیل ذکر شده برای پیروی از قراردادهای برنامه‌نویسی زیر است. Sun Microsystems در مقدمه ای برای قوانین کدنویسی زبان برنامه‌نویسی جاوا، دلایل زیر را ارائه می‌دهد: معاهدات کد برای برنامه نویسان به دلایل مختلف اهمیت دارد: ۴۰٪ -۸۰٪ از هزینه عمر یک قطعه نرم‌افزار به تعمیر و نگهداری می‌رود. توافقنامه‌های کد، قابلیت خواندن نرم‌افزار را بهبود می‌بخشد، به مهندسان اجازه می‌دهد تا کد جدید را سریع تر و کامل تر درک کنند. اگر کد منبع خود را به عنوان یک محصول حمل می‌کنید، باید مطمئن شوید که آن را نیز به عنوان هر محصول دیگری که ایجاد می‌کنید، بسته‌بندی شده و پاک می‌شود. مهندسی نرم‌افزار مهندسی نرم‌افزار فرایندی است که توسط آن پروژه مشخص و طراحی شده‌است. مهندسی نرم‌افزار برای موفقیت پروژه‌ها کاملاً بنیادی و ضروری است، خصوصاً اگر آنها، پروژه‌های بزرگی باشند. فرایند مهندسی نرم‌افزار، چیزی است که پروسهٔ کد زدن را تا زمان کامپایل موفق آمیز اجرا می‌کند. مهندسی نرم‌افزار خوب می‌تواند بین یک پروژه موفق (هم از نظر مالی و هم مهندسی) و پروژه ای که، در بدترین حالت، هنگام تحویل شکست می‌خورد، تفاوت ایجاد کند. مهندسی نرم‌افزار خوب هزینه‌های جاری را پایین می‌آورد و موفقیت در بازاریابی پروژه را به حداکثر می‌رساند. این کار ماژول‌ها و اجزاء را مشخص می‌کند، که رابط‌های آن‌ها و نحوه ارتباط آن‌ها چگونه است. مهندس نرم‌افزار، هنگام انجام این کار، به تمام روش‌های مختلف برای طراحی پروژه نگاه می‌کند و بهترین روش‌ها را انتخاب می‌کند. او تمام جنبه‌های فنی، کیفی، مدیریتی، منطقی و تجاری را در نظر می‌گیرد که شامل زمان و هزینه توسعه، نگهداری، پشتیبانی و میزان پیش هزینه‌ها و هزینه‌های جاری است. مشخصات آزمون این کار تمام تست‌هایی که باید اجرا شوند و چه نتایجی باید بررسی شود را تعیین می‌کند. | ## بخش 2: قراردادهای کدنویسی | اغلب تست‌ها توسط تست‌های خودکار انجام می‌شود و تست‌های تعیین شده در فایل کدها یا اسکریپت فایل‌ها مشخص می‌شود. هر سند دارای یک نسبت ۱:۱ به سند قبلی است؛ و در نهایت مشخصات تست دارای یک رابطه ۱:۱ به مشخصات مورد نیاز است. زنجیره اسناد دو طرفه است - مشخصات کاهش می‌یابد، نتایج و خروجی‌ها به دست می‌آیند. طبق تعریف، تنها نویسنده اصلی هر قطعه کد، باید سورس فایل را قبل از ارائه کد برای بازبینی، بخواند. کدی که با استفاده از دستورالعمل‌های ثابت نوشته شده‌است، برای بقیه بررسی کنندگان کد برای فهم و تحلیل کد آسان‌تر است، و فرایند تشخیص نقص را بهبود می‌بخشد. نرم‌افزاری که به‌طور مداوم کد زده شده، حتی برای نویسنده اصلی، قابلیت نگهداری را کاهش می‌دهد. هیچ تضمینی وجود ندارد که یک فرد دلیل منطقی برای اینکه چرا یک قطعه خاص از یک کد خاص به درستی نوشته، پس از طولانی مدت به یاد نمی‌آورد. استفاده دائمی از فاصله سفید باعث بهبود خوانایی و کاهش زمان لازم برای فهم نرم‌افزار می‌شود. استانداردهای کدنویسی در مواردی که قراردادهای برنامه‌نویسی به‌طور خاص برای تولید کد با کیفیت بالا طراحی شده‌اند و سپس زمانی که به‌طور رسمی تصویب شدند، استانداردهای کدنویسی می‌شوند. استایل‌های خاص، صرف نظر از اینکه به‌طور معمول تصویب شده یا خیر، به‌طور خودکار، کد با کیفیت تولید نمی‌کند. مدیریت پیچیدگی اصل اساسی زیر را شامل می‌شود: در طول پروژه توسعه سؤال اگر این پروژه با کمترین مقدار از کد مورد نیاز اجرا شود باید پرسید. اگر این کار را نکرده باشد، کار غیر ضروری انجام شده‌است و هزینه‌های غیر ضروری - هر دو از قبل و بعد از آن - متحمل شده‌اند. پیچیدگی در مرحله طراحی طراحی می‌شود - چگونه پروژه‌ها معماری می‌شود - و در مرحله توسعه - چه کدام استفاده می‌شود. اغلب این‌ها برنامه‌نویسی را به عنوان «فیزیکی» نگه می‌دارند - برنامه‌نویسی به شیوه ای بسیار مستقیم و بسیار انتزاعی نیست. هر چه کد پیچیده‌تر باشد، احتمال باگ دار بودن کد بیشتر، پیدا کردن باگ، سخت‌تر و احتمال وجود باگ‌های پنهان بیشتر است. بازآرایی (Refactoring) بازآرایی کد به یکی از فعالیت‌های تعمیر و نگهداری نرم‌افزار اشاره دارد که سورس کد برای بهبود خوانایی یا بهبود ساختار آن اصلاح شده‌است. | ## بخش 3: قراردادهای کدنویسی | نرم‌افزار اغلب به این دلیل بازآرایی می‌شود تا با استانداردهای کدنویسی تیم بعد از انتشار اولیه، منطبق شود. هر گونه تغییری که رفتار نرم‌افزار را تغییر ندهد، می‌تواند بازآرایی در نظر گرفته شود. فعالتهای بازآرایی عبارتند از تغییر اسامی متغیرها، تغییر نام متدها، انتقال متدها یا کل کلاس (class) و شکستن متدهای بزرگ (یا توابع) به موارد کوچکتر. روشهای سریع توسعه نرمافزاری برنامه‌ریزی منظم (یا حتی پیوسته) برای بازآرایی، آن را بخش جدایی ناپذیری از فرایند توسعه نرم‌افزار تیم می‌کند. خودکارسازی قراردادهای کدنویسی اجازه می‌دهد تا اسکریپت‌های ساده یا برنامه‌هایی داشته باشیم که کار آن‌ها پردازش سورس کد برای اهدافی غیر از کامپایل کردن آن به یک برنامه قابل باشد. معمول این است که طول [خطوط] نرم‌افزار (خطوط سورس کد) را برای پیگیری پیشرفت پروژه یا تعیین خط نشانه ای برای پیاده تخمین‌های آینده پروژه بنا می‌کنند. استانداردهای کدنویسی مداوم می‌تواند، به نوبه خود، اندازه‌گیری‌ها را مداوم تر کند. ابزارها استفاده از مجموعه ای از برچسب‌ها (تگ‌ها) را مشخص می‌کنند، اما استفاده از آن‌ها در یک پروژه طبق قرارداد مشخص می‌شود. قراردادهای کدنویسی نوشتن نرم‌افزار جدیدی که کار آن پردازش نرم‌افزار موجود است را ساده می‌کند. بخشی از رشد این طبقه از ابزارهای توسعه، نه تنها از افزایش بلوغ و کمال خود متخصصان (و تمرکز مدرن بر ایمنی و امنیت)، بلکه از ماهیت خود زبان‌ها نیز سرچشمه می‌گیرد. فاکتورهای زبان همه متخصصین نرم‌افزار باید با مشکل سازماندهی و مدیریت تعداد زیادی از دستورالعمل‌های گاهی پیچیده روبرو شوند. برای همه حتی کوچکترین پروژه‌های نرم‌افزاری، سورس کد (دستورالعمل‌ها) به فایل‌های جداگانه و اغلب بین بسیاری از دایرکتوری‌ها تقسیم می‌شوند. این برای برنامه نویسان طبیعی بود که توابع (رفتار) بسیار مرتبط را در یک فایل نگهداری کنند و فایل‌های مرتبط را در دایرکتوری‌ها مشترک جمع کنند. همان‌طور که توسعه نرم‌افزاری از برنامه‌های صرفاً رویه ای (مانند فورترن FORTRAN) به سمت ساختارهای شی گرا (مانند C ++) تغییر کرده‌است، این کار که کد را برای یک کلاس عمومی (public) در یک فایل واحد (قرارداد 'یک کلاس در هر فایل'). استانداردهای کدگذاری FIFE جاوا یک قدم فراتر رفته‌است - کامپایلر جاوا اگر بیش از یک کلاس عمومی در هر فایل پیدا کند. در مثال بالا، while آرگومان دوم خود یعنی دستورش را از دست داده‌است (زیرا Tcl هم از کاراکترهای خط جدید برای محدود کردن پایان یک دستور استفاده می‌کند). | ## جمع‌بندی | قراردادهای رایج قراردادهای برنامه‌نویسی بسیار زیادی وجود دارد؛ برای مثال سبک و سیاق کدهای سبک را ببینید.