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

نه ، نه ، نه ، نه ، و نه . و نه .يه "نه" بزرگ. اينطوري واضحه.تنها کاری که باید بکنید این است که آن دو حرف را گرد هم بیاورید و کلمه را بگویید.حالا، بيا با هم بگيم. NOOOOOOO!شروع خوبيه ...اما يه دقيقه صبر کن . به چي و کي نه بگو؟خب، این نکته مهمی است که بیشتر برنامه نویسان به راحتی گیج می شوند.به عنوان یک برنامه نویس، نوشتن کد بزرگترین بخش کار شماست. در طول عمر برنامه نویسی خود، شما باید با انواع مختلف درخواست کد مقابله کنید. هر درخواست شما را مجبور به تصمیم گیری دشوار خواهد کرد. همه چي مرتبه. هيچ اشکالي نداره . این چیزی است که همه از شما انتظار دارند، به عنوان یک برنامه نویس: نوشتن کد. با این حال، در اینجا یک سوال است: آیا باید تمام کد هایی را که از شما درخواست می شود بنویسید؟این سوال ما را به مهمترین مهارتی می رساند که یک برنامه نویس می تواند یاد بگیرد:دانستن زمان عدم کدگذاری مهمترین مهارتی است که یک برنامه نویس می تواند بیاموزد. The Art Of Readable Codeبرنامه نویسی هنر حل یک مسئله است. بنابراین به طور طبیعی، برنامه نویسان حل کننده مسئله هستند. ما به عنوان برنامه نویس، وقتی مشکل جدیدی در مقابل خود داریم آماده حل شدن یا هر دلیل دیگری که از ما برای نوشتن خطوط کد نیاز دارد، هیجان زده می شویم.و اشکالی ندارد چون ما برنامه نویس هستیم. ما عاشق نوشتن کد هستيم .با این حال ، هیجان بیش از حد در مورد نوشتن کد ما را کور می کند. باعث می شود برخی حقایق مهم را نادیده بگیریم که می تواند مشکلات بزرگتری را ایجاد کند که در آینده باید با آن کنار بیایم.خب، اون حقايق مهمي که ما تمايل داريم ناديده بگيريم چيه؟هر خط کدی که می نویسید این است:کدی که باید توسط برنامه نویسان دیگر خوانده و درک شود.کدی که باید مورد آزمایش قرار گیرد و اشکال زدایی شود. کدی که باعث نقص در نرم افزار شما می شود.کدی که احتمالاً اشکالات جدیدی را در آینده معرفی خواهد کرد.همانطور که ریچ اسکرنتا نوشت: کد دشمن ماست.کد بد است، فاسد می شود. نیاز به نگهداری دوره ای دارد. اشکالاتی دارد که باید پیدا شوند. ویژگی های جدید به این معنی است که کد قدیمی باید سازگار شود.هر چه کد بیشتری داشته باشید، مکان های بیشتری برای پنهان کردن اشکالات وجود دارد. مدت زمان طولانی تری پرداخت یا کامپایل طول می کشد، بیشتر طول می کشد تا یک کارمند جدید بتواند سیستم شما را درک کند. اگر مجبور به رفکتور شوید ، چیزهای بیشتری برای جابجایی وجود دارد.علاوه بر این، کد بیشتر، اغلب به معنای انعطاف پذیری و قابلیت کمتر است. این یک اقدام ضد شهودی است، اما خیلی اوقات یک راه حل ساده سریعتر و عمومی تر از آشفتگی کد تهیه شده توسط یک برنامه نویس با استعداد کمتر است.کد توسط مهندسان تولید می شود. برای ساخت کد بیشتر نیاز به مهندسان بیشتری است. مهندسان هزینه های ارتباطی n² دارند و تمام آن کد هایی که به سیستم اضافه می کنند، در حالی که قابلیت آن را گسترش می دهند، یک سبد کامل هزینه ها را نیز افزایش می دهد.خیلی درست است ، نه؟ برنامه نویسان که بهره وری و ذهنیت برنامه نویسی خود را به شما القا می کنند کسانی هستند که می دانند چه موقع نه بگویند و چه زمانی کد ندهند. نرم افزاری که به راحتی قابل نگهداری است ، طولانی مدت کار میکند و به کاربران آنها کمک می کند ، نرم افزاری است که حاوی هیچ کد کد غیر ضروری نیست.بهترین کد اصلاً بدون کد است و موثرترین برنامه نویس کسی است که می داند چه زمانی رمزگذاری نکند.چگونه می توانید بفهمید که کدگذاری نمی شود؟طبیعی است که وقتی روی یک پروژه کار می کنید هیجان زده شوید و به تمام ویژگی های جالبی که دوست دارید پیاده سازی کنید فکر کنید. ما برنامه نویسان تمایل دارند که بیش از حد به ویژگی های پروژه خود نیاز داشته باشند. بسیاری از ویژگی ها ناتمام یا بلااستفاده می مانند یا به سادگی، برنامه را بیش از حد پیچیده می کنند. شما باید بدانید که برای اجتناب از این اشتباه چه چیزی برای پروژه شما ضروری است.درک هدف از نرم افزار و تعریف اصلی آن اولین قدم برای دانستن زمان عدم کدگذاری است.بذار يه مثال بهت بزنم بیایید بگوییم شما نرم افزاری داریم که تنها یک هدف دارد: مدیریت ایمیل ها. و برای این منظور، ارسال و دریافت ایمیل دو ویژگی ضروری برای پروژه شما هستند. نمی توانید انتظار داشته باشید که آن نرم افزار لیست کارهای شما را نیز مدیریت کند ، می توانید؟ بنابراین باید به هر درخواست ویژگی احتمالی که با این تعریف ارتباطی ندارند ، نه بگویید. این لحظه ای است که می توانید دقیقاً مطمئن شوید که می دانید چه زمانی کد ننویسید.هرگز هدف نرم افزار خود را گسترش ندهید.هنگامی که بدانید چه چیزی برای پروژه شما ضروری است ، دفعه دیگر هنگام ارزیابی درخواست های احتمالی کد ، هوشیار خواهید شد. شما دقیقاً نیاز خود را برای نوشتن کد می دانید. کدام ویژگی باید اجرا شود؟ کدام کد ارزش نوشتن را دارد؟ شما همه چیز را زیر سوال خواهید برد زیرا دقیقاً خواهید دانست که کد غیرضروری چگونه می تواند پروژه شما را از بین ببرد.دانستن زمان عدم کدگذاری ، پایگاه کد شما را کوچک نگه می دارد.هنگام شروع پروژه فقط دو یا سه فایل منبع وجود دارد. همه چیز خیلی ساده به نظر می رسد. فقط چند ثانیه طول می کشد تا کد وارد شود و اجرا شود. شما می دانید که دقیقاً آنچه را که می خواهید پیدا کنید.سپس ، با رشد پروژه ، پرونده های منبع بیشتر و بیشتری دایرکتوری شما را پر می کنند. هر فایل کد حاوی صدها خط کد است. برای سازماندهی همه آنها ، به زودی به چندین دایرکتوری نیاز خواهید داشت. به یاد آوردن اینکه کدام توابع سایر توابع را فراخوانی می کنند دشوارتر است و پیگیری اشکالات کمی بیشتر به کار نیاز دارد. مدیریت پروژه شما دشوار می شود و شما برای کمک، به برنامه نویسان بیشتری نیاز دارید. هزینه های ارتباطی با افزایش تعداد برنامه نویسان افزایش می یابد. شما کندتر و کندتر می شوید.در پایان ، پروژه عظیم می شود. افزودن ویژگی های جدید دردناک است. حتی ایجاد تغییرات کوچک نیز ساعتها به طول می انجامد. رفع اشکالات موجود همیشه اشکالات جدیدی را به همراه دارد. مهلت مقررات را از دست می دهید.اکنون ، زندگی برای شما یک مبارزه است. چرا؟از آنجا که نمی دانید چه زمانی کد ندهید ، به هر درخواست ویژگی ممکن بله گفتید. کدگذاری موارد جدید باعث شد شما از حقایق اساسی چشم پوشی کنید.مثل يه فيلم ترسناک ميمونه، درسته؟این چیزی است که اتفاق می افتد اگر شما مدام بله را برای همه بگویید. دقیقاً بدانید چه موقع کدگذاری نکنید. تمام کد های غیرضروری را از پروژه خود حذف کنید. این کار باعث سهولت زندگی شما و ماندگاری بیشتر نرم افزار شما می شود.یکی از پربارترین روزهای من دور انداختن 1000 خط کد بود. کن تامپسونمن می دانم که دانستن زمان رمز نگاری بسیار سخت است. حتی برای برنامه نویسان ارشد. شاید درک آنچه که من در این مقاله نوشتم برای برنامه نویسان ارشد سخت باشد ، و این درست و قابل درک است.من می دانم که شما به تازگی سفر برنامه نویسی خود را شروع کرده اید و می خواهید کد بنویسید. شما از این موضوع بسیار هیجان زده هستید. این خوبه. این هیجان را هرگز از دست ندهید اما همچنین هرگز حقایق مهم را نادیده نگیرید. با اشتباهات خود آنها را یاد گرفتیم. شما نیز اشتباه خواهید کرد ، و از آنها نیز یاد خواهید گرفت. اما حداقل اگر می توانید از تجربه ما بیاموزید می توانید هوشیارتر باشید.به کدنویسی ادامه دهید اما بدانید چه زمانی به کدنویسی نه بگوییم.