مهمترین مهارتی که یک برنامه نویس میتونه یاد بگیره

نه، نه، نه، نه و نه . باز هم «نه»

یک «نه» بزرگ. به همین سادگی و وضوح.

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

همین حالا بیاید با هم بگیم. نههههههههههه !

شروع خوبی بود 🙂

اما یه لحظه صبر کنید. به چه چیزی و چه زمانی باید «نه» بگیم؟

خب، اینجا نقطه مهمیست که اکثر برنامه نویسان (حتی با تجربه ها) در اون دچار اشتباه می شوند.

به عنوان یه برنامه نویس، نوشتن کد بزرگترین بخش شغل شما به حساب می آید. دز زندگی برنامه نویسی شما، شما با انواع درخواست های متفاوت کد زنی مواجه شده اید. هر درخواست شما را مجبور به تصمیم مختلفی می کنه. تا اینجا همه چیز درسته. با اینها مشکلی نداریم. این چیزیه که هر کسی از شما به عنوان یه برنامه نویس انتظار داره: نوشتن کد (کد زنی). اگرچه اینجا یه سوالی مطرح هست: آیا شما باید تمام درخواست های کد زنی که از شما می شود را انجام دهید؟

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

دانستن این که چه زمانی نباید کد بزنید احتمالا مهمترین مهارتیست که یک برنامه نویس میتونه یاد بگیره.

The Art Of Readable Code

من بیشتر از این نمیتونم قبول کنم. آخه چرا این طور باشه؟

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

این هم درسته چرا که ما برنامه نویس هستیمو ما عاشق کد زدن هستیم.

اگرچه هیچان زدگی در مورد کد زدن و برنامه نویسی ما را کور می کنه. این باعث میشه ما تعدادی حقایق مهم رو کنار بگذاریم که منجر به مسایل بزرگتری در آینده ما خواهد شد.

خب، اون حقایق مهمی که ما تمایل به نادیده گرفتن آنها داریم چیست؟

هر خط کدی که شما می نویسید:

  • کدی که باید خوانده بشه و توسط دیگر برنامه نویس ها نیز قابل فهم باشه.
  • کدی که باید تست و دیباگ بشه.
  • کدی که منجر به افزایش نقص در نرم افزار شما خواهد شد.
  • کدی که احتمالا در آینده منجر به تولید باگ های جدید می شود.

همان طور که  Rich Skrenta نوشته، کد دشمن ما می باشد:

کد بد است. فاسد شدنیست . نیاز به نگهداری دوره ای دارد. دارای باگ هست که باید پیدا شوند. ویژگی های جدید به این معنیست که کدهای قدیمی باید سازگار باشد.

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

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

کد توسط مهندسین تولید می شود. برای تولید کد بیشتر به مهندس بیشتری نیاز است. مهندسین هزینه های ارتباطی n² دارند و همینطور که کدهای بیشتر به سیستم اضافه می شود، کلی هزینه به سیستم اضافه می شود.

این درسته، این طور نیست؟ برنامه نویسانی که شما را با بهره وری و ذهنیت برنامه نویسی الهام می بخشند، همون برنامه نویس هایی هستند که می دونند چه زمانی «نه» بگند و چه زمانی کد نزنند. نرم افزاری که نگهداری از آن آسان باشد، مدت زمان بیشتری دوام می آورد و به کاربرانش کمک می کند، نرم افزاری است که شامل خطوط کد اضافی نباشد.

بهترین کد بدون کد است و بهترین برنامه نویس کسی است که بدونه چه زمانی نباید کد بزند.

چطور میتوانید بفهمید که چه زمانی نباید کد زد؟

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

هدف پروژه خود را بفهمید و تعریف هسته آن قدم اول برای آن است که بدانید چه زمانی کد نزنید.

اجازه بدید یه مثال برایتان بزنم. خب فرض کنید نرم افزاری داریم که تنها یک هدف دارد: مدیریت ایمیل ها. و برای آن هف، ارسال و دریافت ایمیل دو پیژگی ضروری در پروژه شما است. شما نیمی توانید از پروژه تان انتظار داشته باشید که یک لیست to-do رو نیز مدیریت کنه، غیر از اینه؟

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

هرگز هدف نرم افزار خودتان را گسترش ندهید.

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

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

زمانی که شورع به نوشتن پروژه می کنید، تنها ۲ الی ۳ سورس فایل وجود دارد. همه چیز ساده به نظر می آید. فقط چند ثانیه برای کامپایل شدن و اجرای برنامه زمان نیازه. شما می دانید که دقیقا کجا را برای چیزی که دنبالش می گردید نگاه بیاندازید.

سپس، همین که پروژه رشد کرد، سورس فایل های بیبشتر و بیشتر دایرکتوری های شما را پر می کند. هر فایل شامل صد ها خط کد خواهد بود. برای ساماندهی همه ی آنها شما به زودی به تعداد دایرکتوری های بیشتری نیاز خواهید داشت. به یاد‌آوری این که کدوم functionها چه funcyionهایی را صدا می زنند سخت خواهد شدو پیگری باگ ها به کار بیشتری نیاز خواهد داشت. مدیریت پروژه تان سخت تر خواهد شد و برای کمک به تعداد برنامه نویس بیشتری نیاز خواهید داشت. هزینه های ارتباطی با توجه به افزایش تعداد برنامه نویس ها افزایش خواهد یافت. سرعت شما هی آرامتر و آرامتر خواهد شد.

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

حال زندگی برای شما کشمکش شده است، چرا؟

چون که شما نمی دانستید چه زمانی نباید کد بزنید، شما به هر درخواست ویژگی ممکنی جواب مثبت دادید. شما کور بودید. کد زدن چیز های جدید منجر به این شد که حقایق ضروری را فراموش کنید.

شبیه یه فیلم ترسناک شد، درسته؟

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

یکی از روزهای ر سود من، روزیست که هزاران کد رو بندازم دور.

Ken Thompson

می میدونم که دانستن این که چه زمانی کد نزنیم کار سختی است. حتی برای برنامه نویس های با تجربه.ممکن چیز هایی که ت این مقاله نوشتن درکشان برا برنامه نویس های تازه کار سخت باشد، و این رو قبول دارم و درکش می کنم.

می می دونم که شما سفر برنامه نویسی خود را شروع کرده اید و دوست دارید که کد بزنید.

شما در این مورد هیجان زده هم هستید. خیلی ام خوبه. هیچ وقت این هیجان رو از دست ندید منتهی هیچگاه حقایق مهم رو کنار مگذارید. ما آنها را با اشتباهات خودمکان به دست آورده ایم. شما هم اشتباه خواهید کرد و از اشتباهاتتان یاد خواهید گرفت. منتهی شما می توانید هوشیارتر و آگاهانه رفتار کنید اگر حداقل از تجربه ما استفاده کنید.

به کد زدن ادامه بدید، اما بدونید که چه زمانی باید به کد زدن بگید نه …


مقاله فوق رو من فقط ترجمه کردم و اینجا به اشرتاک گذاشتم، امیدوارم مفید بوده باشه

اصل مقاله رو اینجا می تونید پیدا کنید