مقدمه کتاب کد تمیز : راهنمای مهارت های چابک ساخت نرم افزار - بخش اول

وقتی کتاب Clean code نوشته Robbert C.martin را خواندم ، مقدمه آن را جا انداخته بودم ، یک روز تصمیم گرفتم جهت سرگرمی مقدمه این کتاب را بخوانم ، خواندن این مقدمه باعث شد تا دوباره کتاب را با دید عمیق تر بخوانم . خواندن مقدمه این کتاب را به همه مهندسان نرم افزار پیشنهاد می کنم. تصمیم گرفتم این کتاب رو به طور عمقی بخوانم و ترجمه آن را در اینجا بنویسم .

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


کد تمیز : راهنمای مهارت های چابک ساخت نرم افزار

نوشته Robbert C.martin


مقدمه

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

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

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

پیش گفتار

یکی از آب نبات های مورد علاقه ما در اینجا در دانمارک Ga-Jol است که بخارات شیرین بیان قوی آن مکمل مناسبی برای آب و هوای مرطوب و اغلب سرد است. بخشی از جذابیت Ga-Jol برای ما دانمارکی ها سخنان خردمندانه یا شوخ طبعی است که بر روی فلپ هر جعبه چاپ شده است.

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

لودویگ میس ون در روهه (Ludwig Mies van der Rohe) گفت : خدا در جزئیات است. این نقل قول بحث های معاصر درباره نقش معماری در توسعه نرم افزار را به یاد می آورد و به ویژه در جهان چابک من و باب (Uncle Bob) گهگاه می بینیم که با شور و اشتیاق درگیر این گفتگو هستیم. و بله ، میس ون در روهه مارا متوجه سودمندی و بی انتهایی آن ساخت ، که زمینه ساز معماری عالی بود. از طرف دیگر ، او شخصاً هر دستگیره درب را برای هر خانه ای که طراحی کرده انتخاب کرده است. چرا؟ زیرا کوچکترین چیزها هم مهم هستند.

لودویگ میس ون در روهه - معمار آلمانی - آمریکایی
لودویگ میس ون در روهه - معمار آلمانی - آمریکایی
خدا در جزئیات است

در "بحث" مداوم ما در مورد TDD ، من و باب کشف کردیم که ما توافق داریم که معماری نرم افزار از جایگاه مهمی در توسعه برخوردار است ، هرچند که ما احتمالاً دیدگاه های متفاوتی از معنای دقیق آن داریم. چنین ابهاماتی نسبتاً مهم نیستند ، زیرا ما مسلماً می توانیم قبول کنیم که متخصصان مسئول ، در ابتدای پروژه ، مدتی را به تفکر و برنامه ریزی اختصاص دهند. مفاهیم طراحی اواخر دهه 1990 که فقط توسط آزمونها و کد ارائه می شدند ، مدتهاست که از بین رفته اند. حتی با این وجود یکی از مهمترین پایه ها و اساس حرفه ای بودن توجه به جزئیات است. اولا تمرین در موضوعات کوچک است که حرفه ای ها مهارت و اعتماد به عمل در سطح بزرگ را کسب می کنند. دوما کوچکترین نامرتبی در ساخت و ساز ، دربی که محکم بسته نمی شود، کاشی ای که اندکی کج است یا حتی یک میز آشفته ، کاملا جذابیت بزرگتر کل را از بین می برد. این در مورد همان کد تمیز است. هنوز هم معماری فقط یک استعاره از توسعه نرم افزار است بویژه برای آن بخش که محصول اولیه ای را ارائه می کنیم ، همانند معماری که ساختمان بکری را تحویل می دهد.

این روزها اسکرام و چابکی بر روی تحویل سریع محصول به بازار تمرکز دارند. ما می خواهیم کارخانه با حداکثر سرعت برای تولید نرم افزار کار کند، کارخانه های انسانی : تفکر و احساس کد نویسانی که از یک پس زمینه محصول (Backlog) یا داستان کاربر (User story) برای ایجاد محصول استفاده می کنند. استعاره ساخت و ساز در چنین تفکری بسیار قدرتمند است. بخش اعظم جنبه های تولید و ساخت اتوموبیل های ژاپنی از اسکرام الهام میگیرد.

بیشتر کار نه در تولید بلکه در تعمیر و نگهداری یا اجتناب از آن است
بیشتر کار نه در تولید بلکه در تعمیر و نگهداری یا اجتناب از آن است


حتی در صنعت اتومبیل سازی ، بیشتر کار نه در تولید بلکه در تعمیر و نگهداری یا اجتناب از آن است. در نرم افزار ، 80٪ یا بیشتر آنچه که ما انجام می دهیم کاملاً "تعمیر و نگهداری" نامیده می شود. به جای اینکه از تمرکز معمول غربی در تولید نرم افزارهای خوب استقبال کنیم ، باید بیشتر شبیه تعمیرکاران خانه در صنعت ساختمان یا مکانیک خودرو در زمینه خودرو باشیم. مدیریت ژاپن در این باره چه می گوید؟

در حدود سال 1951 ، رویکردی با کیفیت به نام Total Productive Maintenance (TPM) در صحنه ژاپن ظاهر شد. تمرکز آن بر تعمیر و نگهداری است تا تولید. یکی از ارکان اصلی TPM مجموعه اصول 5S است. 5S مجموعه ای از رشته ها است و در اینجا من اصطلاح "رشته" را به طور آموزنده استفاده می کنم. این اصول 5S در واقع در پایه های Lean - کلید واژه دیگری در صحنه غرب و سخنان فزاینده برجسته در محافل نرم افزاری است. این اصول یک گزینه نیست. همانطور که Uncle bob در مورد موضوعات اصلی خود بیان می کند ، نرم افزار خوب به چنین نظم و انضباطی نیاز دارد

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



فلسفه 5S شامل این مفاهیم است:

اصل 1 - Seiri - سازماندهی (یا مرتب سازی) : دانستن اینکه مکان ها از رویکرد هایی مثل نامگذاری درست استفاده میکنند .فکر می کنید نامگذاری شناسه ها مهم نیست؟ ادامه در فصل های بعدی.

اصل 2 - Seiton یا نظافت (فکر کنید "به انگلیسی" systematize ). یک جمله قدیمی آمریکایی وجود دارد: مکانی برای هر چیزی ، و همه چیز در جای خود. قطعه ای از کد باید همان جایی باشد که انتظار دارید آن را پیدا کنید.

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

اصل 4 - Seiketsu یا استاندارد سازی: این گروه در مورد نحوه تمیز نگه داشتن محل کار به توافق می رسند. آیا فکر می کنید این کتاب در مورد داشتن یک سبک برنامه نویسی و مجموعه ای از اقدامات مداوم در گروه چیزی گفته است؟ این استانداردها از کجا آمده است؟ ادامه مطلب در فصل های بعدی.

اصل 5 - Shutsuke یا نظم و انضباط (خود انضباطی). این بدان معنی است که نظم و انضباطی برای پیروی از روش ها و تأمل مکرر در کار خود داشته باشید.


خوانایی کد شما به همان اندازه قابلیت اجرای آن اهمیت دارد.

در اینجا ، ما در نهایت به ریشه های حرفه ای مسئولیت پذیری، در حرفه ای می پردازیم که مربوط به چرخه عمر یک محصول است. همانطور که ما اتومبیل ها و ماشین آلات دیگر را تحت TPM نگهداری می کنیم ، اشکال در تعمیر و نگهداری و انتظار برای بروز اشکالات سطحی، از این قاعده مستثنی است. در عوض ، ما یک سطح بالا می رویم: ماشین ها را هر روز بازرسی می کنیم و قطعات پوسیده را قبل از شکستن تعمیر می کنیم ، یا روغن 10،000 مایلی را برای جلوگیری از سایش و پارگی تعویض میکنیم. خوانایی کد شما به همان اندازه قابلیت اجرای آن اهمیت دارد.روش نهایی که از سال 1960 در محافل TPM معرفی شده ، تمرکز بر راه اندازی کامل ماشین های جدید یا جایگزینی ماشین های قدیمی است. همانطور که فرد بروکس به ما هشدار می دهد ، ما احتمالاً باید هر هفت سال یکبار قسمتهای اصلی نرم افزار را از ابتدا توسعه دهیم تا مشکلاتی که باعث می شوند زیر و بم نرم افزار را تغییر دهیم را از بین ببریم. شاید ما باید ثابت زمان بروکس را به جای سالها به ترتیب چند هفته ، روز یا ساعت به روز کنیم. این جایی است که جزئیات نهفته است. (این ثابت زمانی را میزان توجه به تجزئیات تعیین میکند)

قدرت زیادی در جزئیات است . هنوز چیزی عمیق در مورد این رویکرد زندگی وجود دارد، همانطور که از هر روشی که ادعای ریشه ژاپنی را داشته باشد ، به طور کلیشه ای انتظار داریم. اما این فقط یک نگاه شرقی به زندگی نیست. خرد عامیانه انگلیسی و آمریکایی هم پر از چنین پندهایی است. نقل قول Seiton از قلم وزیر اوهایو سرچشمه می گرفت که به معنای واقعی کلمه آراستگی "به عنوان دارویی برای هر درجه از شر" بود. Seiso
چطور؟ نظافت در کنار خداپسندی است. به همان زیبایی خانه ،که میز تحریر شلوغ جلال و شکوه آن را می رباید. Shutsuke در این مسائل کوچک چطور؟ کسی که در مسائل کوچک وفادار و مراقب باشد ، در خیلی چیزها وفادار است. چطوره که بجای به تعویق انداختن تصمیم در زمان مسئولیت خودتان ، مشتاق به تغییرات برای قوی شدن برای تصمیمات بزرگ آتی باشید؟ یک بخیه به موقع خیلی مهم است، کاری که امروز می توانید انجام دهید را به فردا موکول نکنید. در مورد کالیبره کردن مکان تلاش های کوچک و فردی در یک کل عام چطور؟ بلوط های قدرتمند از بلوط های کوچک رشد می کنند. یا ادغام کارهای پیشگیرانه ساده در زندگی روزمره چطور؟ هر اونس پیشگیری ارزش یک پوند درمان را دارد. مصرف یک سیب در هر روز شما را از دکتر دور نگه می دارد. کد تمیز ریشه های عمیق خرد را در زیر فرهنگ گسترده ما ، یا فرهنگ ما همانطور که قبلاً بوده یا باید باشد ، ارج می نهد و می تواند با دقت به جزئیات باشد.

آراستگی "به عنوان دارویی برای هر درجه از شر"

حتی در ادبیات عظیم معماری نیز ضرب المثل هایی را می یابیم که به این جزئیات مفروض بازمی گردند. به دستگیره های درب mies van der Rohe فکر کنید، این Seiri است. توجه به هر نام متغیر. شما باید یک متغیر را با استفاده از همان مراقبتی که با آن فرزند اول خود را نام گذاری می کنید، نامگذاری کنید.

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

اشکالات ظریف را برای برطرف کردن به دست استادکاران دهید ، میتوان اشکالات بزرگ را با الگو ها بدست ساکنین نیز سپرد.

ادامه در بخش دوم