به اون کاری که امروز کردی نگو "ریفکتور" (Refactor)
اگه تست نداره، اون فقط یه "گندکاریِ تمیزه".
این فقط یه جملهی قشنگ نیست؛ این یه زخمه که من هنوز یادمه.
اوایل کارم، میخواستم قهرمان باشم. ️ تو یه پروژهی لگسی، یه "God Function" هزار خطی پیدا کردم و گفتم: "من اینو تمیز میکنم!"
نشستم و تیکهتیکهاش کردم. ۵۰ تا تابع کوچولوی تر و تمیز. اصل DRY رو پیاده کردم. ظاهر کد عالی شد. "تمیز" و "حرفهای". احساس غرور میکردم.
مشکل چی بود؟ اون کد اصلی لعنتی، یه دونه هم تست خودکار نداشت.
اونجا بود که فاجعه اتفاق افتاد. کاری که من انجام دادم، "ریفکتور" نبود؛ "تغییر دادنِ کورکورانه" بود.
اون کد "تمیز" من، چند تا باگ جدید و پنهان داشت. چرا؟ چون اون "کد اسپاگتی" زشت، پر از منطقهای تجاری پنهان و وابستگیهای زمانی بود که فقط تو همون حالت کار میکرد.
من "بدهی فنی" رو پرداخت نکردم؛ من یه بدهی کمبهره (مثل تکرار کد که فهمیدنش ساده بود) رو برداشتم و با یه بدهی پربهره (مثل یه "انتزاع اشتباه" که حالا دیباگ کردنش غیرممکنه) عوض کردم.
این "تلهی کد تمیز"ئه.
مهمترین تعریفی که تو این صنعت باید بلد باشیم مال مایکل فدرز (Michael Feathers) ئه: "کد لگسی، کدیه که تست نداره." همین.
تو یه سیستم لگسی، قانون اول "تمیز کن" نیست. قانون اول اینه: "اول امنش کن." برو "تستهای مشخصهیابی" (Characterization Tests) بنویس تا رفتار فعلیِ سیستم (با همهی باگهاش) رو قفل کنی. وقتی اون تور ایمنی رو ساختی، اونوقت حق داری که شروع به تمیزکاری کنی.
✍️ Hossein Moradi
اگه تست نداره، اون فقط یه "گندکاریِ تمیزه".
این فقط یه جملهی قشنگ نیست؛ این یه زخمه که من هنوز یادمه.
اوایل کارم، میخواستم قهرمان باشم. ️ تو یه پروژهی لگسی، یه "God Function" هزار خطی پیدا کردم و گفتم: "من اینو تمیز میکنم!"
نشستم و تیکهتیکهاش کردم. ۵۰ تا تابع کوچولوی تر و تمیز. اصل DRY رو پیاده کردم. ظاهر کد عالی شد. "تمیز" و "حرفهای". احساس غرور میکردم.
مشکل چی بود؟ اون کد اصلی لعنتی، یه دونه هم تست خودکار نداشت.
اونجا بود که فاجعه اتفاق افتاد. کاری که من انجام دادم، "ریفکتور" نبود؛ "تغییر دادنِ کورکورانه" بود.
اون کد "تمیز" من، چند تا باگ جدید و پنهان داشت. چرا؟ چون اون "کد اسپاگتی" زشت، پر از منطقهای تجاری پنهان و وابستگیهای زمانی بود که فقط تو همون حالت کار میکرد.
من "بدهی فنی" رو پرداخت نکردم؛ من یه بدهی کمبهره (مثل تکرار کد که فهمیدنش ساده بود) رو برداشتم و با یه بدهی پربهره (مثل یه "انتزاع اشتباه" که حالا دیباگ کردنش غیرممکنه) عوض کردم.
این "تلهی کد تمیز"ئه.
مهمترین تعریفی که تو این صنعت باید بلد باشیم مال مایکل فدرز (Michael Feathers) ئه: "کد لگسی، کدیه که تست نداره." همین.
تو یه سیستم لگسی، قانون اول "تمیز کن" نیست. قانون اول اینه: "اول امنش کن." برو "تستهای مشخصهیابی" (Characterization Tests) بنویس تا رفتار فعلیِ سیستم (با همهی باگهاش) رو قفل کنی. وقتی اون تور ایمنی رو ساختی، اونوقت حق داری که شروع به تمیزکاری کنی.
✍️ Hossein Moradi
👍14❤2🤔1
جنگولرن
سلام به همه بریم برای معرفی کانال هاتون اگه یه کانال داری که مطالبش فنی هست، و میخوای توی جنگولرن [رایگان] معرفی ش کنم لینک کانال ت + یه توضیح یه خطی در موردش رو برای من بفرست. @miladhzz این بار، جای اینکه چند پست باشه، همه رو توی یه پست معرفی می کنم.
یک: https://t.iss.one/AxiomLite
آموزه های یک برنامه نویس
دو: https://t.iss.one/philosophyofsoftware
فلسفه ی نرم افزار ، در مورد مهندسی نرم افزار و ابزار های بدرد بخور
سه: https://t.iss.one/TechnoCode_TC
آموزش برنامه نویسی | اخبار برنامه نویسی | تیکه کد های کاربرد
چهار: https://t.iss.one/front_jon
برنامه نویس فرانت جونیور و ریکت
پنج: https://t.iss.one/Web_Block_team
سوار بر جریان فکر و فناوری
شش: https://t.iss.one/teachify
هر روز یک نکته برنامهنویسی؛ کوتاه، مفید و مخصوص توسعهدهندهها.
آموزه های یک برنامه نویس
دو: https://t.iss.one/philosophyofsoftware
فلسفه ی نرم افزار ، در مورد مهندسی نرم افزار و ابزار های بدرد بخور
سه: https://t.iss.one/TechnoCode_TC
آموزش برنامه نویسی | اخبار برنامه نویسی | تیکه کد های کاربرد
چهار: https://t.iss.one/front_jon
برنامه نویس فرانت جونیور و ریکت
پنج: https://t.iss.one/Web_Block_team
سوار بر جریان فکر و فناوری
شش: https://t.iss.one/teachify
هر روز یک نکته برنامهنویسی؛ کوتاه، مفید و مخصوص توسعهدهندهها.
Forwarded from Mina Heidaree
نکته #پایتون
#python
شماره ۳۶
تهیه کننده: فاطمه درویشی هنرآموز استان بوشهر
#گروه_آموزشی_استان_بوشهر
#دبیرخانه_کشوری_رایانه_زنجان
#python
شماره ۳۶
تهیه کننده: فاطمه درویشی هنرآموز استان بوشهر
#گروه_آموزشی_استان_بوشهر
#دبیرخانه_کشوری_رایانه_زنجان
✍3👍3❤1