نود و هفت چیزی که هر برنامه‌نویسی باید بداند: آشنایی با قانون Single Responsibility

یکی از خصیصه‌های معماری نرم‌افزاری خوب این است که «چیزهایی که ماهیت مشابهی داشته، به دلایل یکسانی دستخوش تغییر می‌شوند و در یک کلام، به یک خانواده تعلق دارند را باید در کنار یکدیگر قرار داد و الباقی را مجزا ساخت.»

از دید فنی، به چنین قابلیتی Single Responsibility Principle (اصل تک وظیفه‌ای) یا به طور خلاصه SRP گفته می‌شود. به عبارت دیگر، این اصل حاکی از آن است که یک ماژول، کلاس، فانکشن یا هر چیزی می‌بایست وظیفه‌ای واحد داشته، متمرکز بر یک تسک بوده و صرفاً به یک دلیل تغییر یابند نه اینکه به محض مواجه با یک نیاز در هر بخشی از نرم‌افزار، نیاز داشته باشیم تا آن را دستخوش تغییر سازیم. برای روشن‌تر شدن این مسأله، کلاسی فرضی تحت عنوان Employee که دارای ۳ فانکش مختلف است را در نظر می‌گیریم:

public class Employee
{
    public function calculatePayment();
    public function reportHours();
    public function save();
}

برخی برنامه‌نویسان بر این باورند از آنجا که این ۳ فانکشن به نوعی مرتبط با یکدیگر هستند، می‌بایست در قالب یک کلاس تعریف شوند اما این در حالی است که طبق قانون SRP، این ۳ فانکشن بنا به دلایلی کاملاً متفاوت ممکن است نیاز به تغییر کردن داشته باشند. برای مثال، فانکشن ()calculatePayment زمانی می‌بایست تغییر یابد که حقوق و مزیا کم‌ و زیاد شوند، فانکشن ()reportHours هم زمانی تغییر خواهد یافت که نحوهٔ گزارش‌دهی به مدیران تغییر کند و فانکشن ()save هم هر موقع که دیتابیس یا اسکمای برخی جداول تغییر یابد باید ریفکتور شود.

می‌بینیم که ۳ دلیل مختلف برای تغییر یافتن فانکشن‌ها پیش‌ روی ما است و این باعث می‌گردد که کلاس Employee بنا به هر دلیلی و به خاطر تغییر در سیاست‌های مرتبط با هر یک از ۳ فانکشن زیرشاخه‌اش دستخوش تغییر قرار گیرد و نکتهٔ مهم‌تر اینکه اگر در دیگر بخش‌های کد وابستگی به این کلاس وجود داشته باشد و کلاس‌های دیگری از این کلاس ارث‌بری کرده باشند، آنها هم دستخوش تغییر خواهند شد!

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

اگر بخواهیم مجدد به مثال فوق بازگردیم، چنانچه کلاس Employee توسط دیگر کلاس‌های ماژول‌های مختلف پروژه استفاده شده باشد، بنابراین اعمال هرگونه تغییر در این کلاس، کلاس‌های دیگر را تحت‌الشعاع خود قرار خواهد داد که در بسیاری از مواقع منجر به ایجاد باگ می‌شود. حال اگر بخواهیم کلاس فوق را بر اساس قانون SRP ریفکتور کنیم، خواهیم داشت:

public class Employee
{
   public function calculatePayment(); 
}

public class EmployeeReporter
{
   public function reportHours(); 
}

public class EmployeeRepository
{
   public function save(); 
}

می‌بینیم که در کد فوق دارای ۳ کلاس مجزا از یکدیگر هستیم که هر کدام از آن‌ها متمرکز بر تسکی اختصاصی هستند. به عبارت دیگر، تمامی فانکشن‌های مرتبط با گزارش‌دهی را می‌توان در کلاس EmployeeReporter قرار داد، تمامی فانکشن‌های مرتبط با دیتابیس را در کلاس EmployeeRepository نوشت و هر آنچه که مرتبط با Business Rules (قوانین کاری) است را در کلاس Employee.

پیاده‌سازی اصولی SRP می‌تواند ضامن معماری‌های نرم‌افزاری خوبی باشد که در آن‌ها میزان Dependency (وابستگی) به صورت حداقلی بوده و اعمال یک تغییر در کد، منجر به ایجاد باگ در سایر بخش‌ها نخواهد شد.

2-1
نود و هفت چیزی که هر برنامه‌نویسی باید بداند: بدهی فنی
بهزاد مرادی
۱۳۹۴/۱۰/۰۸
2-2
نود و هفت چیزی که هر برنامه‌نویسی باید بداند: به کارگیری اصولی از توابع در برنامه نویسی
بهزاد مرادی
۱۳۹۴/۱۰/۰۸
2-3
نود و هفت چیزی که هر برنامه‌نویسی باید بداند: نیاز کاربر چیست؟
بهزاد مرادی
۱۳۹۴/۱۰/۰۸
2-4
نود و هفت چیزی که هر برنامه‌نویسی باید بداند: استاندارهای کدنویسی
بهزاد مرادی
۱۳۹۴/۱۰/۰۸
2-5
نود و هفت چیزی که هر برنامه‌نویسی باید بداند: ساده زیباست
بهزاد مرادی
۱۳۹۴/۱۰/۰۸
2-6
نود و هفت چیزی که هر برنامه‌نویسی باید بداند: آشنایی با مفهوم ریفکتورینگ در کدنویسی
بهزاد مرادی
۱۳۹۴/۱۰/۰۸
2-7
نود و هفت چیزی که هر برنامه‌نویسی باید بداند: نظافت را رعایت کنید!
بهزاد مرادی
۱۳۹۴/۱۰/۰۸
2-8
نود و هفت چیزی که هر برنامه‌نویسی باید بداند: پیش از آن که دیگران را متهم کنید، کد خود را چک کنید!
بهزاد مرادی
۱۳۹۴/۱۰/۰۸
2-9
نود و هفت چیزی که هر برنامه‌نویسی باید بداند: انتخاب ابزار مناسب
بهزاد مرادی
۱۳۹۴/۱۰/۰۸
2-10
نود و هفت چیزی که هر برنامه‌نویسی باید بداند: برنامه های خود را به زبان مشتریان بنویسید!
بهزاد مرادی
۱۳۹۴/۱۰/۰۸
2-11
نود و هفت چیزی که هر برنامه‌نویسی باید بداند: طرح‌های خود را بی‌نقص کنید
بهزاد مرادی
۱۳۹۴/۱۰/۰۸
2-12
نود و هفت چیزی که هر برنامه‌نویسی باید بداند: به چیدمان کدها توجه کنید!
بهزاد مرادی
۱۳۹۴/۱۰/۰۸
2-13
نود و هفت چیزی که هر برنامه‌نویسی باید بداند: نقد و بررسی کدها
بهزاد مرادی
۱۳۹۴/۱۰/۰۸
2-14
نود و هفت چیزی که هر برنامه‌نویسی باید بداند: کامنت‌گذاری را فراموش نکنید
بهزاد مرادی
۱۳۹۴/۱۰/۰۸
2-15
نود و هفت چیزی که هر برنامه‌نویسی باید بداند: تنها توضیحاتی را بنویسید که کدهایتان قادر به شرح آنها نباشند!
بهزاد مرادی
۱۳۹۴/۱۰/۰۸
2-16
نود و هفت چیزی که هر برنامه‌نویسی باید بداند: از کدهای قبلی خود در شرایط مناسب مجدداً استفاده کنید
بهزاد مرادی
۱۳۹۴/۱۰/۰۸
2-17
نود و هفت چیزی که هر برنامه‌نویسی باید بداند: همواره در حال یادگیری موضوعات جدید باشید
بهزاد مرادی
۱۳۹۴/۱۰/۰۸
2-18
نود و هفت چیزی که هر برنامه‌نویسی باید بداند: ویژگی‌های یک API با طراحی مناسب
بهزاد مرادی
۱۳۹۴/۱۰/۰۸
2-19
نود و هفت چیز که هر برنامه‌نویسی باید بداند: از ابتدای کار توسعهٔ اپلیکیشن خود روی فرآیند نصب و دیپلوی آن به طور پیوسته کار کنید
بهزاد مرادی
۱۳۹۴/۱۰/۰۸
2-20
نود و هفت چیز که هر برنامه‌نویسی باید بداند: مدیریت اکسپشن‌ها
بهزاد مرادی
۱۳۹۴/۱۰/۰۹
2-21
نود و هفت چیزی که هر برنامه‌نویسی باید بداند: تمرین آگاهانه لازمهٔ حرفه‌ای شدن است!
بهزاد مرادی
۱۳۹۴/۱۰/۱۸
2-22
نود و هفت چیزی که هر برنامه‌نویسی باید بداند: پشت هر خط از کد شما می‌بایست یک منطق وجود داشته باشد!
بهزاد مرادی
۱۳۹۴/۱۱/۰۷
2-23
نود و هفت چیزی که هر برنامه‌نویسی باید بداند: DSL چیست و چرا آشنایی با آن در حوزهٔ برنامه‌نویسی اهمیت دارد؟
بهزاد مرادی
۱۳۹۴/۱۱/۱۵
2-24
نود و هفت چیزی که هر برنامه‌نویسی باید بداند: از ساختارشکنی نترسید!
بهزاد مرادی
۱۳۹۵/۰۱/۱۶
2-25
نود و هفت چیزی که هر برنامه‌نویسی باید بداند: برای تست نرم‌افزار از دیتای واقعی استفاده کنید
بهزاد مرادی
۱۳۹۵/۰۱/۲۰
2-26
نود و هفت چیزی که هر برنامه‌نویسی باید بداند: حتی یک ارور را هم نادیده نگیرید!
بهزاد مرادی
۱۳۹۵/۰۲/۰۵
2-27
نود و هفت چیزی که هر برنامه‌نویسی باید بداند: فرهنگ استفاده از یک زبان برنامه‌نویسی را در کنار سینتکس آن بیاموزید
بهزاد مرادی
۱۳۹۵/۰۲/۱۵
2-28
نود و هفت چیزی که هر برنامه‌نویسی باید بداند: اکسپش‌ها را به راحت‌ترین شکل ممکن هَندل کنید
بهزاد مرادی
۱۳۹۵/۰۳/۰۹
2-29
نود و هفت چیزی که هر برنامه‌نویسی باید بداند: فرایند توسعه یک نرم‌افزار خوب اصلاً شانسی نیست
بهزاد مرادی
۱۳۹۵/۰۳/۰۹
2-30
نود و هفت چیزی که هر برنامه‌نویسی باید بداند: آشنایی با قانون DRY
بهزاد مرادی
۱۳۹۵/۰۳/۰۹
2-31
نود و هفت چیزی که هر برنامه‌نویسی باید بداند: آشنایی با مراحل توسعهٔ نرم‌افزار
بهزاد مرادی
۱۳۹۵/۰۳/۲۵
2-32
نود و هفت چیزی که هر برنامه‌نویسی باید بداند: به‌کارگیری درست از اصول برنامه‌نویسی شیٔ‌گرا
بهزاد مرادی
۱۳۹۵/۰۴/۱۱
2-33
نود و هفت چیز که هر برنامه‌نویسی باید بداند: اعداد اعشاری با خطای محاسباتی در کامپیوتر ذخیره می‌شوند
بهزاد مرادی
۱۳۹۵/۰۵/۱۷
2-34
نود و هفت چیزی که هر برنامه‌نویسی باید بداند: با مشارکت در پروژه‌های اپن‌سورس، حس جاه‌طلبی خود را ارضاء کنید!
بهزاد مرادی
۱۳۹۵/۰۶/۳۰
2-35
نود و هفت چیزی که هر برنامه‌نویسی باید بداند: قانون طلایی طراحی API
بهزاد مرادی
۱۳۹۵/۰۷/۰۴
2-36
نود و هفت چیزی که هر برنامه‌نویسی باید بداند: کسی که چند سال است کدنویسی می‌کند، اصلاً علامهٔ دهر نیست!
بهزاد مرادی
۱۳۹۵/۰۷/۰۶
2-37
نود و هفت چیزی که هر برنامه‌نویسی باید بداند: کار زیاد ضمانت موفقیت در برنامه‌نویسی نیست!
بهزاد مرادی
۱۳۹۵/۰۷/۰۶
2-38
نود و هفت چیزی که هر برنامه‌نویسی باید بداند: چگونه به یک باگ نگاه کنیم؟
بهزاد مرادی
۱۳۹۵/۰۷/۱۹
2-39
نود و هفت چیزی که هر برنامه‌نویسی باید بداند: با حذف کدهای اضافی، سورس‌کد خود را بهبود بخشید
بهزاد مرادی
۱۳۹۵/۰۷/۲۱
2-40
نود و هفت چیزی که هر برنامه‌نویسی باید بداند: برنامه‌هایی که می‌نویسید را کاربرپسند کنید
بهزاد مرادی
۱۳۹۵/۰۷/۲۱
2-41
نود و هفت چیزی که هر برنامه‌نویسی باید بداند: فرایندهای برون برنامه‌ای، زمان پاسخگویی نرم‌افزار را تحت‌الشعاع خود قرار می‌دهند
بهزاد مرادی
۱۳۹۵/۰۷/۲۱
2-42
نود و هفت چیزی که هر برنامه‌نویسی باید بداند: Build اصولی ارائه کنید
بهزاد مرادی
۱۳۹۵/۰۸/۰۵
2-43
نود و هفت چیزی که هر برنامه‌نویسی باید بداند: استفادهٔ بهینه از ابزارهای کامندلاینی
بهزاد مرادی
۱۳۹۵/۰۸/۲۳
2-44
نود و هفت چیزی که هر برنامه‌نویسی باید بداند: یادگیری هم‌زمان بیش از یک زبان برنامه‌نویسی
بهزاد مرادی
۱۳۹۵/۰۸/۲۳
2-45
نود و هفت چیزی که هر برنامه‌نویسی باید بداند: IDE خود را مثل موم در دست بگیرید
بهزاد مرادی
۱۳۹۵/۰۸/۲۹
2-46
نود و هفت چیزی که هر برنامه‌نویسی باید بداند: با محدودیت‌های خود دست و پنجه نرم کنید
بهزاد مرادی
۱۳۹۵/۰۹/۱۲
2-47
نود و هفت چیزی که هر برنامه‌نویسی باید بداند: همواره بدانید چه چیزی را قرار است کامیت کنید
بهزاد مرادی
۱۳۹۵/۰۹/۱۲
2-48
نود و هفت چیزی که هر برنامه‌نویسی باید بداند: آشنایی با نحوهٔ به‌کارگیری دیتابیس‌های رابطه‌ای
بهزاد مرادی
۱۳۹۶/۰۵/۰۶
2-49
نود و هفت چیزی که هر برنامه‌نویسی باید بداند: آشنایی با مهارت‌های ارتباطی و فراگیری زبان‌های خارجی
بهزاد مرادی
۱۳۹۶/۰۵/۰۷
2-50
نود و هفت چیزی که هر برنامه‌نویسی باید بداند: خود را با مهارت تخمین زدن تجهیز کنید!
بهزاد مرادی
۱۳۹۶/۰۵/۰۹
2-51
نود و هفت چیزی که هر برنامه‌نویسی باید بداند: IDE یا Editor مسأله این است!
بهزاد مرادی
۱۳۹۶/۰۵/۰۹
2-52
نود و هفت چیزی که هر برنامه‌نویسی باید بداند: ارسال پیام خطا به دولوپر توسط نرم‌افزار
بهزاد مرادی
۱۳۹۶/۰۵/۱۰
2-53
نود و هفت چیزی که هر برنامه‌نویسی باید بداند: چیزهای اضافی را لود نکنید!
بهزاد مرادی
۱۳۹۶/۰۵/۱۱
2-54
نود و هفت چیزی که هر برنامه‌نویسی باید بداند: چه‌موقع و چگونه از راه‌کارهای موقتی در کدنویسی استفاده کنیم؟
بهزاد مرادی
۱۳۹۶/۰۵/۱۶
2-55
نود و هفت چیزی که هر برنامه‌نویسی باید بداند: استفادهٔ نادرست از اینترفیس‌ها را غیرممکن سازید
بهزاد مرادی
۱۳۹۶/۰۵/۱۷
2-56
نود و هفت چیزی که هر برنامه‌نویسی باید بداند: تا حد ممکن همه‌ چیز را شفاف‌سازی کنید
بهزاد مرادی
۱۳۹۶/۰۵/۱۸
2-57
نود و هفت چیزی که هر برنامه‌نویسی باید بداند: ضرورت آشنایی با مفاهیم کانکارنسی و پاراللیزم
بهزاد مرادی
۱۳۹۶/۰۵/۱۸
2-58
نود و هفت چیزی که هر برنامه‌نویسی باید بداند: یافتن راه‌کارهای ساده برای مشکلات سخت
بهزاد مرادی
۱۳۹۶/۰۵/۱۸
2-59
نود و هفت چیزی که هر برنامه‌نویسی باید بداند: دولوپری که نداند Polymorphism چیست، دولوپر نیست!
بهزاد مرادی
۱۳۹۶/۰۵/۲۱
2-60
نود و هفت چیزی که هر برنامه‌نویسی باید بداند: تستر‌های نرم‌افزار دشمن دولوپرها نیستند!
بهزاد مرادی
۱۳۹۶/۰۵/۲۲
2-61
نود و هفت چیزی که هر برنامه‌نویسی باید بداند: همواره یک نسخه از نرم‌افزار برای ریلیس داشته باشید
بهزاد مرادی
۱۳۹۶/۰۵/۲۳
2-62
نود و هفت چیزی که هر برنامه‌نویسی باید بداند: فقط سورس‌کد است که حرف اول و آخر را می‌زند
بهزاد مرادی
۱۳۹۶/۰۵/۲۳
2-63
نود و هفت چیزی که هر برنامه‌نویسی باید بداند: فقط کد نزنید بلکه Build Process را نیز مدنظر قرار دهید
بهزاد مرادی
۱۳۹۶/۰۵/۲۵
2-64
نود و هفت چیزی که هر برنامه‌نویسی باید بداند: اهمیت برنامه‌نویسی دونفره
بهزاد مرادی
۱۳۹۶/۰۵/۲۶
2-65
نود و هفت چیزی که هر برنامه‌نویسی باید بداند: آشنایی با تفاوت Static Typing و Dynamic Typing در برنامه‌نویسی
بهزاد مرادی
۱۳۹۶/۰۵/۲۸
2-66
نود و هفت چیزی که هر برنامه‌نویسی باید بداند: تا حد ممکن از نمایش ارورها برای کاربر اجتناب کنید!
بهزاد مرادی
۱۳۹۶/۰۵/۳۰
2-67
نود و هفت چیزی که هر برنامه‌نویسی باید بداند: به چه برنامه‌نویسی حرفه‌ای می‌گویند؟
بهزاد مرادی
۱۳۹۶/۰۶/۰۴
2-68
نود و هفت چیزی که برنامه‌نویسی باید بداند: از ورژن کنترل غافل نشوید!
بهزاد مرادی
۱۳۹۶/۰۶/۰۸
2-69
نود و هفت چیزی که برنامه‌نویسی باید بداند: ماوس و کیبورد را کنار بگذارید!
بهزاد مرادی
۱۳۹۶/۰۶/۰۹
2-70
نود و هفت چیزی که هر برنامه‌نویسی باید بداند: کدخوانی کنید!
بهزاد مرادی
۱۳۹۶/۰۶/۱۳
2-71
نود و هفت چیزی که هر برنامه‌نویسی باید بداند: تعاملات اجتماعی کلید موفقیت است!
بهزاد مرادی
۱۳۹۶/۰۶/۱۴
2-72
نود و هفت چیزی که هر برنامه‌نویسی باید بداند: تا حد ممکن دست به اختراع مجدد چرخ نزنید!
بهزاد مرادی
۱۳۹۶/۰۶/۱۶
2-73
نود و هفت چیزی که هر برنامه‌نویسی باید بداند: تا حد ممکن از Singleton Pattern استفاده نکنید
بهزاد مرادی
۱۳۹۶/۰۶/۱۷
2-74
نود و هفت چیزی که هر برنامه‌نویسی باید بداند: وابستگی‌های زیاد دشمن ریفکتورینگ هستند!
بهزاد مرادی
۱۳۹۶/۰۶/۱۸
2-75
نود و هفت چیزی که هر برنامه‌نویسی باید بداند: هرچه تعداد خطوط کد کمتر، بهتر!
بهزاد مرادی
۱۳۹۶/۰۶/۱۹
2-76
نود و هفت چیزی که هر برنامه‌نویسی باید بداند: آشنایی با قانون Single Responsibility
بهزاد مرادی
۱۳۹۶/۰۶/۱۹
2-77
نود و هفت چیزی که هر برنامه‌نویسی باید بداند: همه‌ چیز با یک آری شروع می‌شود!
بهزاد مرادی
۱۳۹۶/۰۶/۲۰
2-78
نود و هفت چیزی که هر برنامه‌نویسی باید بداند: تا حد ممکن همه‌ چیز را خودکار کنید
بهزاد مرادی
۱۳۹۶/۰۶/۲۱
2-79
نود و هفت چیزی که هر برنامه‌نویسی باید بداند: آشنایی با مزایای ابزارهای تحلیل سورس‌کد
بهزاد مرادی
۱۳۹۶/۰۶/۲۲
2-80
نود و هفت چیزی که هر برنامه‌نویسی باید بداند: در تست نرم‌افزار فقط رفتار مورد انتظار را بسنجید
بهزاد مرادی
۱۳۹۶/۰۶/۲۲
2-81
نود و هفت چیزی که هر برنامه‌نویسی باید بداند: تست‌ها علاوه بر صحیح بودن، می‌بایست دقیق هم باشند
بهزاد مرادی
۱۳۹۶/۰۶/۲۴
2-82
نود و هفت چیزی که هر برنامه‌نویسی باید بداند: تست نرم‌افزار و سورس‌کد را آخر شب‌ها و آخر هفته‌ها انجام دهید!
بهزاد مرادی
۱۳۹۶/۰۶/۲۶
2-83
نود و هفت چیزی که هر برنامه‌نویسی باید بداند: مقایسه‌ای مابین مهندسین نرم‌افزار و دیگر مهندسان
بهزاد مرادی
۱۳۹۶/۰۷/۰۱
2-84
نود و هفت چیزی که هر برنامه‌نویسی باید بداند: از نوشتن کدهای اضافی پرهیز کنید
بهزاد مرادی
۱۳۹۶/۰۷/۰۲
2-85
نود و هفت چیزی که هر برنامه‌نویسی باید بداند: اهمیت برنامه‌نویسی دونفره در کدنویسی را هرگز نادیده نگیرید
بهزاد مرادی
۱۳۹۶/۰۷/۰۴
2-86
نود و هفت چیزی که هر برنامه‌نویسی باید بداند: منفی در مفنی می‌شود مثبت!
بهزاد مرادی
۱۳۹۶/۰۷/۰۸
2-87
نود و هفت چیزی که هر برنامه‌نویسی باید بداند: کدنویسی تمیز و اصولی یک باید است
بهزاد مرادی
۱۳۹۶/۰۷/۰۹
2-88
نود و هفت چیزی که هر برنامه‌نویسی باید بداند: ابزارهای یونیکسی دوست دولوپرها هستند!
بهزاد مرادی
۱۳۹۶/۰۷/۱۷
2-89
نود و هفت چیزی که هر برنامه‌نویسی باید بداند: استفادهٔ درست از الگوریتم‌ها و دیتا استراکچرها
بهزاد مرادی
۱۳۹۶/۰۷/۲۲
2-90
نود و هفت چیزی که هر برنامه‌نویسی باید بداند: با لاگ‌گیری Verbose دچار دردسر خواهید شد!
بهزاد مرادی
۱۳۹۶/۰۸/۰۲
2-91
نود و هفت چیزی که هر برنامه‌نویسی باید بداند: درک تفاوت مفاهیم DRY و WET در کدنویسی بهینه
بهزاد مرادی
۱۳۹۶/۰۸/۰۳
2-92
نود و هفت چیزی که هر برنامه‌نویسی باید بداند: تعامل مابین دولوپرها و تسترها
بهزاد مرادی
۱۳۹۶/۰۹/۱۱
2-93
نود و هفت چیزی که هر برنامه‌نویسی باید بداند: طوری کد بزنید که گویی قرار است تا آخر عمر سورس‌کدتان را ساپورت کنید!
بهزاد مرادی
۱۳۹۶/۰۹/۱۱
2-94
نود و هفت چیزی که هر برنامه‌نویسی باید بداند: تا حد ممکن فانکشن‌های کوچک بنویسید
بهزاد مرادی
۱۳۹۶/۱۰/۱۶
2-95
نود و هفت چیزی که هر برنامه‌نویسی باید بداند: برای دولوپرها تست بنویسید نه برای ماشین‌ها!
بهزاد مرادی
۱۳۹۶/۱۰/۱۸
2-96
نود و هفت چیزی که هر برنامه‌نویسی باید بداند: مراقب سورس‌کد باشید!
بهزاد مرادی
۱۳۹۶/۱۰/۱۸
2-97
نود و هفت چیزی که هر برنامه‌نویسی باید بداند‍: خیلی به حرف‌های مشتریان اعتماد نکنید!
بهزاد مرادی
۱۳۹۶/۱۰/۱۸
rocket
نظرات
اگر login نکردی برامون ایمیلت رو بنویس: