معرفی
بزرگترین وجه تمایز بین یک توسعهدهنده ارشد و یک توسعهدهنده جوان، درک و پیادهسازی الزامات «غیر کاربردی» یک نرمافزار است. هر توسعهدهندهای میتواند کدی بنویسد که نیازمندیهای عملکردی را برآورده کند، اما این تفاوت زمانی رخ میدهد که توسعهدهنده بین خطوط الزامات عملکردی و کدهایی برای الزامات غیرعملکردی بخواند.
بسیار خوب، صبر کنید، برخلاف تصور رایج، نیاز غیر کاربردی فقط مربوط به اعداد «عملکردی» نیست، و تنها در مورد استفاده بهینه از حافظه نیست. همچنین به سه جنبه اصلی غیر کاربردی خلاصه می شود،
- قابلیت نگهداری
- خوانایی
- آزمایش پذیری
و اصول کد پاک به کمک این سه نیاز اصلی غیر کاربردی کد می آیند.
موضوع این وبلاگ مربوط به خوانایی کد است. اغلب مشاهده می شود که در توسعه نرم افزار سازمانی، یک قطعه کد ممکن است فقط یک بار نوشته شود، اما شاید 100 بار در طول عمر خود خوانده و نگهداری شود. از این رو درک رمزی که انسان می تواند بخواند بسیار مهم است.
نقل قول مارتین فاولر - یکی از مورد علاقه من - این است: "هر احمقی می تواند کدی بنویسد که یک کامپیوتر بتواند آن را بفهمد. برنامه نویسان خوب کدی را می نویسند که انسان بتواند آن را درک کند.
اصل "سطح واحد انتزاع".
Single Level of Abstraction (SLAB) - همانطور که از نام آن پیداست، نوشتن یک روش / تابع در یک سطح از انتزاع را توصیه می کند.
اجازه دهید ابتدا به سرعت بفهمیم انتزاع چیست و سطح انتزاع چیست.
انتزاع یک مفهوم اساسی در OOPS است. به طور خلاصه و عامیانه و در مورد پنهان کردن بخش "چگونه" صحبت می کند و فقط "چه" را در معرض دنیای بیرون قرار می دهد. شاید در وبلاگ دیگری در این مورد توضیح بدهم و معنای واقعی آن را توضیح دهم.
سطح انتزاع به جایی می رسد که گروه بندی ذهنی ما عملی می شود. بهتر است تصور شود که توانایی شناختی ما برای ادامه انتزاع از جزئیات عملیات است. به طور کلی، «بلوکهای» مختلف کد در یک متد، نشانگر کلاسیک سطوح مختلف انتزاعات است. این بدان معناست که خواننده کد اکنون باید یک "شاخه" در گروه بندی ذهنی خود ایجاد کند تا آن شرط یا بلوک حلقه را بخواند و دوباره به همان سطحی که بلوک به پایان رسیده است ادغام شود.
به نظر من، این نیز می تواند با پیچیدگی های شناختی و چرخه ای کد مرتبط باشد. تعداد بیشتر از اینها در یک کد نشانه مستقیم این است که کد اصل "SLAB - Single Level of Abstraction" را نقض می کند.
خوب، صحبت کافی است - بیایید به یک مثال ساده نگاه کنیم و ببینیم چگونه در سی شارپ میتوانیم به این اصل دست پیدا کنیم.