💻 آخرین فرصت یادگیری برنامه‌نویسی با آفر ویژه قبل از افزایش قیمت در ۵ آذر ماه (🎁 به همراه یک هدیه ارزشمند )
۰ ثانیه
۰ دقیقه
۰ ساعت
۴ علی رضا
ابهام در فهم هدف روش پنجم
جامعه گولنگ ایجاد شده در ۰۱ خرداد ۱۴۰۲

سلام وقت بخیر

ببخشید من هدف روش پنجم رو متوجه نشدم. استاد فرمودند که اگر متغیر زیاد داشته باشیم یه نسخه دیگه از همون struct میسازیم حالا اینجا برای مثال با عنوان withOptions ولی بعد دوباره موقع ساختن یه instance داریم همون میزان ورودی رو بهش میدیم؟ آیا این کارو به منظور اختیاری کردن ورود برخی پارامترها انجام میدیم یا یا هدف clean code بود یا هدف کلا چیز دیگه ای بود؟

مثلا تو جاوا گاهی چندین constructor مختلف می‌نویسیم ولی با تعداد متفاوت پارامتر برای ایجاد انعطاف در حالت‌های مختلف ساختن یک instance (که به عنوان constructor overloading شناخته میشه) اینجا هم آیا هدف همون بود؟

با تشکر

سلام علیرضا جان

ممکن هست دقیقه ویدیو رو بفرمایید ؟

پوریا شفیعی ۰۲ خرداد ۱۴۰۲، ۰۷:۴۲

عرض ادب مجدد

بله، از دقیقه 6:26 تا حدودای دقیقه 9:10 روش پنجم رو تشریح می‌کنند و مثال می‌زنند

متشکرم

علی رضا ۰۲ خرداد ۱۴۰۲، ۰۷:۴۹

سلام علی رضا جان

به نکته ی جالبی اشاره کردی

ما دو روش گفتیم که تابع ساخت نمونه رو خودمون نوشتیم ( روش 4 و روش 5)

اولی ورودی‌های تابع شامل پراپرتی‌های اون تایپ بود، یکی از مشکلاتی که داشت این بود که اگه به هر علتی یه پراپرتی به این تایپ اضافه می‌شد ما باید اون پراپرتی رو به ورودی‌های تابع newPerson اضافه می‌کردیم و این تغییر باعث به خطا خوردن بخش‌های دیگه ای از کد میشد.

علاوه بر این اگه یه تایپ پراپرتی‌های زیادی داشته باشه ورودی های‌ها تابع هم زیاد خواهد بود و این این خوب نیست.

اما در روش option ورودی‌ها به تعداد پراپرتی‌ها نخواهد بود و میایم یک تایپ مشابه با تایپ اصلی می‌سازیم و اونو به عنوان ورودی پاس میدیم و درون تابع کنترل‌ها رو انجام میدیم، نکته اینجاست که اگه توی این روش بخوایم یه پراپرتی به تایپ اضافه کنیم امضای تابع newPersonWithOptions تغییر نمیکنه.

    pOpt := PersonOptions{FirstName: "Milad", LastName: "Khan", Age: 30}
    person5 := NewPersonWithOptions(pOpt)

یه نکته ای هم توجه داشته باش که در انتخاب بین روش‌ها همیشه trade off وجود داره

یکی از مشکلات این روش اینه که در صورتی که یه پراپرتی به تایپ اضافه کنیم استفاده کننده‌های تابع متوجه این موضوع نمیشن.



بهترین پاسخ
حامد نعیمایی ۰۳ خرداد ۱۴۰۲، ۰۸:۱۸

ممنونم استاد بابت پاسخ خیلی خوبتون

علی رضا ۰۳ خرداد ۱۴۰۲، ۱۲:۲۷