▪️خب قبل از برنامه نویسی ساخت یافته همین goto ها بودن. و چیزی به اسم حلقه و متد و پروسیجر نبود. هرچند بعد از کامپایل بازم کامپیوتر به همون روش goto کار رو انجام میده.
ولی استفاده از goto در بسیاری موارد برنامه نویس رو به اشتباه میندازه. اون کامپیوتر هست که با اصول اسمبلی و زبان ماشین میتونه به راحتی ازش استفاده کنه.
مثل این میمونه که تو یه کتب داری میخونی، نویسنده تورو همیشه به چند صفحه جلوتر و یا چند صفحه عقب تر پرت میکنه. این باعث گیج شدن برنامه نویس موقع توسعه کد میشه و بعضی اوقات از goto استفاده میکنه که نباید بکنه و باعث خطا میشه و دیباگ کردن این کد شبیه به فاجعه است
خب به خاطر همین مشکلات بود که برنامه نویسی ساخت یافته ایجاد شد. قبل از برنامه نویسی ساخت یافته کدها scope نداشتن و متغیرها هم درهم بود.
که بعدها فهمیدن که اونم برای توسعه کد خوب نیست و رسیدن به همین شی گرایی
▪️من فکر میکنم که بایستی اینجوری بگیم که شی گرایی در ادامه روند تکامل مدل فکری برنامه نویسی ما مطرح شد. ساختار یافته برای نوشتن برنامه های قدیمی مناسب بود. برای اون فرم برنامه های مثلا ۴۰ سال پیش نقص نداشت ولی به فراخور رشد کامپیوتر و مدیومش نیازهایی مطرح شد که قبلا نبود. مثلا ماژولاریتی و تعامل. در مدل ساختاریافته همه چی حول دیتاست. در شی گرایی دیتا کپسوله میشه و همه چی دیگه حول رفتاره نمیگم این خوبه یا اون. گاها شی گرایی و اون تفکر شی گرا گونه اینقدر پیچیده یا پوچ میشه که بهترین روش اینه که از اون استفاده نکنیم. بنظر من، سادگی یه اسکریپت مهمتر از کاستیه که داره. حداقل با خواندنش متوجه میشی که چرا کاست داره و میتونی بهبودش بدی. ولی فرض کن یه اسکریپت داریم که خیلی پیچیدس، قابل فهمیدن نیست ولی بطرز عجیبی، خیلی خوب کار میکنه ولی هیچکس جرات نمیکنه سمتش بره و ادیتش کنه. بنظرم یکی از دلایلی که OOP معروفه، اینه که توی یه سری از مقیاس ها، به کدییس سادگی میبخشه. خیلی جاها باعث میشه یه سری پرینسیپل ها رعایت شن.
حالا چرا OOP نه؟
من یه اسکریپت میخوام که یه URL بگیره، ریسپانس رو فیلتر کنه و بهم برگردونه. هیچ دلیلی نداره وقتی یه انباری کوچیک احتیاج دارم، نقشه کشی کنم، مصالح ساختمانی بیارم و اسکلت ساختمان بزنم وقتی با چند تا بلوک آجر کارم راه میوفته.
❇️ بنظرم بهترین جواب میتونه این باشه:
اول Principle های کاری که انجام میدیم رو بدونیم چون اونا باعث میشن اگه نتیجه کار صرفا بست پرکتیس نباشه، زیاد تفاوتی با بست پرکتیس نداشته باشه. ما همیشه سعی میکنیم بهترین رویکرد ها رو انتخاب کنیم و در اکثر مواقع، طبق رعایت همون پرینسیپل ها متوجه میشیم که آیا Masterpiece ساختیم یا Sh*tpiece!