کدها را کپی نکنید، تایپ کنید!

سه شنبه 24 مهر 1397

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

کدها را کپی نکنید، تایپ کنید!

اکنون شما  برنامه‌نویسی "Cargo Cult" را تمرین می‌کنید - یک سبک توسعه نرم‌افزار که در آن شما نحوه کار یک قطعه کد و ارتباط آن با کد اطراف آن را نادیده می‌گیرید.

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

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

زمانی که یک توسعه دهنده، تکه‌ای از کدها را می‌خواند و هنوز آن را درک نمی‌کند و هنوز آن را به امید حل برخی مشکلات تغییر می‌دهد، آن‌ها هم همچنین برنامه نویسی Cargo Cult را تمرین می‌کنند.

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

از سوی دیگر ، برنامه نویسی  Cargo Cult، نشان‌دهنده یک سو تفاهم اساسی از گام‌های ثابت شده برای یادگیری از کد های بقیه مردم می باشد.

در اینجا موثرترین راه برای یادگیری در این زمینه اورده شده است:

۱. یک قطعه کد را بخوانید.

۲. تمام ویژگی‌های زبان مورد استفاده در آن را بشناسید.

۳. تمام ویژگی‌های کتابخانه‌ها / چارچوب‌ها را که در آنجا مورد استفاده قرار می‌گیرند ، درک کنید.

۴. اصول اولیه این کتابخانه‌ها / چارچوب‌ها را بیاموزید.

۵. درک کنید که هر سطر و هدف آن کتابخانه‌ها / چارچوب‌ها در متن آن بخش از کد چه می‌باشد.

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

"یکی از این روش‌ها بلاک کردن (Blocked Practice) است. در این روش شما یک مهارت را بارها و بارها فرا میگیرید و تکرار کلید آن است."

با این حال ، این بهترین راه برای یادگیری نیست. ثابت شده که وقتی انواع مختلف همان مهارت را فرا می‌گیرید، بهتر یاد می‌گیرید.

در مهندسی نرم‌افزار، ما می‌توانیم هر دو روش یادگیری به روش block و interleaving را در زمانی که کد را در زمینه‌های مختلف تایپ می‌کنیم، استفاده کنیم به جای کپی کردن.

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

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

"تایپ کردن به جای کپی کردن باعث یادگیری بهتر می شود چون ما به جای خواندن، تمرین می‌کنیم".

نامگذاری اشیا یکی از دشوارترین جنبه‌های برنامه‌نویسی تلقی می‌شود. هنگامی که ما کد را بدون درک آن کپی می‌کنیم، ریسک از دست دادن و یا جایگزین کردن نام‌های متغیر، نام تابع، یا کلاس را به دنبال دارد.

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

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

برای مثال، قسمت‌های HTML زیر را در نظر بگیرید:

<label for="name"></label>
<div class="input-wrapper">
  <input type="text" id="name">
</div>

کد یک قطعه HTML با یک عنصر lable حاوی یک ویژگی با نام " for " و " value " و یک ورودی با نام " id " و " name " می باشد.

هنگامی که آن کد را برای ایجاد یک ورودی جدید کپی می کنیم، ما احتمالا فراموش می‌کنیم که ویژگی عنصر برچسب را تغییر دهیم، که رفتار مورد نظر برای ورودی جدید را ایجاد کند.

<label for="name"></label>
<div class="input-wrapper">
  <input type="text" id="name">
</div>

<label for="name"></label>
<div class="input-wrapper">
  <input type="password" id="password">
</div>

کد نشان می‌دهد که برچسب قبلی و عناصر ورودی برای ایجاد یک فیلد جدید کپی می‌شوند. با این حال، برچسب " for " بدون تغییر باقی می‌ماند.

این مثال جالب است ، زیرا این نوعی کارکرد است که برای تست، دشوار است. آن به شدت به تست استاتیک - مانند یک بازبینی کد بستگی دارد - تا اطمینان حاصل شود که کد برای هدف مورد نظر نوشته شده‌است.

همین مساله در مورد تست ها اتفاق می‌افتد. هنگامی که ما یک تست پذیرفته شده را از ابتدا کپی می‌کنیم، ریسک تغییر نشانه‌های لازم را با بی توجهی رد می‌کنیم که در غیر این صورت باعث عدم موفقیت این تست می‌شود.

در این مورد، با این حال، ما می‌توانیم با استفاده از Test Driven Development - یک طرز فکر مبتنی بر ایجاد یک تست ناموفق وسپس، از این اشتباه جلوگیری کنیم، سپس کد برنامه را تغییر دهیم تا آن پذیرفته شود. این طرز تفکر به ما این امکان را می‌دهد که مطمئن باشیم به احتمال کمتری چیزی را از دست می‌دهیم یا یک اشتباه مثبت ایجاد می‌کنیم.

به جای کپی کردن کد بدون درک آن، از کد های دیگر مردم یاد بگیرید و بر روی آن تمرین کنید. این باعث به حداکثر رساندن بازدهی یادگیری شما خواهد شد.

"هر چه باشد، ارزشمندترین منبع یک توسعه دهنده، ذهن انها است - نه انگشتان."

برنامه نویسان

نویسنده 3355 مقاله در برنامه نویسان

کاربرانی که از نویسنده این مقاله تشکر کرده اند

در صورتی که در رابطه با این مقاله سوالی دارید، در تاپیک های انجمن مطرح کنید