جنگولرن
ویس مصاحبه با صفا صفری، محقق امنیت صفا تازگی ها طلای مسابقات ملی مهارت رو گرفته و در حال تمرین برای مسابقات جهانی هست. مصاحبه توی هنرستان شهید دبیریان، منطقه 16 تهران به صورت آنلاین برگزار شد این بار سوالات بچه هارو حذف نکردم و اتفاقا گفتگو قشنگی شد. لینک…
Media is too big
VIEW IN TELEGRAM
ویدئو مصاحبه با صفا
البته ویس رو گوش بدید بهتره.
چون توی ویدئو فقط من هستم .
ولی برای آرشیو اینجا آپلودش میکنم.
لینک ویس:
https://t.iss.one/djangolearn_ir/1209
البته ویس رو گوش بدید بهتره.
چون توی ویدئو فقط من هستم .
ولی برای آرشیو اینجا آپلودش میکنم.
لینک ویس:
https://t.iss.one/djangolearn_ir/1209
❤3👎1
Forwarded from Milad Hatami
Media is too big
VIEW IN TELEGRAM
⭕️💢کافه جنگو💢⭕️
آموزش جنگو پایتون
جلسه : پنجم
موضوع این جلسه: ادامه کار با مدل های وبلاگ و آشنایی با ORM جنگو
رشته: فنی پایه 11 کتب جدید
پایه: 11 فنی و 11 و 12 کاردانش
درس: وب
سطح: متوسط
مدرس: مهندس حاتمی
🔻🔻🔻🔻🔻🔻
#کافه_دانش
#کافه_جنگو
#جلسه_5
#سطح_متوسط_پیشرفته
#توسعه_وب
#یادگیری_مفاهیم_وب
#دبیرخانه_کشوری_رایانه
#مستقر_در_استان_زنجان
#کانال_شاد_دبیرخانه_رایانه
@Yvt_computer
#کافه_دانش
t.iss.one/Zncd_ir_Cafe
#آدرس_سایت_دبیرخانه_رایانه
ZNCD.ir
آموزش جنگو پایتون
جلسه : پنجم
موضوع این جلسه: ادامه کار با مدل های وبلاگ و آشنایی با ORM جنگو
رشته: فنی پایه 11 کتب جدید
پایه: 11 فنی و 11 و 12 کاردانش
درس: وب
سطح: متوسط
مدرس: مهندس حاتمی
🔻🔻🔻🔻🔻🔻
#کافه_دانش
#کافه_جنگو
#جلسه_5
#سطح_متوسط_پیشرفته
#توسعه_وب
#یادگیری_مفاهیم_وب
#دبیرخانه_کشوری_رایانه
#مستقر_در_استان_زنجان
#کانال_شاد_دبیرخانه_رایانه
@Yvt_computer
#کافه_دانش
t.iss.one/Zncd_ir_Cafe
#آدرس_سایت_دبیرخانه_رایانه
ZNCD.ir
❤4👍1
جنگولرن
⭕️💢کافه جنگو💢⭕️ آموزش جنگو پایتون جلسه : پنجم موضوع این جلسه: ادامه کار با مدل های وبلاگ و آشنایی با ORM جنگو رشته: فنی پایه 11 کتب جدید پایه: 11 فنی و 11 و 12 کاردانش درس: وب سطح: متوسط مدرس: مهندس حاتمی 🔻🔻🔻🔻🔻🔻 #کافه_دانش #کافه_جنگو #جلسه_5 #سطح_متوسط_پیشرفته…
جلسه 5 کلاس جنگو برای هنرستان
بر مبنای کتاب Django 5 By Example
توی این ویدئو که برای همکاران هنرستانی برگزار شد، مدل post رو یکم تغییر دادیم.
به پست، فیلد status رو اضافه کردیم و بعدش بین مدل user و post ارتباط یک به چند برقرار کردیم.
سپس با استفاده از orm جنگو کوئری های مختلفی زدیم و نتیجه رو توی خروجی وبلاگ مشاهده کردیم.
توی این دوره قراره بر اساس کتاب Django 5 By Example پیش بریم. ولی مفاهیمی فراتر از کتاب رو قطعا پوشش خواهیم داد.
تمرکز این دوره بر پرسش و پاسخ خواهد بود. که بتونیم به همکاران راهنمایی بدیم.
لینک ویدئو در آپارات:
https://www.aparat.com/v/fcas62b
بر مبنای کتاب Django 5 By Example
توی این ویدئو که برای همکاران هنرستانی برگزار شد، مدل post رو یکم تغییر دادیم.
به پست، فیلد status رو اضافه کردیم و بعدش بین مدل user و post ارتباط یک به چند برقرار کردیم.
سپس با استفاده از orm جنگو کوئری های مختلفی زدیم و نتیجه رو توی خروجی وبلاگ مشاهده کردیم.
توی این دوره قراره بر اساس کتاب Django 5 By Example پیش بریم. ولی مفاهیمی فراتر از کتاب رو قطعا پوشش خواهیم داد.
تمرکز این دوره بر پرسش و پاسخ خواهد بود. که بتونیم به همکاران راهنمایی بدیم.
لینک ویدئو در آپارات:
https://www.aparat.com/v/fcas62b
آپارات - سرویس اشتراک ویدیو
آموزش جنگو برای هنرستانی ها جلسه 4
توی این ویدئو که برای همکاران هنرستانی برگزار شد، مدل post رو یکم تغییر دادیم.
به پست فیلد status اضافه کردیم و بعدش بین مدل user و post ارتباط یک به چند برقرار کردیم.
سپس با استفاده از orm جنگو کوئری های مختلفی زدیم و نتیجه رو توی خروجی وبلاگ مشاهده کردیم.…
به پست فیلد status اضافه کردیم و بعدش بین مدل user و post ارتباط یک به چند برقرار کردیم.
سپس با استفاده از orm جنگو کوئری های مختلفی زدیم و نتیجه رو توی خروجی وبلاگ مشاهده کردیم.…
❤2
قابلیت Password-based authentication در جنگو
عکس رو ببین.
وقتی میخوای یوزر توی پنل ادمین بسازی (در حالت پیشفرض منظورم هست)
میتونی اینو فعال یا غیرفعال کنی.
مشخص میکنی که کاربر با پسورد لاگین کنه یا نه (مثلا فقط بتونه با کد یکبار مصرف لاگین کنه، غیرفعالش میکنی یا...)
این تنظیم از جنگو 5.1 اضافه شده.
اما اینو ننوشتم که بگم عجب فیچر خاصی، به نظرم زیادم خاص نیست.
میخوام شمارو دعوت کنم به pr یی که براش ثبت شده و مکالمه هایی که رد و بدل شده، تا ایده اولیه، این شده (به تاریخ pr و تاریخ merge دقت کن)
این لینک:
https://github.com/django/django/pull/16942
راستی، فارسی ش کار نمیکنه ظاهرا، تا دیر نشده فارسی ش رو pr بده 😁
عکس رو ببین.
وقتی میخوای یوزر توی پنل ادمین بسازی (در حالت پیشفرض منظورم هست)
میتونی اینو فعال یا غیرفعال کنی.
مشخص میکنی که کاربر با پسورد لاگین کنه یا نه (مثلا فقط بتونه با کد یکبار مصرف لاگین کنه، غیرفعالش میکنی یا...)
این تنظیم از جنگو 5.1 اضافه شده.
اما اینو ننوشتم که بگم عجب فیچر خاصی، به نظرم زیادم خاص نیست.
میخوام شمارو دعوت کنم به pr یی که براش ثبت شده و مکالمه هایی که رد و بدل شده، تا ایده اولیه، این شده (به تاریخ pr و تاریخ merge دقت کن)
این لینک:
https://github.com/django/django/pull/16942
راستی، فارسی ش کار نمیکنه ظاهرا، تا دیر نشده فارسی ش رو pr بده 😁
🔥9❤1👍1
سلام به همه
کسی از "کنار دیوار" استفاده کرده؟
اگه تجربه ای دارید بگید.
این boilerplate ش هست:
https://github.com/divar-ir/kenar-boilerplate
جنگو عه
کسی از "کنار دیوار" استفاده کرده؟
اگه تجربه ای دارید بگید.
این boilerplate ش هست:
https://github.com/divar-ir/kenar-boilerplate
جنگو عه
✍4
جنگولرن
سلام به همه کسی از "کنار دیوار" استفاده کرده؟ اگه تجربه ای دارید بگید. این boilerplate ش هست: https://github.com/divar-ir/kenar-boilerplate جنگو عه
Audio
توضیحات محمدرضا در مورد کنار دیوار
دم شما گرم
سه تا ویس بود. یکی شون کردم.
دم شما گرم
سه تا ویس بود. یکی شون کردم.
👍5
Forwarded from Linuxor ?
اگه نمیتونید یه پروژه ای رو شروع کنید، شاید مشکل توی درک معماری دارید! یه راهکار ساده اینه که برید پروژه های بزرگ ساخته شده با اون فریمورکی که کار میکنید رو clone کنید و فقط سعی کنید ادیتش کنید یه مدت بگذره به ساختار و معماری پروژه عادت میکنید و خودتون میتونید شبیهاش رو بسازید.
@Linuxor
@Linuxor
👍22❤5🤔3👎2🔥1
معرفی django-upgrade
اگه یه پروژه جنگو داری و میخوای نسخه ش رو عوض کنی.
اما تغییرات زیادی نیاز داره (مثلا بعضی چیزا deprecated شدن)
میتونی ازش استفاده کنی.
از جنگو 6 هم پشتیبانی میکنه
لینک داکیومنت:
https://django-upgrade.readthedocs.io/en/latest/fixers.html
اگه یه پروژه جنگو داری و میخوای نسخه ش رو عوض کنی.
اما تغییرات زیادی نیاز داره (مثلا بعضی چیزا deprecated شدن)
میتونی ازش استفاده کنی.
از جنگو 6 هم پشتیبانی میکنه
لینک داکیومنت:
https://django-upgrade.readthedocs.io/en/latest/fixers.html
👍8👏3
Forwarded from EverCode
چندتا مهارت که اگه برمیگشتم روز اولی که با برنامه نویسی آشنا شدم حتما به خودم میگفتم تقویتشون کنه:
1. مهم ترین ابزاری که واقعا نیاز دارین تا با ماشین جایگزین نشین، کنجکاوی هست. اگه کنجکاو باشین و بخواین بدونین چجوری اتفاقات بزرگ و کوچیک دور و برتون اتفاق میفته احتمالا از مسیر خیلی بیشتر لذت میبرین. این کنجکاوی به مرور بهتون یاد میده تا سوالای درست تر بپرسین و به جواب دقیق تر برسین.
2. در فرایند رفع کنجکاوی با ذهن باز جلو برین. ممکنه کلی اطلاعات اضافه پیدا کنین که شاید مستقیم به موضوع الانتون ربط نداشته باشه، یادداشتش کنین و یه تایمی از هفته یا ماه خودتون رو به تحقیق اختصاص بدین و این موضوعات رو چک کنین. تحقیق با یادگیری فرق داره، شما نمیخواین با یه سرچ متخصص بشین. میخواین دامنه دانشی کم عمقتون رو گسترش بدین تا اگر در چالشی نیاز داشتین توی ذهنتون سرنخ های موثر داشته باشین.
یادتون باشه:
شما هیچوقت قرار نیست وقت پیدا کنین تا به کاری برسین. باید وقت بسازین و بهش اختصاص بدین. بدون برنامه ریزی این اتفاق هیچوقت نمیفته.
تحقیق یه معنی درس خوندن نیست. اگه دیدتون بهش اینه قراره خیلی اذیت بشین. با حجم اطلاعاتی که هرروز در بستر اینترنت رد و بدل میشه، اگه نمیتونین در بخشی از این جریان خودتون رو قرار بدین باید جدی فکر کنین که چرا توسعه دهندهی نرم افزار شدین.
3. در مسیر تحقیق و توسعه ممکنه با ابزارهای مختلف آشنا بشین. یادگرفتن ابزار جدید به این معنی نیست که حتما باید تو پروژه بعدی ازش استفاده کنین. اما دونستنش یه روزی به کار میاد. باز هم برمیگرده به قسمت دامنه دانشی کم عمق، خودتون رو مجبور نکنین که حتما از همچی استفاده کنین، نیازمندی شماست که ابزارهای شما رو تعیین میکنه.
4. در برخورد با چالشهای کاری در پروژههای مختلف، در ابتدای مسیر خیلی درگیر ابزار نشین، اول سعی کنین شماتیک کلی سیستمی که میخواین دیزاین کنین رو درک کنین و روی کاغذ بیارین. توی اون مرحله خیلی مهم نیست که کارها دقیقا چجوری انجام میشن، مهمه که کدوم قستم از سیستم چه خروجی و ورودی داره، اصطلاح درست ترش میشه چه رفتاری داره، اگه در اون مرحله هم جایی حس کردین که نمیدونین چجوری رفتاری رو پیاده سازی کنین، بعنوان یه جعبه سیاه بزارین بمونه، اکثر مواقع ابزاری هست که اون کارو انجام میده و یا دانشی هست که هنوز ندارین اما در مرحله ی اول نباید خیلی خودتون رو درگیرش کنین.
این نکاتی بود که با گذشت زمان بیشتر بهشون اعتقاد پیدا کردم و دوست داشتم به اشتراک بزارم. اگه کسی رو میشناسین که این پست میتونه براش مفید باشه باهاش به اشتراک بزارین و نظرتون هم برام بنویسین🌹
@ever_code
1. مهم ترین ابزاری که واقعا نیاز دارین تا با ماشین جایگزین نشین، کنجکاوی هست. اگه کنجکاو باشین و بخواین بدونین چجوری اتفاقات بزرگ و کوچیک دور و برتون اتفاق میفته احتمالا از مسیر خیلی بیشتر لذت میبرین. این کنجکاوی به مرور بهتون یاد میده تا سوالای درست تر بپرسین و به جواب دقیق تر برسین.
2. در فرایند رفع کنجکاوی با ذهن باز جلو برین. ممکنه کلی اطلاعات اضافه پیدا کنین که شاید مستقیم به موضوع الانتون ربط نداشته باشه، یادداشتش کنین و یه تایمی از هفته یا ماه خودتون رو به تحقیق اختصاص بدین و این موضوعات رو چک کنین. تحقیق با یادگیری فرق داره، شما نمیخواین با یه سرچ متخصص بشین. میخواین دامنه دانشی کم عمقتون رو گسترش بدین تا اگر در چالشی نیاز داشتین توی ذهنتون سرنخ های موثر داشته باشین.
یادتون باشه:
شما هیچوقت قرار نیست وقت پیدا کنین تا به کاری برسین. باید وقت بسازین و بهش اختصاص بدین. بدون برنامه ریزی این اتفاق هیچوقت نمیفته.
تحقیق یه معنی درس خوندن نیست. اگه دیدتون بهش اینه قراره خیلی اذیت بشین. با حجم اطلاعاتی که هرروز در بستر اینترنت رد و بدل میشه، اگه نمیتونین در بخشی از این جریان خودتون رو قرار بدین باید جدی فکر کنین که چرا توسعه دهندهی نرم افزار شدین.
3. در مسیر تحقیق و توسعه ممکنه با ابزارهای مختلف آشنا بشین. یادگرفتن ابزار جدید به این معنی نیست که حتما باید تو پروژه بعدی ازش استفاده کنین. اما دونستنش یه روزی به کار میاد. باز هم برمیگرده به قسمت دامنه دانشی کم عمق، خودتون رو مجبور نکنین که حتما از همچی استفاده کنین، نیازمندی شماست که ابزارهای شما رو تعیین میکنه.
4. در برخورد با چالشهای کاری در پروژههای مختلف، در ابتدای مسیر خیلی درگیر ابزار نشین، اول سعی کنین شماتیک کلی سیستمی که میخواین دیزاین کنین رو درک کنین و روی کاغذ بیارین. توی اون مرحله خیلی مهم نیست که کارها دقیقا چجوری انجام میشن، مهمه که کدوم قستم از سیستم چه خروجی و ورودی داره، اصطلاح درست ترش میشه چه رفتاری داره، اگه در اون مرحله هم جایی حس کردین که نمیدونین چجوری رفتاری رو پیاده سازی کنین، بعنوان یه جعبه سیاه بزارین بمونه، اکثر مواقع ابزاری هست که اون کارو انجام میده و یا دانشی هست که هنوز ندارین اما در مرحله ی اول نباید خیلی خودتون رو درگیرش کنین.
این نکاتی بود که با گذشت زمان بیشتر بهشون اعتقاد پیدا کردم و دوست داشتم به اشتراک بزارم. اگه کسی رو میشناسین که این پست میتونه براش مفید باشه باهاش به اشتراک بزارین و نظرتون هم برام بنویسین🌹
@ever_code
🔥12❤5👍5
Forwarded from Milad Hatami
Media is too big
VIEW IN TELEGRAM
⭕️💢کافه جنگو💢⭕️
آموزش جنگو پایتون
جلسه : ششم
موضوع این جلسه: آشنایی با Manager ها و ارث بری Template ها در جنگو
رشته: فنی پایه 11 کتب جدید
پایه: 11 فنی و 11 و 12 کاردانش
درس: وب
سطح: متوسط
مدرس: مهندس حاتمی
🔻🔻🔻🔻🔻🔻
#کافه_دانش
#کافه_جنگو
#جلسه_6
#سطح_متوسط_پیشرفته
#توسعه_وب
#یادگیری_مفاهیم_وب
#دبیرخانه_کشوری_رایانه
#مستقر_در_استان_زنجان
#کانال_شاد_دبیرخانه_رایانه
@Yvt_computer
#کافه_دانش
t.iss.one/Zncd_ir_Cafe
#آدرس_سایت_دبیرخانه_رایانه
ZNCD.ir
آموزش جنگو پایتون
جلسه : ششم
موضوع این جلسه: آشنایی با Manager ها و ارث بری Template ها در جنگو
رشته: فنی پایه 11 کتب جدید
پایه: 11 فنی و 11 و 12 کاردانش
درس: وب
سطح: متوسط
مدرس: مهندس حاتمی
🔻🔻🔻🔻🔻🔻
#کافه_دانش
#کافه_جنگو
#جلسه_6
#سطح_متوسط_پیشرفته
#توسعه_وب
#یادگیری_مفاهیم_وب
#دبیرخانه_کشوری_رایانه
#مستقر_در_استان_زنجان
#کانال_شاد_دبیرخانه_رایانه
@Yvt_computer
#کافه_دانش
t.iss.one/Zncd_ir_Cafe
#آدرس_سایت_دبیرخانه_رایانه
ZNCD.ir
❤4
جنگولرن
⭕️💢کافه جنگو💢⭕️ آموزش جنگو پایتون جلسه : ششم موضوع این جلسه: آشنایی با Manager ها و ارث بری Template ها در جنگو رشته: فنی پایه 11 کتب جدید پایه: 11 فنی و 11 و 12 کاردانش درس: وب سطح: متوسط مدرس: مهندس حاتمی 🔻🔻🔻🔻🔻🔻 #کافه_دانش #کافه_جنگو #جلسه_6 #س…
جلسه 6 کلاس جنگو برای هنرستان
بر مبنای کتاب Django 5 By Example
لینک ویدئو در آپارات:
https://www.aparat.com/v/xemv1g4
بر مبنای کتاب Django 5 By Example
توی این قسمت، اول رفتیم سراغ مفهوم manager در جنگو
بعدش با get_object_or_404 آشنا شدیم. در ادامه با get_absolute_url هم آشنا شدیم.
اواسط ویدئو در مورد ارث بری template ها صحبت کردیم و صفحات رو با ارث بری یکم تمیزتر کردیم.
در آخر ویدئو هم صفحه بندی رو برای صفحه اصلی سایت مون اوکی کردیم.
توی این دوره قراره بر اساس کتاب Django 5 By Example پیش بریم. ولی مفاهیمی فراتر از کتاب رو قطعا پوشش خواهیم داد.
تمرکز این دوره بر پرسش و پاسخ خواهد بود. که بتونیم به همکاران راهنمایی بدیم.
لینک ویدئو در آپارات:
https://www.aparat.com/v/xemv1g4
آپارات - سرویس اشتراک ویدیو
آموزش جنگو برای هنرستانی ها جلسه 6
توی این قسمت، اول رفتیم سراغ مفهوم manager در جنگو
بعدش با get_object_or_404 آشنا شدیم. در ادامه با get_absolute_url هم آشنا شدیم.
اواسط ویدئو در مورد ارث بری template ها صحبت کردیم و صفحات رو با ارث بری یکم تمیزتر کردیم.
در آخر ویدئو هم صفحه بندی رو برای…
بعدش با get_object_or_404 آشنا شدیم. در ادامه با get_absolute_url هم آشنا شدیم.
اواسط ویدئو در مورد ارث بری template ها صحبت کردیم و صفحات رو با ارث بری یکم تمیزتر کردیم.
در آخر ویدئو هم صفحه بندی رو برای…
❤5👍1
شروع جنگولرن (سال 2020
https://t.iss.one/djangolearn_ir/1
اولین پست جنگولرن (سال 2021
https://t.iss.one/djangolearn_ir/2
اولین تبلیغ تدریس خصوصی جنگو (هنوزم خصوصی جنگو درس میدم
https://t.iss.one/djangolearn_ir/8
https://t.iss.one/djangolearn_ir/1
اولین پست جنگولرن (سال 2021
https://t.iss.one/djangolearn_ir/2
اولین تبلیغ تدریس خصوصی جنگو (هنوزم خصوصی جنگو درس میدم
https://t.iss.one/djangolearn_ir/8
❤8😁1
به اون کاری که امروز کردی نگو "ریفکتور" (Refactor)
اگه تست نداره، اون فقط یه "گندکاریِ تمیزه".
این فقط یه جملهی قشنگ نیست؛ این یه زخمه که من هنوز یادمه.
اوایل کارم، میخواستم قهرمان باشم. ️ تو یه پروژهی لگسی، یه "God Function" هزار خطی پیدا کردم و گفتم: "من اینو تمیز میکنم!"
نشستم و تیکهتیکهاش کردم. ۵۰ تا تابع کوچولوی تر و تمیز. اصل DRY رو پیاده کردم. ظاهر کد عالی شد. "تمیز" و "حرفهای". احساس غرور میکردم.
مشکل چی بود؟ اون کد اصلی لعنتی، یه دونه هم تست خودکار نداشت.
اونجا بود که فاجعه اتفاق افتاد. کاری که من انجام دادم، "ریفکتور" نبود؛ "تغییر دادنِ کورکورانه" بود.
اون کد "تمیز" من، چند تا باگ جدید و پنهان داشت. چرا؟ چون اون "کد اسپاگتی" زشت، پر از منطقهای تجاری پنهان و وابستگیهای زمانی بود که فقط تو همون حالت کار میکرد.
من "بدهی فنی" رو پرداخت نکردم؛ من یه بدهی کمبهره (مثل تکرار کد که فهمیدنش ساده بود) رو برداشتم و با یه بدهی پربهره (مثل یه "انتزاع اشتباه" که حالا دیباگ کردنش غیرممکنه) عوض کردم.
این "تلهی کد تمیز"ئه. مهمترین تعریفی که تو این صنعت باید بلد باشیم مال مایکل فدرز (Michael Feathers) ئه: "کد لگسی، کدیه که تست نداره." همین.
تو یه سیستم لگسی، قانون اول "تمیز کن" نیست. قانون اول اینه: "اول امنش کن." برو "تستهای مشخصهیابی" (Characterization Tests) بنویس تا رفتار فعلیِ سیستم (با همهی باگهاش) رو قفل کنی. وقتی اون تور ایمنی رو ساختی، اونوقت حق داری که شروع به تمیزکاری کنی.
✍ Hossein Moradi
اگه تست نداره، اون فقط یه "گندکاریِ تمیزه".
این فقط یه جملهی قشنگ نیست؛ این یه زخمه که من هنوز یادمه.
اوایل کارم، میخواستم قهرمان باشم. ️ تو یه پروژهی لگسی، یه "God Function" هزار خطی پیدا کردم و گفتم: "من اینو تمیز میکنم!"
نشستم و تیکهتیکهاش کردم. ۵۰ تا تابع کوچولوی تر و تمیز. اصل DRY رو پیاده کردم. ظاهر کد عالی شد. "تمیز" و "حرفهای". احساس غرور میکردم.
مشکل چی بود؟ اون کد اصلی لعنتی، یه دونه هم تست خودکار نداشت.
اونجا بود که فاجعه اتفاق افتاد. کاری که من انجام دادم، "ریفکتور" نبود؛ "تغییر دادنِ کورکورانه" بود.
اون کد "تمیز" من، چند تا باگ جدید و پنهان داشت. چرا؟ چون اون "کد اسپاگتی" زشت، پر از منطقهای تجاری پنهان و وابستگیهای زمانی بود که فقط تو همون حالت کار میکرد.
من "بدهی فنی" رو پرداخت نکردم؛ من یه بدهی کمبهره (مثل تکرار کد که فهمیدنش ساده بود) رو برداشتم و با یه بدهی پربهره (مثل یه "انتزاع اشتباه" که حالا دیباگ کردنش غیرممکنه) عوض کردم.
این "تلهی کد تمیز"ئه. مهمترین تعریفی که تو این صنعت باید بلد باشیم مال مایکل فدرز (Michael Feathers) ئه: "کد لگسی، کدیه که تست نداره." همین.
تو یه سیستم لگسی، قانون اول "تمیز کن" نیست. قانون اول اینه: "اول امنش کن." برو "تستهای مشخصهیابی" (Characterization Tests) بنویس تا رفتار فعلیِ سیستم (با همهی باگهاش) رو قفل کنی. وقتی اون تور ایمنی رو ساختی، اونوقت حق داری که شروع به تمیزکاری کنی.
✍ Hossein Moradi
👍9🤔1