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

سلام!چندین ماه قبل برای تست یک سری ویژگی های یک پروژه آزمایشگاهی در کنار پروژه اصلی تعریف کردیم تا بتونیم با خیال راحت تست های دلخواه رو بگیریم و بعد نتایج رو در پروژه اصلی استفاده کنیم.برای تولید محتوای مورد نیاز اومدیم تیترهای کتاب 97 Things Every Programmer Should Know رو پس از ترجمه آزاد و کمی هم دستکاری استفاده کردیم.نسخه اصلی این کتاب رو می تونید در گیت هاب پیدا کنید.پیشنهاد می کنم حتی اگر قبلا کتاب رو مطالعه کردیم باز هم یک مرور کوتاه به این سرفصل ها داشته باشیم که آدمی محتاج مرور و یادآوری است!تذکر دوباره: آنچه که می خوانید دقیقا کتاب نیست و برخی از موارد متفاوت است ولی صحیح است!مواردی که به نظرم خودم در لیست مهم‎تر هست رو توپر کردم، ممنون میشم شما هم مواردی که مهم می دونید رو در کامنت ارسال بفرمایید (:با احتیاط عمل کنید.بپرسید کاربر چه کار می‌خواهد انجام دهد؟ (شما یک کاربر نیستید.)کد استاندارد خود را خودکار سازید.زیبایی در سادگی است. (هرچه ساده‌تر کد بنویسید زیباتر نوشته‌اید.)قبل از تغییر، کدهای قبل را جای دیگری ذخیره کنید.مراقب باشید به اشتراک بگذارید.قانون بوی اسکات (همیشه همه‌چیز را به تمیزتر از آنچه دیدید تبدیل کنید.)قبل از سرزنش دیگران، کدهای خود را بررسی کنید.در انتخاب ابزار خود دقیق باشید.هر زبان برای کار مشخصی است، با دقت زبان خود را مشخص کنید.قبل از کد نویسی مسیر را طراحی کنید تا هزینه‌ها کم شود.قسمت‌بندی کدها اهمیت دارد.بازخوانی کدها را فراموش نکنید.با دلیل کد نویسی کنید.کامنت‎نویسی برای کدها اهمیت دارد.کامنت‎نویسی فقط برای کدهایی که درکشان سخت است.به یادگرفتن ادامه دهید.راحت بودن یک قابلیت نیست.همیشه در حال گسترش و توسعه باشید.استثناها را جدا کنید.تمرینات زیادی انجام دهید.کلمات مخصوص زبان برنامه‌نویسی موردنظر را یاد بگیرید.از خرابکاری نترسید.با کدهای تست خود مهربان نباشید.ارورها را نادیده نگیرید.فقط زبان را یاد نگیرید، معنی آن را بفهمید.برنامه خود را به بی‌راهه نبرید.در برنامه به معجزه اعتقاد نداشته باشید.افزونگی نداشته باشید.به چیزی (کد) دست نزنید.رفتار را شناسایی کنید نه حالت را.اعداد شناور واقعی نیستند.جاه‌طلبی خود را متن‌باز ارائه دهید.اگر قرار باشد که API ای برای هزاران نفر طراحی کنید، به این فکر کنید که چطور قرار است تغییرش دهید.برنامه‌نویس‌ها همه‎چیز‎دان نیستند.کار سخت الزاماً حقوق بالا ندارد.چگونه از باگ‌ها مسیر را پیدا کنیم؟با حذف کردن، کدهای خود را بهبود ببخشید.برای حل مشکلات از سایرین کمک بگیرید.همه‌چیز را درست کنید نه فقط ارور و اخطار.استفاده از command-line را یاد بگیرید.بیش از دو زبان برنامه‌نویسی را خوب یاد بگیرید.همواره IDE خود را بشناسید.محدودیت‌های خود را بشناسید.بخش بعدی کار خود را بشناسید.داده‌های بزرگ و حجیم متعلق به پایگاه داده است.زبان‌های خارجی را یاد بگیرید.تخمین زدن را یاد بگیرید.یاد بگیرید که در ابعاد کوچک کار کنید.اجازه دهید پروژه‌تان خودش صحبت کند.طول عمر راه‌حل‌های موقت را بشناسید.رابط کاربری را طوری طراحی کنید که به‌طور صحیح استفاده کردن از آن آسان و اشتباه کار کردن با آن سخت باشد.مشکلات غیرقابل مشاهده را تبدیل به مشکلات قابل‌مشاهده کنید.با کامنت ‌گذاری و استفاده از پیام‌ها قابلیت مقیاس‌پذیری برنامه‌های موازی را بهبود بخشید.برای آیندگان و استفاده‌کنندگان آینده کدهای خود پیام و کامنت بگذارید.استفاده از سیستم چندریختی را مهم بدانید.تست کننده‌ها دوستان شما هستند.کدهای خود را بهینه کنید.فقط کدها راست می‌گویند.کدهای خود را منظم بنویسید.همگام‌سازی و جریان برنامه را حس کنید.از ارورها جلوگیری کنید.یک برنامه‌نویس حرفه‌ای مسئولیت‌پذیر است.همه‌چیز را در ورژن کنترلر قرار دهید.در مواقع خستگی موس و کیبورد را کنار بگذارید و استراحت کنید.کدها را بازخوانی کنید.علوم روانشناسی و انسانی را برای ارتباط بهتر با یکدیگر بخوانید.معمولاً می‌خواهند دوباره چرخ را اختراع کنند. اول اطلاعات کسب کنید سپس شروع کنید.در برابر دیزاین پترن Singleton مقاومت کنید.مسیر رسیدن به هدف با بمب‌هایی مثل کدهای کثیف پوشیده شده است.سادگی از کاهش می‌آید.اصل مسئولیت واحد که هرکس به‌تنهایی مسئول کار خودش است.با یک بله ساده شروع کنید.یک گام به عقب برگردید و خودکار کنید، خودکار کنید و خودکار کنید.مزایای ابزار تجزیه‌وتحلیل کد را ببینید.رفتارهای موردنیاز را تست کنید نه رفتارهای غیرمعقول را.به‌طور دقیق و خاص تست کنید.بیشتر موقع خواب و روزهای تعطیل تست کنید.تست کردن محرک مهندسی نرم‌افزار است.برای حالت‌های مختلف فکر کنید.دوتا مغز بهتر از یک مغز برای فکر کردن است.دو اشتباه هم می‌توانند مسئله را حل کنند و هم رفع آن‌ها کار بسیار سختی است.به‌طور فراگیر کد نویسی کنید تا دوستانتان هم از کدها بهره ببرند.ابزارهای یونیکس دوستان شما هستند.از الگوریتم‌های درست و ساختار داده استفاده کنید.خیلی دقیق شدن در کد خواب شما را به هم می‌ریزد.هر دانشی در سیستم نیاز به نمایش ندارد.وقتی برنامه‎نویسان و تست‎کننده‌ها باهم همکاری کنند معجزه رخ می‌دهد.جوری کد بنویسید که انگار باید بقیه زندگی‌تان آن را پشتیبانی کنید.تست نویسی کنید.شما باید از کدها نگهداری کنید.الزاماً مشتریان شما معنای آنچه می‎گویند را نمی‌فهمند!برای اثبات خودتان با هرکسی کار نکنید.فراموش نکنید که Ajax دمپایی نیست.بدهی فنی خود به سیستم را بپردازید.