بهترین روش بازنگری کد

  • یوسف مهرداد بی‌بالان

چگونگی انجام بازسازی کد (Refactoring) در فرایند بازنگری کد (Code Review) بستگی به ماهیت و نوع بازنگری دارد. روش رایج و عمومیِ استفاده از Pull Request که در آن، بازنگر کد را بدون حضور برنامه‌نویس اصلی بررسی می‌کند، کارایی خوب و مناسبی ندارد. موقع بازنگری بهتر است برنامه‌نویس اصلی حضور داشته باشد زیرا از یک سو،‌ برنامه‌نویس می‌تواند پیش‌زمینه، شرایط و اطلاعات مرتبط با کد را در اختیار بازنگر قرار دهد و از سوی دیگر، برنامه‌نویس می‌تواند دلیل و انگیزه‌ی بازنگر را برای تغییر کدش بفهمد و یاد بگیرد.

تجربه‌‌ام نشان می‌دهد که بهترین روش بازنگری کد این است که در کنار برنامه‌نویس اصلی بنشینید، کد را با هم مرور کنید و همزمان با مرور کد، کد را بازسازی و تغییر دهید.

نهایت و غایت چنین سبکی به برنامه‌نویسی دونفره (pair programming) ختم می‌شود یعنی قرارگرفتن بازنگری پیوسته‌ی کد (continuous code review) به عنوان یکی از فعالیت‌های داخلی فرایند برنامه‌نویسی و نه فعالیتی بعد از اتمام آن.

مرجع: Refactoring, 2nd Edition, by Martin Fowler

گزیده:
Brevity is the soul of wit, but clarity is the soul of evolvable software.
Martin Fowler
برداشت شخصی: هر چند خلاصه، مختصر و مفید بیان کردن موضوعات نشانه‌ی هوشمندی و ذکاوت است [از نمایش‌نامه‌ی هملت اثر شکسپیر]، اما بر خلاف آن برای نرم‌افزار در حال تکامل، خوانایی و شفافیتِ کد رکن اصلی است و بهتر است کد به جای آن‌که کوتاه و دشوارفهم باشد طولانی‌تر ولی خواناتر باشد.

رستگاری شائوشنگ

  • یوسف مهرداد بی‌بالان

تعطیلات پایان سال فرصت خوبی است برای دیدن دوباره‌ی فیلم‌های خوب و آموزنده. یکی از این فیلم‌ها، فیلم رستگاری شائوشنگ یا The Shawshank Redemption است که دوباره دیدم. این فیلم یکی از بهترین‌ و محبوب‌ترین فیلم‌های تاریخ سینما است که کمتر کسی پیدا می‌شود که آن را تماشا نکرده باشد.
کلمه‌ی redemption که در عنوان فیلم آمده است به ویژه در آیین مسیحیت به معنای نجات انسانی از شر یا درد و عذاب یا همان رستگاری و رهایی است. تا به امروز بر این باور بودم که داستان فیلم درباره‌ی رستگاری اندی دوفرن (با بازی تیم رابینز) و رهایی‌اش از شر زندان شائوشنگ و به ویژه رییس زندان، واردی نورتن، است. اما نقدی درباره‌ی فیلم خواندم که با استدلال‌های قابل قبول مدعی شده بود که موضوع اصلی رستگاری و نجات در این فیلم به جای اندی دوفرن، الیس ردینگ معروف به رد (Red) (با بازی مورگان فریمن) است.

«گر چه هر دو شخصیت به وضوح دلایل متعددی برای رستگاری و رهایی دارند، در واقع این رد است که در مقایسه با اندی به رستگاری نیاز دارد زیرا او جرم خود را پذیرفته است ولی اندی خود را از ابتدا بی‌گناه می‌داند. رد شرایط زندان را پذیرفته و اندی نقش کسی را بازی می‌کند که نور امید را در دل او روشن نگه می‌دارد. رد موضوع اصلی رهایی و رستگاری در این فیلم است و رستگاری او پیروزی امید است در برابر کنار آمدن با شرایط زندان.» [مرجع ]

یکی از معروف‌ترین دیالوگ‌های این فیلم:
رد: «بذار یه چیزی بهت بگم رفیق. امید چیز خطرناکیه. امید می‌تونه یه آدمو دیوونه کنه.»
رد: «این دیوارها یه جورایی مسخره‌ان. اول از اونا بدت میاد. بعداً بهشون عادت می‌کنی. بعد یه مدتی هم جوری می‌شه که به اونا وابسته می‌شی. این قانونشه. اونا برای زندگی می‌آرنت اینجا و این دقیقاً همون چیزی که ازت می‌گیرن.»
اندی: «یادت باشه رد، امید چیز خوبیه، شاید بشه گفت بهترین چیز دنیاست و چیزهای خوب هیچ وقت نمی‌میرند.»

گزیده: (دیالوگ مورد علاقه‌ام)
اندی: می‌دونی مکزیکی‌ها درباره‌ی اقیانوس‌ آرام چی می‌گند؟
رد:‌ نه.
اندی: می‌گند اقیانوس آرام هیچ خاطره‌ای نداره [هیچی از گذشته یادش نیست]. می‌خوام بقیه عمرم رو همچین جایی زندگی کنم. جایی گرم و بدون خاطره‌ای از گذشته.

برای تعلیمات اجتماعی

  • یوسف مهرداد بی‌بالان

پیش‌گفتار:
یکی از گزینه‌هایم برای یادگیری سیستم آموزشی اینجا، گفتگو با بچه‌ مدرسه‌ای‌ها است. هر وقت فرصتی دست دهد با آنها که معمولا فرزندان دوستان یا آشنایان هستند سر صحبت را باز می‌کنم و در مورد مدرسه و درس‌هایی که می‌خوانند با آنها صحبت می‌کنم. این نوشته گفتگوی من است با یکی از آنها که اسمش را مایکل می‌گذارم.
گفتگوی من با مایکل درباره‌ی یکی از تمرین‌های درس علوم اجتماعی (Social Science) است. یادم می‌آید که ما هم درسی داشتیم به نام تعلیمات اجتماعی ولی یادم نیست که چه از آن آموختم. نکته مهم این است که درس علوم اجتماعی در سیستم دبیرستان‌های اینجا درس بسیار مهم و دشواری است! تا یادم نرفته بگویم که چون مدتی از این گفتگو گذشته، ممکن است کلمات و عبارت همان‌هایی نباشند که در گفتگو رد و بدل شد.

گفتار:
– مایکل، تمرین درس علوم اجتماعی‌‌ت چیه؟
مایکل: باید در مورد انقلاب فرانسه یک روزنامه درست کنیم.
– انقلاب فرانسه!
مایکل: آره
– بگو ببینم انقلاب فرانسه چه سالی اتفاق افتاد؟
مایکل: نمی‌دونم.
به کمک پروفسور گوگل پاسخ سوالم را پیدا می‌کند.

– خوب این روزنامه چه شکلی باید باشه؟
– مایکل:‌ باید بریم تحقیق کنیم و ۳ تا از عوامل مهمی رو که باعث بروز انقلاب شد پیدا کنیم.
– خب!
– در مورد عامل اول باید از قول نویسنده‌ی روزنامه، مطلبی در تایید وجود آن عامل بنویسم (مثلا نان گران است) و بعد در ادامه باید نظر مخالفان این نظر رو هم بنویسیم (مثلا نان خیلی ارزان است).
– (من با قیافه‌ای متعجب) خب!
مایکل: در مورد عامل دوم هم باید یک گزارش خبری کوتاه بنویسیم که اون عامل که باعث بروز انقلاب شده توی اون گزارش باشه (مثلا دیروز بین نانوا و مشتری در فلان جا بگومگو شد)
– (من با تعجب دو چندان) خوب! چه جالب!
مایکل:‌ درباره‌ی عامل سوم هم باید یک کاریکاتور سیاسی (political cartoon ) بکشیم.
– (من که از تعجب شاخ‌ در آورده بودم) خب!
– حالا شما چرا باید در مورد انقلاب فرانسه روزنامه درست کنید؟‌ اصلا چرا انقلاب فرانسه این قدر مهمه که توی درس‌تون باشه؟
مایکل:‌ برای این مهمه که توی انقلاب فرانسه پادشاهی بود که به حرف و اعتراض مردمش گوش نمی‌کرد و به اون‌ها ظلم و ستم می‌کرد، مردم هم اول اعتراض کردند و بعد دیدند چیزی تغییر نمی‌کنه انقلاب کردند و شاه رو برکنار کردند.
– (من که دیگه کارم از شاخ درآوردن گذشته بود) اوه! اوه! چقدر عالی.

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

پانوشت: برای آن که بتوانم بیشتر با مایکل گفتگو کنم رفتم کمی درباره‌ی دلایل انقلاب فرانسه خواندم.
[ویکی پدیا] از دلایل اقتصادی آن می‌توان به موارد زیر اشاره کرد:
– لوئی پانزدهم جنگ‌های بسیاری کرده بود که فرانسه را به نزدیکی ورشکستگی رسانده بود
– داشتن سیستم اقتصادی بی‌کفایت و منسوخ
– کلیسای کاتولیک (بزرگ‌ترین ملک‌دار کشور)، بر محصولات مالیاتی به نام دیمه وضع کرده بود.
– خرج‌های اشرافی و آشکار دربار با وجود فشار مالی بر مردم.
– آمار بی‌کاری زیاد و قیمت بالای نان.
– قحطی و سوءتغذیه گسترده .
– نبود بازرگانی داخلی و موانع زیاد گمرکی.

دلایل اجتماعی و سیاسی زیادی هم وجود داشتند …:
– خشم بر حکومت استبدادی سلطنتی.
– خشم طبقهٔ حرفه‌ای و بازرگان بر امتیازات و تسلط اشراف…
– خشم کشاورزان، حقوق بگیران و طبقهٔ متوسط بر امتیازات ارباب وار و سنتی اشراف.
– خشم بر امتیازات روحانیون (ضد روحانیت) و آرزوی آزادی ادیان.
– آرزوی آزادی و جمهوریت.
– خشم مردم بر شاه به دلیل اخراج جاکس نکلر و ترگت (مشاوران اقتصادی) که عموماً به عنوان نمایندگان مردم دیده می‌شدند.

گزیده:
شما، که قوانین را برمی‌سازید؛ فضایل و رذایلِ مردم نتیجه کارتان خواهد بود.
لوئی آنتوان دو سن-ژوست

 

هک حساب کاربری اسکایپ

  • یوسف مهرداد بی‌بالان

سلام به همهی عزیزانم

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

بعد با چند نفر در لیست تماس من تماس گرفتند وبا آنها شروع به گفتگو (چت) کردند.

لطفا اگر پیامی از طرف من دریافت کردید آن را فراموش کنید.

کو خاک بر سر ماره اولاده

  • یوسف مهرداد بی‌بالان

هر وقت که داشتم فوتبال نگاه می‌کردم و مادر هم کناری نشسته بود، آرزو می‌کردم بازیکنی روی زمین نیفتد یا دوربین صحنه‌ی درد کشیدن بازیکن مصدومی را نشان ندهد یا بدتر آن که آسیب بازیکن به حدی نباشد که تیم پزشکی با برانکارد وارد زمین شوند و او را به بیرون زمین ببرند.

واکنش مادر با آن صفا و قلب مهربانش به چنین صحنه‌هایی بسیار ساده بود:‌ «کو خاک بر سر ماره اولاده»! یعنی «فرزند کدام مادر خاک بر سری هست».
من هم نگاهی به مادر می‌انداختم و چیزی نمی‌گفتم. لذت فوتبال دیدن از بین می‌رفت. و می‌دانستم که بار بعدی که بخواهم فوتبال بازی کنم او بیش از گذشته نگران من خواهد بود.

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

ولی مادر روستایی فهیم و دل‌نگران من می‌دانست که هر بازیکنی که درد می‌کشد و هر بازیکنی که آسیب می‌بیند، مادری دارد. و چون خودش مادر بود و فرزندانش همه‌ی زندگی‌اش بودند می‌فهمید که آسیب دیدن فرزند و فاجعه‌بارتر از آن، از دست دادن فرزند چه غم بزرگی است برای مادر. او می‌دانست که فوتبال تمام می‌شود و همه‌ به خانه می‌روند، اما غم و درد آن بازیکن می‌ماند و مادر بیچاره‌اش.

حالا این روزها به یاد مادر، بارها این جمله‌ی او را با خود زمزمه کرده‌ام که «کو خاک بر سر ماره اولاده»

تا نفس باقى است غلط بنويسيم

  • یوسف مهرداد بی‌بالان

پیش‌گفتار:
حالم خوش نبود. رفتم شعر «از زخمِ قلبِ آبائی» شاملو را پیدا کنم و بخوانم تا حالم کمی بهتر شود. فرصت را غنیمت شمردم و چرخی در سایت رسمی شاملو زدم. این نوشته را به قلم شاملو پیدا کردم که خواندنش خالی از لطف نیست.

گفتار: تا نفس باقى است غلط بنويسيم
همين جورى چند جمله از يك كتاب‌.
او در جلوى كتابخانه منتظر مى‌ماند. و آن جا، با پالتوى كهنه و نيمدارش، دست به جيب، به ديوار تكيه مى‌دهد.

۱. ضمير ابتداى جمله زائد است. پيدا است كه من و شما ضمير فعل جمله نيستيم.
۲. چون لحن كتاب متمايل به‌سادگى لحن محاوره است «جلو» كافى و «در» زائد است.
۳. سر نرم پايان كلماتى چون جلو و چلو و دو و پالتو برخلاف ر و س در حالت اضافه به مصوت ِ«ىِ» نياز ندارد زيرا در اين حالت سىِ نيمه ملفوظِ انتهائى به حسىِ كامل تبديل مى‌شود: «جلوِ كتابخانه» «دوِ صدمتر» وگرنه: «جلوى» (=پيشين) و «چلوى» (=آن‌كه چلوپزد يا فروشد).
۴. جامه ابتدا نيمدار (=كاركرده) است پس از آن كهنه. نه اول كهنه و بعد نيمدار. تازه گيريم كه اين دو به يك معنى باشد، جمله را چرا بايد بى‌جهت سنگين كرد؟
۵. نقطه اول و هرسه ويرگول ميان جمله زائد است.
۶. اگر جمله به اين شكل نوشته مى‌شد عيبى داشت؟: «تو پالتوِ نيمدارش دست به جيب جلوِ كتابخانه به ديوار تكيه مى‌داد و منتظر مى‌شد.»

گزیده:
شب‌های تارِ نم‌نمِ باران ــ که نیست کار ــ
اکنون کدامیک ز شما
بیدار می‌مانید
در بسترِ خشونتِ نومیدی
در بسترِ فشرده‌ی دلتنگی
در بسترِ تفکرِ پُردردِ رازِتان

کدام دسته از توسعه‌دهنگان هستید؟

  • یوسف مهرداد بی‌بالان

به نظر شما، بر اساس روز کاری ایده‌آل‌تان، شما در کدام دسته‌ از توسعه‌دهندگان زیر قرار می‌گیرید؟ ویژگی‌های کاری و شخصی شما به کدام گروه از توسعه‌دهندگان شامل توسعه‌دهندگان اجتماعی (Social)، تنها (Lone)، متمرکز(Focused)، متعادل (Balanced)، هدف‌گرا (Goal-oriented) یا رهبر (Leading) شباهت دارد؟

گزیده:
۲۰۱۱: نرم‌افزار داره دنیا رو می‌خوره. مارک اندریسون (Marc Andreessen)
۲۰۲۲: نرم‌افزار داره نرم‌افزاری رو که در حال خوردن دنیاست می‌خوره. جان اکارد (Jon Eckhardt)

پ.ن. جمله اول اشاره می‌کند که نرم‌افزار در حال تحول و نابودی صنایع سنتی است که نتیجه‌ی آن، ظهور شرکت‌هایی مانند آمازون و نت‌فلیکس شد. جمله‌ی دوم اشاره می‌کند که نرم‌افزار در حال تحول و نابودی صنعت نرم‌افزار کنونی و سنتی است. به خیر بگذرد!

برای خروج از جستجو کلید ESC را بفشارید