اصول کد نویسی
به طور خودکار از تکرار کار جلوگیری کنید
بسیاری از کارهای مربوط به اصول کد نویسی توسعه نرم افزار "تکرار همان چیز" است. به عبارت دیگر، کار بارها تکرار می شود. این تکرار را می توان به راحتی با اتوماسیون از بین برد. اصل DRY نه تنها باید برای کد منبع یک برنامه کاربردی، بلکه برای کارهای توسعه نیز اعمال شود، و اتوماسیون برای این منظور مفید است. به عنوان مثال ، آزمایش اغلب یک کار تکراری است ، اما انجام آن به صورت دستی می تواند خسته کننده ، وقت گیر و مستعد خطا باشد. بنابراین، هر جا که ممکن است، آزمایش باید خودکار باشد. به طور مشابه، یکپارچه سازی نرم افزار (ساختمان) اغلب یک کار تکراری است، اما کار دستی زمان بر و مستعد خطا است. بنابراین، فرآیند ساخت نیز باید به صورت خودکار و مکرر اجرا شود. در حالت ایده آل، شما باید هر بار که متعهد می شوید آن را اجرا کنید. هر کاری که انجام آن به اصول کد نویسی صورت دستی بسیار سنگین باشد، مشمول اتوماسیون است. مطلوب است که خودکار و استاندارد شود. نکته مهم این است که تنها یک راه برای انجام کار وجود داشته باشد. این باعث صرفه جویی در زمان و کاهش مشکلات می شود.
از تکثیر منطق با انتزاع جلوگیری می شود
انواع مختلفی از تکرار منطقی وجود دارد. به عنوان مثال، اگر قسمت if-then یا switch به سادگی کپی و پیست شود، پیدا کردن و حذف آن بسیار آسان خواهد بود. بسیاری از الگوهای طراحی به وضوح با هدف کاهش یا حذف موارد تکراری در برنامه هستند. اگر شرایطی که برای استفاده از یک شی باید رعایت کنید تقریباً همیشه یکسان است، می توانید از الگوی Abstract Factory یا الگوی Factory Method استفاده کنید. اگر انواع مختلفی از رفتار شی وجود دارد، به جای نوشتن یک if-then طولانی، از الگوی Strategy استفاده کنید. در واقع می توان گفت الگوی طراحی به گونه ای ایجاد شده اصول کد نویسی است که بارها و بارها در مورد راه حل مشکلات مشابه فکر نکنیم. اصل DRY همچنین برای ساختارهایی مانند طرحواره های پایگاه داده اعمال می شود. این منجر به به اصطلاح "عادی سازی" می شود.
اصول مرتبط
چندین اصل دیگر مربوط به توسعه نرم افزار وجود دارد که به اصل DRY مربوط می شود. اصل OAOO (یک بار و فقط یک بار: 1 درجه) یکی از آنهاست. این یک اصل است که فقط در مورد عملکرد و رفتار کد اعمال می شود و می توان آن را به عنوان تخصص اصل DRY در نظر گرفت. همچنین یک OCP (اصل باز / بسته) وجود دارد. این بدان معنی است که واحدهای برنامه مانند کلاس ها باید برای برنامه های افزودنی "باز" و برعکس برای تغییرات "بستن" باشند. این اصل تنها در صورتی معتبر است که اصل DRY رعایت شود. همچنین یک دین معروف به نام SRP
TFP معمولاً برای نرم افزارهایی اصول کد نویسی استفاده می شود که برای تأیید به شدت به این آزمایش ها متکی هستند. ایجاد یک مورد آزمایشی ابتدا هزینه کل مالکیت (TOC) نرم افزار را کاهش می دهد. این به این دلیل است که این موارد تست رفتار مناسب نرم افزار را شناسایی می کنند و چنین موارد آزمایشی را استخراج می کنند تا مشخص شود که هر قسمت از کد چه کاری انجام می دهد و زمان مورد نیاز برای نگهداری را کاهش می دهد. این به این دلیل است که ابتدا محیط توسعه ایجاد می شود. علاوه بر این، به خاطر داشته باشید که تیم هایی که به طور فعال از این اصل استفاده می کنند، به ندرت نقص نرم افزاری پیدا می کنند. و در نهایت، ایجاد یک مورد آزمایش واحد شفاف نیز مستندات هماهنگ با کد محصول اصول کد نویسی شما را فراهم می کند.
توسعه آزمایش محور (TDD)
توسعه تست محور (TDD) TFP را یک قدم جلوتر می برد. TFP رفتار برنامه را در نظر می گیرد، اما TDD طراحی برنامه را نیز در نظر می گیرد. به جای برنامه ریزی برای طراحی برنامه، طراحی با فرآیند تست و نوشتن کد محصول هدایت می شود. به عنوان مثال، اگر یک توسعهدهنده راه بهتری برای بازسازی پایه کد فعلی پیدا کند، توسعهدهنده میتواند به بازسازی مجدد ادامه دهد و پایه کد همچنان توسط موارد آزمایشی پشتیبانی میشود که عملکرد را تضمین میکند. این بدان معناست که با TDD، توسعهدهندگان آزمایشهای گستردهای را مینویسند که عملکرد را تضمین میکند، اصول کد نویسی نه اینکه کاملاً به طرحی که در مستندات توضیح داده شده است،
پایبند باشند، بنابراین زمانی که فکر میکنند مناسب است، طرح را تغییر میدهند. من میتوانم این کار را انجام دهم. بنابراین، انعطاف پذیری بیشتری را اضافه می کند.
چه زمانی از TFP یا TDD استفاده می کنید؟
TFP یا TDD به ایجاد نرم افزار قوی و
من سعی می کنم یک سکانس بی نهایت تنبل را چاپ کنم.من می دانستم که با دنباله تنبل چه می کنم ، اما برای اهداف اشکال زدایی ،اشتباهات برنامه نویسی من یک تماس را وارد کردم ، بنابراین به طور موقت فراموش کردم که چاپ می شود. خنده دار ، چرا کامپیوتر من همه قطع شد؟من در حال تلاش برای برنامه ریزی فوری هستم. این وسوسه انگیز است که تعداد زیادی رف یا اتم بسازید و کدی بنویسید که دائماً بر وضعیت خود شما تأثیر می گذارد. این را می توان انجام داد ، اما مناسب نیست. همچنین ، عملکرد می تواند آسیب ببیند و مزایای هسته های متعدد ناچیز است.من سعی می کنم را 100٪ کاربردی برنامه ریزی کنم. طرف مقابل: برخی از الگوریتم ها در واقع حالت متغیری می خواهند. اجتناب مذهبی از حالت تغییرپذیر به هر قیمتی می تواند الگوریتم را کند یا ناخوشایند کند. تصمیم گیری مستلزم قضاوت و کمی تجربه است.من سعی می کنم در جاوا خیلی کار کنم.به دلیل دسترسی اشتباهات رایج برنامه نویسی آسان به جاوا ، گاهی اوقات وسوسه کننده است که از به عنوان یک زبان برنامه نویسی در اطراف جاوا استفاده کنید. اگر از تابع کتابخانه جاوا استفاده می کنید ، دقیقاً باید این کار را انجام دهید ، اما باید ساختار داده ها را در جاوا یا انواع داده مانند مجموعه هایی که در دارای معادل هستند ، حفظ کنید. دور زدن دنباله ای از عناصر به طور بالقوه بسیار بزرگ یا بی نهایت تنبل در حالی که مرجع عنصر اول را حفظ می کنید ، خطر تمام شدن حافظه را به همراه دارد. فراموش کردم که وجود ندارد. تماس های معمولی دم فضای پشته را مصرف می کند اشتباهات رایج برنامه نویسی و اگر مراقب نباید ، سرریز می شود. دارای "عود" و "ترامپولین" است ، که می تواند بسیاری از مواردی را که از تماس های بهینه بهینه در زبان های دیگر استفاده می شود ، حل کند ، اما این تکنیک ها باید عمداً اعمال شوند. دنباله ترک تنبل شما می توانید دنباله های تنبل با یا la بر اساس های تنبل سطح بالاتر) ایجاد کنید ، اما آنها را در بپیچید یا منتقل کنید و دیگر با سایر عملکردهایی که دنباله ها را دنبال می کنند تنبل نخواهید بود. این می تواند باعث انباشت پشته و پشته شود. قرار دادن چیزهای متغیر با استفاده از مرجع این را می توان از نظر فنی انجام داد ، اما فقط مرجع شیء مرجع توسط مدیریت می شود ، نه شیء مرجع و زمینه های آن (مگر اینکه تغییر ناپذیر باشد و به مرجع دیگری اشاره کند). بنابراین در صورت امکان من فقط اجسام تغییر ناپذیر refs را ترجیح می دهم. در مورد اتم ها هم همینطور است. بسیاری از آنها قبلاً ذکر شده است. فقط یکی دیگه اضافه میکنم اشتباهات رایج برنامه نویسی جاوا همیشه را بررسی می کند حتی اگر مقدار باشد. بنابراین جاوا مقدار بولین جاوا را برمی گرداند. نباید خودت چک کنی (من با استفاده از کتابخانه c که یک پایگاه بولین
و یک برنامه معادل را به زبان ماشین تولید می کند. دومی می تواند در هر زمان از رایانه اجرا شود و کاملاً مستقل از برنامه اصلی است. اشتباهات رایج برنامه نویسی در عوض مترجم دستورات برنامه اصلی را یکی یکی می خواند و برای هر یک بلافاصله دنباله ای معادل از دستورات ماشین را اجرا می کند. برنامه اصلی برنامه منبع نامیده می شود ، در حالی که برنامه تولید شده توسط کامپایلر برنامه شی نامیده می شود. شیء برنامه به شکلی است که توسط کامپیوتر قابل درک است ، اما معمولاً قادر به اجرا نیست. باید آن را تکمیل و به سایر قسمتهای برنامه لازم برای اجرای آن مرتبط کنید ، قسمتهایی که یا توسط برنامه نویس نوشته شده یا اشتباهات رایج برنامه نویسی در کتابخانه های زبان یافت می شوند. برنامه ای که این اتصال را امکان پذیر می کند linker-loader نامیده می شود. نتیجه اتصال ، تولید برنامه اجرایی (اجرایی) است که آخرین برنامه ای است که توسط کامپیوتر اجرا می شود. به همین دلیل است که کل فرایند را کامپایل و پیوند نامیده اند. برنامه اجرایی تنها در صورتی ایجاد می شود که برنامه اصلی دارای خطاهای نحوی نباشد. بیشتر اوقات هر برنامه در ابتدا دارای خطا می شود. خطاهای برنامه عموماً بر دو نوع منطقی و نحوی هستند. خطاهای منطقی فقط در اجرا ظاهر می شوند ، در حالی که خطاهای نحوی در مرحله کامپایل هستند. شکل 3.9 لیستی از چهار گره شکل 6.5 کامپایل و اتصال برنامه مقدمه ای بر برنامه نویسی 139 ئه گسترده ای از اشتباهات و راه های مقابله با آنها در فصل بعدی ارائه شده است. دراشتباهات رایج برنامه نویسی اینجا ذکر می کنیم که خطاهای منطقی که جدی ترین و دشوارترین آنها برای تصحیح هستند ، ناشی از اشتباهات در اجرای الگوریتم است ، در حالی که نحو به دلیل ناشناس ماندن نام دستورات ، حذف اعلام داده ها است و همیشه باید برای تولید اصلاح شود آخرین برنامه اجرایی بنابراین کامپایلر یا مترجم خطاهای نحوی را تشخیص داده و پیامهای تشخیصی مناسب را نمایش می دهد. مرحله بعدی اصلاح اشتباهات است. برنامه تصحیح شده مجدداً برای کامپایل ارسال می شود و این روند تا زمانی که تمام خطاها به طور کامل حذف نشوند تکرار می شود. نکته منفی استفاده از کامپایلر این است که قبل از استفاده از برنامه ، باید مراحل کامپایل و اتصال را طی کند. از سوی دیگر ، استفاده از مترجم مزیت اجرای فوری و در نتیجه اصلاح فوری را دارد. اما اجرای برنامه کندتر و گاهی به طوراشتباهات رایج برنامه نویسی قابل توجهی از برنامه اجرایی معادل تولید شده توسط کامپایلر کندتر می شود. با این حال ، محیط های برنامه نویسی مدرن شکل 6.6 فرآیند ترجمه و اجرای برنامه شکل 6.6 فرآیند ترجمه و اجرای برنامه140 توسعه برنامه های کاربردی در محیط برنامه نویسی معمولاً با پیاده سازی های ترکیبی ارائه می شوند ، جایی که در مرحله ایجاد برنامه از مترجم و کامپایلر برای نسخه نهایی و بهره برداری از برنامه استفاده می شود. برای تهیه ایرانیان سایبر پیش نویس اولیه برنامه ها و اصلاح آنها ، از برنامه خاصی به نام ویرایشگر استفاده می شود.
برچسب ها : ,