کتاب های برچسب design-patterns
تاریخ: ۲۱:۵۰:۳۸ ۱۳۹۸/۱/۲۴ شنبه
توسط: MotoMan
امتیاز: ۱

در صنعت، اغلب از Legacy Code به عنوان اصطلاحی برای کدی که تغییرش سخت است و ما آن را نمی‌فهمیم استفاده می‌شود. اما من پس از سال‌ها کار با تیم‌های مختلف و کمک کردن به آن‌ها در رفع کردن مشکلات جدی کد هایشان، به تعریف متفاوتی دست یافتم.

از نظر من Legacy Code، کدی است که فاقد تست است. چند دلیل نیز برای این تعریف خودم دارم. تست‌ها چه ربطی به بد بودن کد دارند؟ از نظر من پاسخ بدیهی است و این نکته ای است که در این کتاب می‌خواهم آن را بیان کنم:

کد بدون تست، کد بدی است. اهمیتی ندارد که چقدر خوب نوشته شده باشد یا چقدر زیبا و شی گرا یا به خوبی کپسوله سازی شده باشد. با داشتن تست‌ها است که ما می‌توانیم رفتار کد را به سرعت و به طرز صحیحی تغییر دهیم. بدون آن‌ها ما واقعا نمی‌دانیم که آیا کد بهتر شده یا بدتر شده است.

تعداد بازدید: ۹۵
دیدگاه ها: ۰
تاریخ: ۲۱:۵۹:۴۱ ۱۳۹۸/۱/۶ سه شنبه
توسط: MotoMan
امتیاز: ۲

کتاب تزریق وابستگی: اصول، استفاده‌ها و الگو ها، اول از همه و بیشتر درباره‌ی تزریق وابستگی (DI) است. همچنین کتاب درباره‌ی دات نت نیز هست که آن چنان اهمیت ندارد. اگرچه از #C برای کدهای مثال‌ها استفاده شده است، اما بیشتر مباحث این کتاب را به راحتی می‌توان در زبان‌ها و پلتفرم‌های دیگر نیز به کار برد.

تزریق وابستگی (Dependency Injection)، به مجموعه ای از الگوها و اصول مرتبط به هم گویند. DI روشی برای فکر کردن درباره‌ی طراحی کد است تا تکنولوژی به خصوصی. هدف نهایی استفاده از تزریق وابستگی، ساخت برنامه‌ی قابل نگهداری با استفاده از الگوی شی گرایی است.

تعداد بازدید: ۲۰۶
دیدگاه ها: ۰
تاریخ: ۱۷:۲:۲۵ ۱۳۹۸/۱/۴ یکشنبه
توسط: MotoMan
امتیاز: ۴

کتاب الگوهای میکرو سرویس (Microservice Patterns)، هدفش آموزش نحوه‌ی توسعه موفقیت آمیز برنامه‌ها با استفاده از معماری میکرو سرویس است. در این کتاب نه تنها بر روی مزایای معماری میکروسرویس بحث شده است بلکه اشکالات آن نیز بیان شده است. شما یاد خواهید گرفت که در چه مواقعی باید از معماری یکپارچه (monolithic) استفاده کنید  و در چه مواقعی میکرو سرویس‌ها را به کار بندید.

تعداد بازدید: ۲۰۱
دیدگاه ها: ۰
تاریخ: ۲۱:۳:۳۷ ۱۳۹۸/۱/۱ پنج شنبه
توسط: MotoMan
امتیاز: ۳
برچسب ها: Design Patterns | software engineering |

معماری‌های ServerLess، در حال تغییر نحوه‌ی ساخت و مدیریت سیستم‌های نرم افزاری هستند. در مقایسه با سیستم هایی که از سرور‌های فیزیکی یا ماشین‌های مجازی استفاده می‌کنند، بسیاری از ابزارها، تکنیک‌ها و الگو‌ها مثل هم هستند؛ با این حال چیزهایی هم وجود دارند یا نیاز دارند که به طور قابل ملاحظه ای تغییر کنند.

در کتاب الگو‌های طراحی و بهترین شیوه‌های Serverless، الگوهای قابل استفاده مجدد که قابلیت استفاده در هر نوع برنامه‌ی Serverless، مثل سیستم‌های وب،  پردازش داده، کلان داده یا اینترنت اشیا باشند معرفی شده اند. شما با مثال و توضیح درباره‌ی الگوهای مختلف در حوزه‌ی serverless، مثل RESTful APIs، GraphQl، Proxy، fan-out، messaging، معماری لامبدا و MapReduce یاد خواهید گرفت تا با استفاده از این الگو‌ها برنامه‌های خود را مقیاس پذیر، کارا، تحمل پذیر خطا کنید.

تعداد بازدید: ۱۰۱
دیدگاه ها: ۰
تاریخ: ۱۲:۳۶:۸ ۱۳۹۷/۶/۳۰ جمعه
توسط: MotoMan
امتیاز: ۶
برچسب ها: Design Patterns | dotNET Framework |

ویرایش دوم کتاب Framework Design Guidelines، بهترین شیوه‌ها را برای طراحی کتابخانه هایی با قابلیت استفاده مجدد برای Microsoft .NET Framework را به توسعه دهندگان نشان داده است.

این کتاب کار هر توسعه دهنده‌ی دات نتی که کدی تولید می‌کند تا توسعه دهندگان دیگر از آن استفاده کنند را بهبود می‌بخشد. این کتاب همچنین شامل نکات فراوانی برای دستورالعمل هاست که توسط ۳۵ معمار و حرفه ای فریمورک دات نت به آن اضافه شده اند و بحث هایی از دلایل دستور العمل‌ها و همچنین مثالهایی از مواقعی که نباید از دستورالعمل‌ها پیروی کرد را ارائه داده اند.

معماران مایکروسافت، Krzysztof Cwalina و Brad Abrams طراحی فریمورک را از بالا به پایین آموزش می‌دهند. مطالبی که در این کتاب خواهید آموخت عبارتند از:

  • فلسفه عمومی و اصول اساسی طراحی فریمورک
  • دستورالعمل‌های نامگذاری برای قسمت‌های مختلف فریمورک
  • دستورالعمل هایی برای طراحی و گسترش  type‌ها و اعضای آن ها
  • مسائل موثر و دستورالعملهایی برای اطمینان از گسترش پذیری
  • چگونه استثناها را طراحی کنیم
  • دستورالعملها و مثال هایی برای الگوهای رایج طراحی فریمورک

 

تعداد بازدید: ۱۰۰۲
دیدگاه ها: ۰
تاریخ: ۱۴:۴۷:۴۴ ۱۳۹۷/۵/۱۱ پنج شنبه
توسط: MotoMan
امتیاز: ۳

فریمورک NET Core.، نسبت به همیشه کنترل بیشتری برای معماری برنامه‌های وب ارائه می‌دهد. از دیدگاه معماری نرم افزار، یکی از نکات کلیدی این است که این کنترل بیشتر بر اساس استفاده از تزریق وابستگی است که به عنوان روشی برای پیاده سازی صحیح اصل معکوس سازی وابستگی پیشنهاد شده در اصول SOLID است که توسط Robert C. Martin ایجاد شده است.

با ظهور NET Core.، با DI تعبیه شده در سیستم، چیزها بسیار ساده‌تر شدند. هدف این کتاب دادن دیدی عمیق از نوشتن کد‌های loosely-coupled با استفاده از آخرین ویژگی‌های موجود در NET Core. است. در این کتاب در مورد تزریق سازنده ها، پارامتر، setter‌ها و اینترفیس صحبت می‌شود که با جزئیات و به کمک مثال‌ها توضیح داده شده است که چه تزریقی در چه شرایطی استفاده شود. در این کتاب به شما نشان داده می‌شود که چگونه کلاسی را پیاده سازی کنید که کلاس‌های دیگر را به همراه وابستگی هایشان ایجاد می‌کند، که به آن‌ها IoC Container نیز گفته می‌شود و سپس وابستگی‌ها برای هر کامپوننت MVC از ASP.NET Core را می‌سازند. شما یاد خواهید گرفت تا بین IoC Container ها، کاربرد معکوس سازی کنترل و خود DI که تنها روشی از پیاده سازی IoC از طریق این container‌ها است تمایز قائل شوید. شما همچنین چگونگی ساخت وابستگی ها  برای هر ابزار frontend دیگری مثل Angular را یاد می‌گیرید. شما می‌توانید از سرویس‌های تعبیه شده ارائه شده توسط NET Core. برای ساخت وابستگی‌های شخصی سازی شده خود نیز استفاده کنید.

در انتها، ما درباره‌ی بعضی از الگو‌ها و ضد الگو‌ها برای تزریق وابستگی به همراه تعدادی تکنیک برای ریفکتور کردن برنامه‌های قدیمی و تزریق وابستگی‌ها صحبت می‌کنیم.

تعداد بازدید: ۱۶۷۱
دیدگاه ها: ۰
تاریخ: ۱۵:۳۲:۲۴ ۱۳۹۷/۴/۱ جمعه
توسط: MotoMan
امتیاز: ۹
برچسب ها: C Sharp | Design Patterns |

همان طور که می‌دانید مفهوم الگوهای طراحی با کتاب مشهوری از Gang of Four  به نام Design Patterns: Elements of Reusable Object-Oriented Software (Addison-Wesley), 1994 به شدت محبوب شد. مهمتر از همه امروزه این مفاهیم هنوز هم در دنیای برنامه نویسی مورد استفاده قرار می‌گیرند. این کتاب در اواخر سال 1994 منتشر شد و به طور ویژه بر روی ++C متمرکز شده بود. در سال 2005، #C اولین نسخه با تغییرات بزرگ (C# 2.0) را عرضه کرد. از آن زمان، #C به زبانی پر از امکانات تبدیل شد و اکنون زبانی محبوب است.

در بخش اول کتاب الگوهای طراحی در #C, تعداد 23 الگوی طراحی (Gang of Four(GoF شامل Simple Factory Pattern، Null Object Pattern و MVC Pattern پوش داده شده اند. بخش نهایی کتاب با نتیجه گیری و انتقادهای الگوهای طراحی با فصل هایی در مورد anti-patterns و نشتی‌های حافظه  به پایان رسیده است. با کار کردن بر روی مثال هایی آسان، شما مفاهیم را به صورت عمیق درک خواهید کرد و مجموعه ای از برنامه هایی خواهید داشت که می‌توانید در برنامه‌های خود به کار برید.

تعداد بازدید: ۲۶۰۰
دیدگاه ها: ۰
تاریخ: ۱۷:۱۶:۵۴ ۱۳۹۷/۳/۲۵ جمعه
توسط: MotoMan
امتیاز: ۴
برچسب ها: C Sharp | Design Patterns | dotNET Framework |

عنوان این کتاب، کد انطباق پذیر است که شرح خوبی از نتیجه‌ی حاصل از به کارگیری اصول موجود در این کتاب است که عبارت از: توانایی کد برای انطباق با هر نیازمندی جدیدی یا سناریوهای پیش بینی نشده بدون نیاز به دوباره کاری قابل توجه. هدف این کتاب جمع آوری تعداد زیادی از بهترین شیوه‌های موجود در دنیای برنامه نویسی #C با NET Framework. مایکروسافت است. اگرچه بعضی از مطالب این کتاب در سایر کتاب‌ها نیز پوشش داده شده اند، اما آن کتاب‌ها بیشتر بر روی تئوری تمرکز کرده اند و یا مخصوص توسعه NET. نیستند.

برنامه نویسی می‌تواند فرآیندی آهسته باشد. اگر کدتان انطباق پذیر باشد، شما قادر خواهید بود تا آن را سریع تر، ساده‌تر و با اشکال کمتری تغییر دهید نسبت به وقتی که بر روی کدی کار می‌کنید که مانع تغییرات می‌شود. همان طور که هر توسعه دهنده ای می‌داند نیازمندی‌ها مشمول تغییرات هستند. این که این تغییرات چگونه مدیریت شوند، فاکتوری کلیدی است که بین پروژه‌های نرم افزاری موفق و شکست خورده تفاوت ایجاد می‌کند. توسعه دهندگان به تغییرات نیازمندی‌ها می‌توانند با دو دیدگاه متفاوت واکنش نشان دهند، که در ادامه آمده است.

اول؛ توسعه دهندگانی هستند که می‌توانند سفت و سخت باشند. در این رویکرد از فرآیند توسعه تا طراحی کلاس، پروژه به همان اندازه ای غیر قابل انعطاف است که اگر در 50 سال گذشته با کارت‌های پانچ پیاده سازی شده بود. متدولوژی‌های آبشاری در اطمینان از این که نرم افزار آزادانه تغییر نمی‌کند مجرمان آشکاری هستند. هدفشان این بود که فاز‌های آنالیز، طراحی، پیاده سازی و تست کردن باید متمایز باشند و تغییر دادن در نیازمندی‌ها پس از شروع پیاده سازی برای مشتریان سخت یا حداقل گران تمام شود. در نتیجه، کد برای تغییرات ساخته نمی‌شد؛ در حقیقت این فرآیند همه چیز را ممنوع می‌کند.

دوم؛ توسعه دهندگانی هستند که می‌توانند انطباق پذیر باشند. فرآیند‌های چابک فقط به عنوان جایگزینی برای متدولوژی‌های سفت و سخت نیستند، بلکه واکنشی به آن‌ها هستند. هدف آن‌ها در آغوش گرفتن تغییرات به عنوان بخشی از قرارداد بین توسعه دهنده و مشتری است. اگر مشتریان می‌خواهند چیزی را در محصولی که برایش پول پرداخت می‌کنند تغییر دهند، هزینه‌های زمانی و مالی باید با اندازه تغییرات مرتبط باشد و نه به فاز فرآیندی که در حال حاضر در حال انجام است. بر خلاف مهندسی فیزیکی، مهندسی نرم افزار با ابزاری قابل انعطاف کار می‌کند: سورس کد. آجر‌ها و ملات که یک خانه را تشکیل می‌دهند به معنای واقعی کلمه در مرحله‌ی ساخت با هم ترکیب شده اند. هزینه‌های مربوط به تغییر طراحی یک خانه لزوما با مرحله‌ی تکمیل ساخت مرتبط است. اگر پروژه هنوز آغاز نشده است و هنوز فقط بر روی نقشه است، تغییرات تقریبا ارزان هستند. اگر پنجره‌ها کار گذاشته شده، سیم کشی‌های برق انجام شده و لوله‌ها کار گذاشته شده اند، انتقال حمام از طبقه بالا به طبقه پایین کنار آشپزخانه فوق العاده گران تمام می‌شود. اما با کد، جابه جا کردن امکانات و تغییر بر روی ناوبری رابط کاربری آن قدر‌ها هم هزینه بر نیست. متاسفانه موضوع همیشه این طوری هم نیست. تنها هزینه‌های زمانی اغلب این تغییرات را ممنوع می‌کند و این به طور عمده ناشی از فقدان سازگاری در کد است.

 

تعداد بازدید: ۱۶۱۵
دیدگاه ها: ۲
loading...

لطفا منتظر بمانید...