در بسیاری از پروژههای نرم افزاری ما ممکن است یک امکان (Feature) را برای بازهی زمانی خاصی بنا به درخواست مشتری یا ضوابط خودمان نیاز داشته باشیم و در زمان دیگری یا برای مشتری دیگری نیاز نداشته باشیم و باید قابلیت مورد نظر غیر فعال باشد. یا حتی ممکن است قابلیتی را به تازگی افزوده باشیم، ولی در زمان اجرا خطایی داشته باشد و مجبور باشیم فورا آن را از دسترش خارج کنیم. به این فرایند در اصلاح Feature Toggle میگویند که البته نامهای دیگری از ...
فرض کنید امروز یک API را برای استفاده عموم ارائه میدهید. آیا با یک breaking change در منابع شما که باعث تغییر در دادههای ورودی یا خروجی API شود، باید استفاده کنندگان این API در سیستمی که از آن استفاده کردهاند، تغییراتی را اعمال کنند یا خیر؟ جواب خیر میباشد؛ اصلیترین استفاده از API Versioning دقیقا برای این منظور است که بدون نگرانی از توسعههای بعدی، از ورژنهای قدیمی API بتوانیم استفاده کنیم. در این مقاله با روشهای مختلف ورژن ب ...
در محیطهای برنامه نویسی مدرن و امروزی، استفاده از تگها در کامنتها ( CommentTag) رواج
بسیاری دارد که یکی از معروفترین این تگها، تگ TODO است. این نوع تگها که عموما به همراه یک توضیح کوتاه یا عنوان به کار میروند، برای این است که
بتوانیم از طریق ابزارهایی که ادیتورها در اختیارمان قرار میدهند، آنها را پیدا کنیم. حتی
در سیستمهای لینوکسی میتوان با دستور Grep به جست و جوی آنها پرداخت. عموما تگها با حروف بزرگ نوشته میشوند؛ ول ...
Automated Code Test
با توجه به فاکتورهای موجود در Defensive Coding، یکی از مواردی که کیفیت کد شما را تضمین خواهد کرد، استفاده کردن از (ACT) Automated Code Test میباشد. در این قسمت قصد داریم مزایای تست اتوماتیک و Unit Test را به عنوان یکی دیگر از ابعاد Defensive Coding ذکر کنیم.
به عنوان برنامه نویسی که در حال توسعه کد هستید و قابلیتهای جدیدی را به کد خود اضافه میکنید، باید کدی را که در آن تغییر ایجاد ...
الگوی استخر اشیاء، جزو الگوهای تکوینی است و کار آن جلوگیری از ایجاد اشیاء تکراری و محافظت از به هدر رفتن حافظه است. نحوه کار این الگو بدین شکل است که وقتی کاربر درخواست نمونهای از یک شیء را میدهد، بعد از اتمام کار، شیء نابود نمیشود؛ بلکه به استخر بازگشت داده میشود تا در درخواستهای آینده، مجددا مورد استفاده قرار گیرد. این کار موجب عدم هدر رفتن حافظه و همچنین بالا رفتن کارآیی برنامه میگردد. این الگو به خصوص برای اشیایی که مدت کوتاهی م ...
این الگو شاید به نظر ساده برسد، ولی در بعضی موارد میتواند در سطوح بالاتر، کدهای تمیزتر و خلوتتری را در اختیار شما بگذارد. در مورد این الگو، در کتاب توسعه چابک عمو باب نیز آمده است. بسیاری ممکن است نسبت به این الگو جبهه بگیرند و بگویند که بررسی نال بودن یک شیء بهتر است و یا حتی رخ دادن خطای Null Pointer Exception در برنامه باعث میشود بتوانیم باگها را پیدا کنیم. در جواب باید گفت که این الگو قرار نیست در همه جا مورد استفاده قرار گیرد. ...
این الگو یکی دیگر از الگوهای رفتاری است که به قاعده OCP یا Open Closed Principle کمک بسیاری میکند. این الگو برای زمانی مناسب است که ما سعی بر این داریم تا یک سری الگوریتمهای متفاوت را بر روی یک سری از اشیاء پیاده سازی کنیم. به عنوان مثال تصور کنید که ما در یک سازمان افراد مختلفی را از مدیریت اصلی گرفته، تا سادهترین کارمندان، داریم و برای محاسبه حقوق و مالیات و ... نیاز است تا برای هر کدام دستور العملهایی را اجرا کنیم و ممکن است در آی ...
الگوی وضعیت، یکی از الگوهای رفتاری Gang Of Four است و بسیار شبیه به الگوی Strategy میباشد؛ ولی با کپسوله سازی بیشتر. در الگوی استراتژی تغییر وضعیت از بیرون کلاس اعمال مید ولی در الگوی وضعیت، بر اساس تغییر وضعیت درونی خودش صورت میگیرد.
یکی از استفادههای این الگو برای مثال در پلیرهاست که وضعیت پخش را چون Play,Pause و ... در خود دارند. در اینجا هم از این مثال استفاده میکنیم:
ابتدا یک اینترفیس برای وضعیت خود بسازید ...
همه کاربران کامپیوتر در ایران به خوبی با کلمه پروکسی آشنا هستند. پروکسی به معنی نماینده یا واسط است و پروکسی واسطی است بین ما و شیء اصلی. پروکسی در شبکه به این معنی است که سیستم شما به یک سیستم واسط متصل شده است که از طریق پروکسی محدودیتهای دسترسی برای آن تعریف شود. در اینجا هم پروکسی در واقع به همین منظور استفاده میشود. در تعدادی از کامنتهای سایت خوانده بودم دوستان در مورد اصول SOLID و Refactoring بحث میکردند که آیا انجام عمل اعتبار ...
یکی از الگوهای ساختاری Gang Of Four، استفاده از الگوی Facade است که پیچیدگیهای یک سیستم را مخفی میسازد و با ارائه یک پیاده سازی سادهتر، استفاده از آن و تست آن را راحتتر میسازد. این الگو یک کلاس یا یک سیستمی را با متدها و رویدادهایی ساده، در اختیار ما قرار میدهد و در یک لحظه، تنها با یک کلاس واحد سر و کله میزنیم. احتمالا بسیاری از شما از این الگو استفاده کردهاید، ولی شاید با اسم آن آشنا نبودهاید.
کار این کلاس در واقع ترکیب کل ...