MohammadReza Rahmatzadeh
MohammadReza Rahmatzadeh
خواندن ۲ دقیقه·۴ سال پیش

خلاصه کتاب Pragmatic Programmer. درس 38

درس 38: برنامه نویسی توسط تصادف Programming by Coincidence

ممکنه تابحال فیلم جنگی قدیمی ای رو دیده باشید که توش سربازی که پشت میدون مین گیر کرده و دقیقا شناسایی هم نکرده منطقه رو میخاد از مسیری عبور کنه، دلو به دریا میزنه و یک مسیرو انتخاب میکنه و بدو بدو اون مسیرو طی میکنه، احتمال داره که موفقیت امیز رد بشه و یا تیکه تیکه بشه.

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


HOW TO PROGRAM BY COINCIDENCE

فرض کنید Fred یک چالش برنامه نویسی رو میخاد حل کنه. ی کدی میزنه و اجراش میکنه و ظاهرا کار میکنه. بعد چند هفته کرش میکنه، و بعد از چند ساعت تلاش Fred اصلا نمیدونه چرا این اتفاق افتاده! چون از اول نمیدونست که چجوری کد درست کار میکرد. بعد چند تا تست محدود و موفقیت اتفاقی کد، اونو پابلیش کرد و توی استثنائات گیر افتاد.

هر ادم عاقلی میدونه که نباید روی جواب گرفتن اتفاقی حساب کنیم.

چند نمونه مثال بزنیم:

- استفاده از کدی که توی سرچ اینترنت پیدا کردیم و چیزی رو که میخاستیم انجام میده، بدون در نظر گرفتن موقعیت و شرایط استفاده از اون کد و استثنائاتش و اصن فهم اون قطعه کد و چگونگی دیتیل اجراش

- استفاده از تایم زون خاص و هاردکد شده، استفاده از متغیرهای وابسته به مسیر فایل سیستم خاص یا فیچرهای خاص سیستم عامل و ...


HOW TO PROGRAM DELIBERATELY

ما میخایم زمان کمتری رو صرف چالش های کد بکنیم و کدی کم خطاتر و استیبل تر بزنیم و چرخه مهندسی نرم افزارمون کم دردسر و روتین تر طی بشه. اینکه کدها رو غیر تصادفی و کاملا عمدی و بهشون مسلط و واقف باشیم خیلی به این داستان کمک میکنه.

مواردی که میتونه بهمون کمک کنه:

- بدونید و آگاه باشید به کاری که دارید انجامش میدید و مثه Fred دنبال جواب گرفتن نباشید

- آیا میتونید کدی که نوشتیدو به یک فرد تازه کار به دیتیل توضیح بدید؟ اگر نمیتونید، قطعا مواردی رو ندونسته یا تصادفی توی کد گذاشتید که در هر دو حالت آفت هاشم گریبان گیرتون خاهد بود.

- از تکنولوژی و روش هایی که مسلطید و بلدشین استفاده کنید

- حتما پلن داشته باشید و قبل از کد زدن روش فکر و بالا پایین کنید

- فقط صحت کد رو تست نکنید و با assert ها سعی کنید حالت های مختلف منطق و حداکثر استثنائات رو زیر تست ببرید

- و ...

دروس مرتبط: 4, 9, 23, 34, 43

منبع کانال تلگرامی: https://t.me/pragmaticprogrammer_fa

pragmatic programmerprogrammermarshal
شاید از این پست‌ها خوشتان بیاید