برنامه نویس وب، IPA Lead developer, مدرس برنامه نویسی و طراحی سایت، موسس وبسایت پارس آکادمی
خلاصه ایی از کتاب clean coder نوشته رابرت مارتین
کتاب کدنویس تمیز نوشته رابرت مارتین در سال 2011 منتشر شده است، نزدیک به یک سال پیش این کتاب را بعد از کتاب clean code خواندم و متوجه خیلی نکات مهمی شدم که حتما در این مطلب درباره آنها با شما صحبت میکنم، در این مطلب قرار است درباره کتاب کدنویس تمیز (clean coder) با همدیگه صحبت کنیم و به صورت خلاصه این کتاب را بررسی کنیم
مقدمه کتاب
این کتاب 258 صفحه ایی و در مجموع 14 فصلی بسیار نکات خوبی را به برنامه نویس ها (مخصوصا برنامه نویس های تازه کار) آموزش میدهد آن هم این است که چقدر این شغل میتواند حساس باشد همانقدر که پزشکی، مهندسی، سیاست، حقوق و ... شغل های حساسی هستند برنامه نویسی نیز شغل حساسی است و اگر شما یک برنامه نویس مسئولیت پذیر نباشید چقدر ممکن است در کار خود و دیگران مشکل ایجاد کنید، دقیقا نکته ایی که من احساس میکنم خودم هم بسیار دیر بهش رسیدم و البته طبیعی است، میدانید چرا؟ چونکه خیلی مواقع تا ضربه نخوریم یا اشتباه نکنیم خیلی چیزها را یادنمیگیریم !
برنامه نویس حرفه ایی
در فصل اول تا سوم کدنویس تمیز به شما یاد میدهد که چگونه حرفه ایی رفتار کنیم، چگونه وقتی کاری نیازمند زمان بیشتری است نه بگوییم و چگونه در مواقعی که لازم است بله بگوییم ! این یک حقیقت است که خیلی مواقع خیلی از انجام نشدن کار ها یا به مشکل خوردن کار ها به دلیل نداشتن قدرت نه گفتن است، لازم است در این شغل همانطور که حرفه ایی عمل میکنیم و تلاش میکنیم مسئولیت پذیر باشیم همانقدر هم نه گفتن را بلد باشیم، انسان ربات نیست، انسان نیازمند استراحت است، نیازمند زمان است، نیازمند آرامش است خیلی مواقع به شوخی گفته میشود که برنامه نویس در 24 ساعت شبانه روز لازم است کار بکند ! این تعریف کاملا اشتباه است بلکه زمانی که ما برنامه ریزی داشته باشیم دیگر جای نگرانی وجود ندارد که چقدر زمان داریم، البته این هایی که من میگویم بخش هایی از کتاب است و به این معنا نیست که خودم هم این اشتباهات را انجام نمیدهم یا حتی رابرت مارتین این اشتباهات را انجام نمیدهد =)
حرفه برنامه نویسی نیز همانقدر حساس است که دیگر شغل ها و حرفه ها حساس هستند، شما با مطالعه این کتاب یادمیگیرید که چقدر یک اشتباه شما میتواند به یک شرکت ضرر مالی وارد کند، چقدر یک تصمیم اشتباه شما و یا قدرت نه نگفتن شما میتواند باعث شود تا دیگر کارمندان ضربه بخورند و چقدر کم بودن تجربه کاری شما و کم بودن سواد شما میتواند باعث افزایش زحمت دیگر کارمندان شود یک برنامه نویس وظیفه دارد همانقدر که برای کدنویسی تلاش میکند برای افزایش سواد نیز تلاش کند، این حرفه هر روزه در حال توسعه و پیشرفت است مگر میشود یک برنامه نویس یک گوشه بنشیند و منتظر باشد تا توسعه و پیشرفت سمت او بیاید؟ این برنامه نویس است که باید به سمت پیشرفت برود
مراقب کدهایی که مینویسی باش !
فصل چهارم تا هشتم ارتباط نزدیکی با دیگر کتاب رابرت مارتین یعنی کتاب محبوب کدنویسی تمیز (clean code) دارد، در این 4 فصل شما یادمیگیرید که چگونه مراقب کدهایی که مینویسید باشید و چگونه هر بخش را به شیوه ایی بنویسید که دیگر برنامه نویسان هم امکان خواندن آنها را داشته باشند، این یک حقیقت است که شما نه تنها باید مسئولیت کارهای خود را بلکه مسئولیت کدهای خود را نیز قبول کنید شما باید مراقب باشید که چه چیزی مینویسید و چه کسی با چه مقدار سواد قرار است بعدا کد شما را بخواند.
یکی از اصول اصلی برنامه نویسی تست نویسی است، شما باید یادبگیرید برای برنامه هایی که مینویسید آنقدر دقیق تست نویسی کنید ( تست نویسی به معنای انجام تست های مختلف بر روی کد های نوشته شده است ) که کمترین میزان خطا را برنامه های شما داشته باشد، اگر هم در جایی برنامه شما خطایی داشت شما باید بدانید که چطوری میتوانید خیلی سریع مشکل را رفع کنید و مسئولیت اشتباه خود را قبول کنید.
تست های قوی بنویس
یکی از اصول تست نویسی این است که بدانیم این احتمال وجود دارد که چه مشکلاتی برای برنامه ما به وجود بیاید، البته که همین مبحث نیز چندین زیر شاخه دارد به شکلی که ایرادات میتواند تنها برای GUI (چهره) برنامه ها به وجود بیاید یا برای سرور ها و دیتابیس، میتواند بخش امنیتی برنامه هایی که مینویسیم ایراد داشته باشد و یا callback هایی که برای برنامه مینویسیم، به همین دلیل است که بخش عمده ایی از تست نویسی اتفاقا ارتباط مستقیمی دارد با تجربه به این معنا که شما باید یکبار حداقل به این مشکلات برخورده باشید تا این تجربه را بدست بیاورید که چگونه میتوانید جلوی این ایرادات را بگیرید تا دیگر همچین ایرادی برای برنامه های شما به وجود نیاید.
مدیره پروژه خودت باش
فصل نهم و دهم به شما یاد میدهم که شما به عنوان یک برنامه نویس نیازی نیست حتما منتظر باشید تا یک مدیر پروژه به شما دستور بدهد که کاری انجام بدهید، شما میتوانید به عنوان یک برنامه نویس خودتان تمام پیش بینی ها را انجام بدهید و تلاش کنید برای بهینه سازی بهتر برنامه ها، البته که شغل مدیر پروژه یک شغل مهم محسوب میشود و اصلا به این معنا نیست که دیگر شرکت ها نیازی به مدیر پروژه ندارند !
اما تصور کنید که شما یک برنامه نویس فریلنسر هستید که در خانه مشغول برنامه نویسی و کار کردن بر روی پروژه ها هستید، اینجا است که دیگر چیزی به نام مدیر پروژه معنا نمیدهد و چیزی به نام دیزاین و دیزاینر هم وجود ندارد تنها شما هستید و کلی کار ! در این حالت است که شما یادمیگیرید چگونه مسئولیت برنامه های خودتان را قبول کنید و یادمیگیرید که چگونه برنامه هایی بنویسید که کمترین ایراد را داشته باشند، شما باید فشار های کاری را قبول کنید و بهترین زمانبندی را برای یک پروژه ایجاد کنید، شما باید تخمین درستی از زمانبندی پروژه داشته باشید و بدانید که یک پروژه که مقدار زمان نیاز دارد
رضافقیه : تجربه به من ثابت کرده ما هیچ وقت نمیتونیم بهترین زمان بندی و پیش بینی را داشته باشیم، برای همین اگر مثل من این احتمال را میدهید که ممکن است روزهایی مشکلاتی به وجود بیاید، روزهایی امکان کار کردن نداشته باشید و یا حتی ممکن است زمانبندی درست نباشد همین از این فرمول استفاده کنید
زمان بندی نهایی = تخمین+تخمین/2
به زبان ساده اگر شما برای یک پروژه 30 روز زمان را تخمین زده ایید بهتر است نیمی از این 30 روز را نیز به این 30 روز اضافه کنید و زمان نهایی را 45 روز در نظر بگیرید (به من اعتماد کنید و به موقع متوجه میشوید چقدر کمک میکنه بهتون : ) )
نتیجه گیری نهایی
کتاب کدنویس تمیز (clean code) را هر برنامه نویسی لازم است بخواند فرقی نمیکند شما 20 سال سابقه کار دارید یا 20 روز اما این نکته را در نظر داشته باشید که خیلی از چیزهایی که این کتاب ها و یا حتی کتاب های روانشناسی و انگیزشی میگویند شعار هایی هست که بهتره در زندگی همراه خود داشته باشیم اما زندگی همیشه به این شیوه کار نمیکند که ما 5 صبح بیدار شویم و هرروز سالاد بخوریم و بریم ورزش =)
خیلی مواقع باید این نکات را یادبگیریم تا در بخشی از زندگی از آنها استفاده کنیم و اگر هم اشتباهی در کارمون داشتیم یادبگیریم که این اشتباه را دیگه تکرار نکنیم و از آن اشتباه درس بگیریم
مطلبی دیگر از این انتشارات
چگونه password validation خوبی بنویسیم(Golang)
مطلبی دیگر از این انتشارات
چگونه از crawl کردن آدرسهای تکراری در ابعاد گوگل جلوگیری کنیم؟
مطلبی دیگر از این انتشارات
جاوا و سی شارپ - شباهت های زیاد, تفاوت های زیاد.