tgoop.com/djangolearn_ir/637
Last Update:
سری مهندسی نرمافزار: پست 6
از لینکدین Saeed Shahrivari Joghan
زوج طلایی طراحی: سادگی + تفکیک دغدغهها
اگه پست ۵ رو خونده باشید به اینجا رسیدیم که برای طراحی و تولید یه نرمافزار (باز هم تاکید میکنم دامنه نرمافزار شامل کد، داده و مستنداته🙂) که قابلیت تغییر، نگهداری و حتی تعمیر سادهتری داشته باشه رعایت دو اصل تا حد زیادی کافیه: «سادگی» و «تفکیک دغدغهها». بیاید دقیقتر به این دو موضوع بپردازیم:
1️⃣سادگی: سادگی در طراحی نرمفزار یعنی درست کردن سیستمی که فهم، استفاده، نگهداری و تغییر اون ساده باشه. به نظرم سادگی چیزیه که برای همه تا حد زیادی ملموسه!
2️⃣تفکیک دغدغهها (SoC): یعنی نرمافزار رو به بخشهای متمایزی تفکیک کنیم به نحوی که هر بخش درگیر یک عملکرد (functionality) یا به عبارتی دغدغه (concern) خاص باشه و تا حد خوبی بخشها ایزوله باشند. آیا این اصل یعنی هر ماژول فقط باید یه کار بکنه؟ جواب منفیه! کار با دغدغه متفاوته.
یه سوال جالب: این دو اصل چه نسبتی با هم دارند؟ میشه گفت معمولاً این دو اصل همراستا هستند ولی در موارد نادری ممکنه همجهت نباشند. اگه مجبور بشیم بینشون اولویت داشته باشیم، از دید من همیشه سادگی به هر چیزی اولویت داره. حالا اگه این دو اصل رو در طراحی نرمافزار رعایت کنیم چه مزایایی داره؟
1️⃣فهم سادهتر: خوانایی و ساختارمند بودن نرمافزار خیلی مهمه. آقا مارتین فاولر میگه: «هر احمقی قادره کدی بنویسه که ماشین بفهمتش، برنامهنویس خوب کسیه که کدی مینویسه که آدمها هم به راحتی درکش میکنند.»
2️⃣نگهداشت سادهتر: اگه این دو اصل رو رعایت کرده باشیم توسعه، نگهداری و حتی تعمیر نرمافزار به مراتب هزینه کمتری داره.
3️⃣قابلیت استفاده مجدد: وقتی نرمافزار از اجزای ساده و تر و تمیز تشکیل شده باشه میشه با تلاش کمی مولفههای موجود رو در جاهای دیگه هم استفاده کرد.
4️⃣آزمونپذیری بهتر: مولفههای ساده و تر و تمیز رو خیلی راحتتر میشه تست کرد.
مزایای خیلی زیادی میشه نوشت ولی من به همین ۴تا بسنده کردم. باز هم تاکید میکنم از دید من اصول همین دو اصله و حداقل ۵۰ ساله که در نرمافزار مطرح و استفاده میشه. دنبال هر فرقه یا اصول جدیدتر مثل SOLID یا DDD یا TDD و غیره هم برید بر پایه همین دو اصل هستند و من همیشه ترجیح دادم دید خودم رو باز نگه دارم و اصول دین رو صرفاً به این دو اصل محدود کنم و از هر رویکردی مثلاً DDD یا TDD در جای مناسب خودشون استفاده کنم چون تنها چیزی که در هر زمینه نرمافزاری به درد میخورند همین دو اصل هستند. در پست بعدی ایشالا به چابکی و تغییر میپردازیم.
پانوشت: مرحوم آقا دایکسترا خیلی در این زمینه زحمت کشیده!
BY جنگولرن
Share with your friend now:
tgoop.com/djangolearn_ir/637