تحلیلگر کسب و کار، مدیر محصول و برنامهنویس سابق، اینجا از دغدغههای روزمرهام مینویسم
ضدالگوها در طراحی یا چگونه با اطمینان کد کثیف بزنیم؟
طراحی معماری نرم افزار و پیادهسازی پروژه ها بر اساس اون دو لبه یک شمشیره!!! همونقدر که شنیدیم که خیلی مفیده و میتونه به پیادهسازی اصولی و نگهداشت یک سیستم نرمافزاری کمک کنه، اگر طراحی درست صورت نگیره و یا از الگوهای نادرستی در اون استفاده بشه میتونه باعث بشه پروژه کارایی و توسعهپذیریش رو از دست بده.
چن تا ضدالگوی معروف در مهندسی نرم افزار:
یک: god object
کلاسی که انقد بزرگ شده که تقریبا همه کار انجام میده! و تمام ویژگی ها و تابع هایی که نمیدونیم متعلق به کی هستن رو بهش اضافه میکنیم.ممکنه کلی کلاس هم کنار این کلاس داشته باشین که وظیفه نگهداری داده رو انجام بده ولی اکثر کارها رو یک کلاس انجام میده.
مثلا کلاس stringی داریم که کلی مسئولیت های غیر مرتبط رو انجام میده مثل چاپ کردن یک متن.
دو: Lava Flow
وقتی در یک پروژه ای کار میکنیم که پیچیده است و حجم کار تحقیقاتی بالایی دارد، معمولا کدهایی زده میشه که بر اساس اصول مهندسی نرم افزار نیست،مستندات خوبی ندارد و بعد از این که اون توسعه دهنده پروژه رو ترک میکنه دیگه کسی متوجه نمیشه کد ها چی بوده و برای چی زده شده و تغییرشون غیر ممکن میشه.
سه:Functional Decomposition
ما یک فرآیند داریم(در سمت چپ) که میتواند به چند تابع(Function) در سمت راست تبدیل شود.اساسا این کار توصیه میشه و کار خوبیه :دی .ولی اگر بیایم هر کدوم از این تابع ها رو در یک کلاس قرار بدیم احتمالا دچار این ضدالگو شدیم. اگر تو ساختار برنامه خودتون، کلاسی دارین که فقط یک تابع دارد، این احتمال می رود که شما دچار این ضد الگو شدین.
چهار:Golden Hammer
ابزاری که شما استفاده میکنین پاسخگوی همه چیز نیست:| برنامه نویسان و مدیران معمولا به فرآیندها، روشها و ابزار هایی که استفاده میکنن عادت میکنن و حاضر نیستن که چیز جدیدی رو یاد بگیرن و امتحان کنن که ممکنه مسائلشون رو بهتر حل کنه.
منابع:
مطلبی دیگر از این انتشارات
چگونه درخواستهای زمانبر را در جنگو هندل کنیم یا رساله در حکمت مطلقهی celery
مطلبی دیگر از این انتشارات
ارزیابی سادهی تیم نرمافزاری (تست جول)
مطلبی دیگر از این انتشارات
مدیر محصول یا صاحب محصول، مسئله این است! (product manager or product owner)