
در برنامه نویسی قواعد و چارچوب های زیادی برای بهتر نوشتن کدها وجود دارد مثل SOLID یا Don`t Repeat Yourself (DRY). این قواعد علاوه بر اینکه باعث میشوند تغییرات در آینده راحتتر باشند، باعث خوانایی و کیفیت بالاتر کدها نیز میشوند.
در این پست قرار است در مورد یکی از قواعدی که اکثرا آن را از کتاب clean code به یاد دارند، به نام Single Level of Abstraction (SLA) صحبت کنیم.
قاعده تک سطح انتزاع یا Single Level of Abstraction یک اصل طراحی است که بیان میکند هر تابع یا متد باید فقط در یک سطح انتزاع (Abstraction) کار کند. به عبارت دیگر، هر تابع باید فقط به انجام یک وظیفهی خاص متمرکز شود و جزئیات پیادهسازی آن وظیفه را در توابع کمکی دیگر پنهان کند. این اصل به این معناست که کد باید به صورت ساختارمند و منظم نوشته شود تا خواننده کد بتواند به راحتی منطق کلی برنامه را درک کند.
به عبارت دیگر ذهن شما در زمان خواندن یک متد، نباید دچار پرش شود و از هدفی که نام تابع پیروی میکند، دور شود.
استفاده از SLA در برنامه نویسی میتواند مزایای زیر را به همراه داشته باشد:
1. خوانایی کد (Readability): کدی که با رعایت این اصل نوشته شده باشد، برای خوانندههای دیگر قابل فهمتر است و کمتر نیاز به توضیحات اضافی دارد.
2. قابلیت نگهداری (Maintainability): کدی که در آن از تک سطح انتزاع پیروی شده باشد، به راحتی قابل تغییر و بهروزرسانی است.
3. توسعهپذیری (Extensibility): این اصل به توسعهدهندگان امکان میدهد تا به راحتی قابلیتهای جدیدی به برنامه اضافه کنند.
4. تست پذیری (Testability): برای کدی که با رعایت SLAP نوشته شده باشد، راحتتر میتوان تست های مختلف را اجرا و پیاده سازی کرد و در نتیجه امکان خطا کمتر خواهد شد.
برای رعایت این اصل در کد نویسی، میتوان به نکات زیر توجه کرد:
1. تجزیه وظایف به توابع کوچکتر: سعی کنید هر تابع فقط یک وظیفهی خاص را انجام دهد و جزئیات پیادهسازی آن را در توابع کمکی بیان کنید.
2. استفاده از نامگذاری مناسب: نام توابع و متغیرها باید به گونهای باشد که منظور و کاربرد آنها را به خواننده کد برساند.
3. اجتناب از توابع بلند: توابع بلند معمولاً نشاندهندهی نقض اصل SLA هستند. سعی کنید توابع خود را کوتاه و مختصر نگه دارید.
برای درک بهتر مثالی را باهم بررسی میکنیم:
فرض کنید کد زیر را داریم که یک آرایه از اعداد را دریافت میکند و میانگین و میانه آنها را محاسبه میکند.

همان طور که میبینید در این کد تمام محاسبات در یک تابع درحال انجام است.
حالا این کد را با رعایت SLA بازنویسی میکنیم:

در این نسخه بازنویسی شده، ما توابع calculateMean و calculateMedian را ایجاد کردیم که هر کدام در یک سطح Abstarction کار میکنند و وظیفهی محاسبه میانگین و میانه را به عهده دارند. تابع displayMeanAndMedian نیز وظیفهی فراخوانی این توابع و نمایش نتایج را بر عهده دارد.
SLA یک اصل طراحی در مهندسی نرمافزار است که به توسعهدهندگان کمک میکند تا کدی خوانا، قابل نگهداری و توسعهپذیر بنویسند. با رعایت این اصل در برنامه نویسی، میتوان به ساخت برنامههایی با کیفیت بالا و قابلیتهای گسترش پذیر دست یافت.