کتاب های برچسب design-patterns
تاریخ: ۱۴:۴۷:۴۴ ۱۳۹۷/۵/۱۱ پنج شنبه
توسط: 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 سال گذشته با کارت‌های پانچ پیاده سازی شده بود. متدولوژی‌های آبشاری در اطمینان از این که نرم افزار آزادانه تغییر نمی‌کند مجرمان آشکاری هستند. هدفشان این بود که فاز‌های آنالیز، طراحی، پیاده سازی و تست کردن باید متمایز باشند و تغییر دادن در نیازمندی‌ها پس از شروع پیاده سازی برای مشتریان سخت یا حداقل گران تمام شود. در نتیجه، کد برای تغییرات ساخته نمی‌شد؛ در حقیقت این فرآیند همه چیز را ممنوع می‌کند.

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

 

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

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

متخصص مشهور نرم افزار Robert C. Martin، الگویی انقلابی در کتاب Clean Code: A Handbook of Agile Software Craftsmanship ارائه داده است. مارتین با همکاری همکارانش در شرکت Object Mentor، بهترین شیوه‌های چابک تمیز سازی کد را استخراج کرد و آن‌ها را  تبدیل به کتابی کرد که در آن ارزش‌های یک متخصص را به شما یاد می‌دهد و شما را تبدیل به برنامه نویسی بهتر می‌کند؛ البته فقط وقتی که بر روی آن‌ها کار کنید.

چه نوع کاری شما انجام خواهید داد؟ شما کد خواهید خواند، خیلی خیلی زیاد. شما به چالش کشیده خواهید شد تا در مورد موارد صحیح آن کد و اشکالاتش فکر کنید. از همه مهمتر شما به چالش کشیده خواهید شد تا ارزش‌های حرفه ای و تعهد خودتان را به حرفه خود را مورد ارزیابی مجدد قرار دهید.

کتاب Clean Code به سه بخش تقسیم شده است. بخش اول اصول، الگو‌ها و شیوه‌های نوشتن کد تمیز را شرح می‌دهد. بخش دوم متشکل از چندین مورد مطالعاتی در مورد افزایش پیچیدگی است. هر مورد یک تمرین تمیز سازی کد است که تبدیل اساس یک کد که دارای تعدادی مشکل است به کدی کارامد و بدون ایراد است. قسمت سوم نتیجه گیری نهایی است. یک فصل مجزا که فهرستی از اکتشافات و بوهایی (smells) است که در ضمن ایجاد موارد مطالعاتی جمع آوری شده اند.

مواردی که در این کتاب خواهید فهمید عبارتند از:

  • چگونه می‌توان تفاوت بین کد خوب و بد را بیان کرد
  • چگونه می‌توان کد خوب نوشت و کد بد را به کد خوب تبدیل کرد
  • چگونه خوب نام گذاری کنیم، توابع خوب، اشیا خوب و کلاس‌های خوب ایجاد کنیم
  • چگونه به کد فرمت بدهیم تا به حداکثر خوانایی ممکن برسیم
  • چگونه مدیریت خطای کاملی بدون مبهم کردن منطق کد را پیاده سازی کرد
  • چگونه آزمون واحد انجام داد و توسعه آزمون محور را تمرین کرد
تعداد بازدید: ۱۱۷۹
دیدگاه ها: ۰
تاریخ: ۱۲:۱۹:۲ ۱۳۹۶/۱۲/۱۱ جمعه
توسط: MotoMan
امتیاز: ۱
برچسب ها: Design Patterns | CPP | software engineering |
با ++C مدرن، برنامه‌های قابل نگهداری، قابل گسترش و با دوام بنویسید. کتاب ++Clean C - الگوها و بهترین شیوه‌های توسعه نرم افزار پایدار، برای هر توسعه دهنده، معمار نرم افزار یا سرپرست تیمی که علاقه مند به خوب کدنویسی با ++C و صرفه جویی در هزینه توسعه است، ضروری است. اگر می‌خواهید که به خودتان تمیز کد نوشتن با ++C را آموزش دهید، کتاب ++Clean C دقیقا چیزی هست که به آن احتیاج دارید. این کتاب نوشته شده تا به توسعه دهندگان ++C در تمامی سطوح کمک کند تا چگونگی نوشتن کد ++C قابل فهم، انعطاف پذیر، قابل نگهداری و کار آمد را با مثال آموزش دهد. حتی اگر شما توسعه دهنده با تجربه ++C هستید، نکاتی در این کتاب پیدا می‌کنید که در کار خود مفید خواهید یافت.
اگر اهمیتی به کد خود نمی‌دهید، شما می‌توانید یک حیوان بزرگ کثیف غیر قابل نگهداری با هر زبان برنامه نویسی تولید کنید. اگر چه، پروژه‌های ++C به طرز خاصی مستعد کثیفی هستند و  تمایل به تبدیل شدن به عادت‌های بد دارند. بیشتر کدهای ++C ای که امروزه نوشته می‌شوند به نظر می‌آیند که در دهه‌ی 1980 نوشته شده اند. این طور به نظر می‌رسد که توسعه دهندگان ++C توسط کسانی که مهارت‌های نرم افزاری و اصول کد نویسی تمیز را ترویج می‌دادند به دست فراموشی سپرده شده اند. اینترنت پر شده از مثال‌های ++C که ظاهرا خیلی سریع و بهینه هستند ولی با سینتکس بی رحمانه ای که کاملا اصول ابتدایی طراحی خوب و کد نویس خوب را نادیده می‌گیرند. این کتاب شرح خواهد داد که چگونه از چنین سناریو هایی دوری کنید و چگونه بیشترین استفاده از کد ++C خود بکنید. در انتها شما کد نویسی خودتان را موثر‌تر و مهمتر از همه سرگرم کننده‌تر خواهید یافت.
مطالبی که در کتاب ++Clean C یاد خواهید گرفت عبارتند از:
- فهمیدن اصول و قوانین برای کد نویسی تمیز در ++C
- به کار گیری توسعه آزمون محور (TDD)
- کشف کردن الگو‌های طراحی و اصطلاحات ++C
- به کار گیری الگو‌های طراحی
تعداد بازدید: ۵۱۲
دیدگاه ها: ۰
تاریخ: ۲۰:۳۸:۹ ۱۳۹۶/۹/۱۵ چهارشنبه
توسط: MotoMan
امتیاز: ۳

هر موقع که صحبتی از معماری نرم افزار می‌شود، غالبا افراد به مدل هایی فکر می‌کنند که تمثیل ساختار‌های تشکیل دهنده معماری هستند. افراد کمی نیز  فکر می‌کنند که معماری نرم افزار، فرآیند‌های فکری هستند که این ساختار‌ها را پدید آورده اند و به عنوان فرآیند طراحی شناخته می‌شود. طراحی فعالیتی پیچیده برای انجام و موضوع پیچیده برای نوشتن در مورد آن است چرا که با در نظر گرفتن جنبه‌های زیاد سیستم، تصمیمات بیشماری را درگیر خود می‌کند. بیان کردن این جنبه‌ها معمولا سخت است به خصوص وقتی که آن‌ها از تجربه‌ها و دانشی سرچشمه می‌گیرند که به سختی در میدان نبرد پروژه‌های توسعه نرم افزاری قبلی به دست آمده باشند.
با این حال فعالیت طراحی، اساس معماری نرم افزار است و همین طور احتیاج به توضیح دادن دارد. اگرچه تجربه را به سختی می‌توان از طریق کتاب انتقال داد ولی چیزی که می‌شود به اشتراک گذاشت متدی است تا به شما کمک کند تا فرآیند طراحی را به صورت سیستماتیک انجام دهید.
این کتاب درباره فرآیند طراحی و به خصوص درباره‌ی یک روش طراحی به نام (Attribute-Driven Design (ADD است. ما باور داریم که این روش ابزاری قدرتمند است که به شما کمک می‌کند تا یک طراحی اصولی، منظم و قابل تکرار انجام دهید. در این کتاب ADD و چند مثال از استفاده ADD در دنیای آورده شده است تا نشان دهیم که چگونه طراحی معماری انجام دهیم.

 

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

دانش و مهارت زیادی لازم نیست تا یک برنامه نوشت. بچه‌های دبیرستانی نیز این کار را در دبیرستان انجام می‌دهند. مردان و زنان جوان در دانشگاه با سر هم کردن چند خط کد PHP یا Ruby کسب و کار‌های میلیارد دلاری را شروع کرده اند. برنامه نویسان تازه کار زیادی در دفاتر کاری مکعبی شکلشان در سرتاسر دنیا در بین اسناد حجیم نیازمندی‌های موجود در سیستم‌های issue tracking خود در حال تقلا هستند تا سیستم هایشان را با صرف فعل خواستن توانستن است به کار بیندازند. کدهایی که تولید می‌کنند ممکن است زیبا نباشند ولی کار می‌کنند. کار می‌کند به این دلیل که چیزی بتواند یک بار کار کند، خیلی سخت هم نیست.
این که چیزی واقعا به درستی کار کند موضوعی کاملا متفاوت است. پیاده سازی صحیح نرم افزار سخت است چرا که دانش و مهارت هایی نیاز دارد که هنوز بیشتر برنامه نویسان جوان به آن دست نیافته اند. این کار به بینش و تفکری احتیاج دارد که بیشتر برنامه نویسان وقتی برای توسعه آن‌ها نمی‌گذارند. همه‌ی این‌ها به سطحی از انضباط و تعهد احتیاج دارد که بسیاری از برنامه نویسان حتی خوابش را نمی‌دیدند که به آن‌ها احتیاج پیدا کنند و در بیشتر موارد اشتیاق به مهارت و تمایل به حرفه ای شدن است.
وقتی که برنامه را به شکل صحیح پیاده سازی کنید، چیزی جادویی اتفاق می‌افتد: دیگر به لشکری از برنامه نویسان برای این که آن را در حال کار کردن نگه دارند نیاز ندارید. دیگر به سندهای نیازمندی‌های حجیم و سیستم‌های issue tracking بزرگ احتیاج ندارید. شما دیگر به اتاق‌های کاری مکعبی شکل زیاد و برنامه نویسی 24 ساعت و هفت روز در هفته نیاز ندارید.
نرم افزاری که یه شکل صحیح تمام شود، تعداد کمتری از منابع انسانی برای ایجاد و نگه داری نیاز دارد. تغییرات به سرعت و ساده هستند. نقص‌ها کم و فاصله‌ی بین آن‌ها کم است. تلاش کاهش می‌یاد، عملکرد و انعطاف پذیری افزایش می‌یابد.
بله، همچین چشم اندازی به نظر خیال پردازی می‌آید. ولی من آن جا بوده ام، من دیدم که اتفاق افتاد. من بر روی پروژه هایی کار کرده ام که طراحی و معماری سیستم، نوشتن کد و نگهداری آن را آسان کرده بود. پروژه هایی را تجربه کرده ام که به کسری از نیرو‌های انسانی پیش پینی شده احتیاج پیدا کرده بود. بر روی سیستم هایی کار کرده ام که نرخ نقص به شدت پایینی داشته اند. من تاثیرات خارق العاده ای که یک معماری نرم افزاری خوب می‌تواند بر روی سیستم، پروژه و تیم داشته باشد را دیده ام.
اما حرف‌های من را در نظر نگیرید. به تجربه خودتان نگاه کنید. آیا خلافش را تجربه کرده اید؟ آیا بر روی سیستم هایی کار کرده اید که جوری به هم پیوسته و پیچیده اند که هر تغییری جدای از این که چقدر واضح و ساده باشد، هفته‌ها طول می‌کشد و خطر‌های بزرگی را شامل می‌شود. آیا طراحی سیستم هایی که با آن‌ها کار کرده اید تاثیر منفی بزرگی بر روی روحیه تیم، اعتماد مشتریان، سازمان‌ها و حوصله‌ی مدیران گذاشته اند؟ آیا تیم ها، سازمان‌ها و حتی شرکت هایی که به وسیله‌ی ساختار نرم افزاری فاسد خود نابود شده اند را دیده اید؟ آیا تا به حال در جهنم برنامه نویسان بوده اید؟
من بوده ام و تا حدودی بیشتر ما نیز بوده ایم. تفاوت بسیار زیادی است بین وقتی که شما دارید با طراحی‌های نرم افزاری افتضاح کلنجار می‌روید تا وقتی که دارید از کار با یکی از طراحی‌های خوب لذت می‌برید.

 

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

اصول، الگو‌ها و شیوه‌ها مهم هستند، ولی این افراد هستند که آن‌ها را به کار می‌بندند. همان طور Alistair Cockburn گفته است "فرایند و تکنولوژی بر روی خروجی پروژه از اثرات ثانویه هستند. آن چیزی که جزء اثرات اولیه تاثیر گذار بر پروژه است، افراد هستند."
ما نمی‌توانیم تیم‌های برنامه نویسان را مدیریت کنیم، به شرط آن که سیستم‌های ساخته شده از اجزای تشکیل شده توسط فرایند وجود داشته باشند. افراد واحد‌های برنامه نویسی plug-compatible نیستند. اگر می‌خواهیم که پروژه هایمان موفق شوند، ما باید تیم‌های خود سازمانده و  مشارکتی ایجاد کنیم.
شرکت هایی که به تشکیل چنین تیم هایی تشویق می‌کنند، مزیت رقابتی قابل توجهی نسبت به آن هایی که نگرششان این است که شرکت‌های توسعه نرم افزار چیزی بیش از یک شرکت درپیت نیست. یک تیم نرم افزاری خوب، قدرتمندترین نیروی توسعه نرم افزار است.

 

تعداد بازدید: ۸۴۷
دیدگاه ها: ۱
loading...

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