tgoop.com/terminal_stuff/2950
Last Update:
به بهانهی این مطلب چند تا نکته در مورد خوندن کد بگم:
۱- خوندن کد خوبه و هر کدی هم باشه کلا خوبه. مثل کتاب خوندن. از نظر من کد خوندن مثل رمان و کتاب خوندنه.
۲- با خوندن کد بیشتر و بهتر، کدهای بهتری هم خواهید نوشت. یادگیری دیزاین پترن و اصول کد تمیز خوبه ولی دیدن اینکه در عمل چه چیزی باعث خوب شدن کد میشه یه چیز دیگهست و اگه کد بخونید از بقیه جلو میافتید.
۳- همونطور که وقتی الفبا رو یاد گرفتیم نمیشه انتظار داشت که آثار شکسپیر رو بخونیم، قاعدتا اگه اولین کدی که میخونیم کد لینوکس باشه، خیلی چیزاشو متوجه نمیشیم. میشه اول از چیزهای سادهتر شروع کرد.
۴- یه سری پروژهها (مثلا minix) به هدف اینکه سورس کد قابل فهمی داشته باشن نوشته میشن و یه سری دیگه به هدف پرفورمنس و کاربردی بودن و ... شروع کردن از اونایی که سورس کد مرتب تر و سادهتری دارن قطعا توصیه میشه. مخصوصا اگه ایدهی کلی از اون سیستمی که پیادهسازی میشه نداریم. مثلا اگه نمیدونیم سیستمعامل چطوری کار میکنه بهتره اول کتاب در موردش بخونیم. بعد یه کتاب یا منبعی که سورسکد رو توضیح داده بخونیم (یا همین مینیکس که سورس کد ساده و با کامنتی داره). و در نهایت میتونیم (شاید بتونیم) سورس کد یه سیستمعامل واقعی رو بخونیم.
۵- خوندن کد خیلی وقتا مثل کتاب نیست که از اول شروع کنیم تا آخر بریم، بلکه به شکل چرخیدن تو یه جنگل بزرگه. میچرخیم و جاهای جالبش رو نگاه میکنیم. مثلا همین که فایل cgroupش رو باز میکنیم. گاهی هم سعی میکنیم ساختارمندتر کار کنیم مثلا main رو باز میکنیم و از اونجا میریم جلو. (البته اگه mainی در کار باشه!)
۶- (شاید نظر نامحبوب) خیلی وقتا نیازی نیست همهی کد رو خونده باشیم یا حتی فهمیده باشیم تا بتونیم یه contributionی انجام بدیم. برای انجام یه تغییر کافیه بدونیم کلیت داستان چیه (مثلا main چطوری کار میکنه، قسمتی که کد من رو کال میکنه چطوریه و معماری و پوشهبندی کلی چطوریه) و تغییرمون رو در جای درستش اعمال کنیم. مثلا اگه میخوایم کوئری بهینهتری برای دیتابیس بنویسیم خیلی وقتا نیاز نیست که بدونیم تو dockerfile چه خبره یا مثلا تو http handler دقیقا چه اتفاقی میافته. یا در مثال لینوکسش، اگه میخوایم در مورد cgroup بیشتر بدونیم قاعدتا نیاز نیست در مورد درایورهای گرافیک چیز زیادی بدونیم. مخصوصا اگه معماری کد خوب باشه و الکی چیزا رو به هم متصل نکرده باشه.
BY نوشتههای ترمینالی
Share with your friend now:
tgoop.com/terminal_stuff/2950