آیا از کدهای نامرتب ناامید شدهاید یا سرعتتان را کند کرده است مطمئن شوید که خودتان چنین کدی را ننویسید! این دوره به شما یاد میدهد که چگونه کدهای تمیز، خوانا و قابل نگهداری بنویسید که انسان بتواند آن را به وضوح بخواند و درک کند.
آنچه یاد خواهید گرفت:
بیشتر نرم افزارها برای دوام طولانی ساخته شدهاند و یکی از چالشهای کلیدی این است که بدهیهای فنی را از خود دور نگه دارید. استفاده از بهترین شیوههای برنامه نویسی برای موفقیت بلندمدت هر پروژه نرمافزاری بسیار مهم است. در این دوره، Java SE 17 Best Practices، شما توانایی نوشتن کدهایی با کیفیت بالا را به دست خواهید آورد که دیگران از خواندن و کار با آن لذت ببرند. ابتدا با اهمیت نامگذاری و نحوه انتخاب نامهای عالی برای کلاسها، متغیرها و متدهای خود آشنا خواهید شد. در مرحله بعد، بهترین روشها را برای ایجاد اشیا، پیادهسازی روشها و ساختارهای متعددی که درگیر هستند، کشف خواهید کرد. سپس، رویههای سطح بالاتری از کدهای پاک را که فراتر از یک کلاس هستند را بررسی خواهید کرد. در نهایت، نکات عملی عملی برای نوشتن تستهای خودکار بهتر را یاد خواهید گرفت. در پایان این دوره، شما مهارتهای لازم برای نوشتن کدهای تمیز، خوانا و قابل نگهداری را خواهید داشت که انسان بتواند آن را به وضوح بخواند و درک کند.
نمونه ویدیوی آموزشی ( زیرنویسها جدا از ویدیو است و میتوانید آنرا نمایش ندهید ) :
[ENGLISH]
01 Course Overview [2mins]
01-01 Course Overview [2mins]
02 Why Care About Best Practices? [9mins]
02-01 Introduction [2mins]
02-02 Benefits of Clean Code [2mins]
02-03 Understanding the Prerequisites [1mins]
02-04 Setting up the Project [2mins]
02-05 Course Overview [2mins]
03 What’s in a Name? [21mins]
03-01 Introduction [2mins]
03-02 Class Names Should Be Specific [3mins]
03-03 Class Names Should Reflect the SRP [3mins]
03-04 Class Names Recap [0mins]
03-05 Variable Names [3mins]
03-06 Checkpoint 02 - Rename Variable [0mins]
03-07 Method Name Basics [2mins]
03-08 Checkpoint 01 - Rename Method [0mins]
03-09 Methods Must Do One Thing [2mins]
03-10 Exercise 01 - Giving Better Names [0mins]
03-11 Methods: Exception to the Rule [2mins]
03-12 Abbreviations and Spelling [3mins]
03-13 Module Summary [1mins]
04 Creating Objects the Right Way [24mins]
04-01 Introduction [0mins]
04-02 Use Java Records [4mins]
04-03 Checkpoint 03 - Use Java Records [0mins]
04-04 Prefer Dependency Injection [4mins]
04-05 Checkpoint 04 - Prefer Dependency Injection [0mins]
04-06 Know the DI Frameworks [1mins]
04-07 Protect with Guard Clauses [3mins]
04-08 Checkpoint 05 - Protect with Guard Clauses [0mins]
04-09 Use Static Factory Methods [3mins]
04-10 Apply Constructor Chaining [3mins]
04-11 Exercise 02 - Improving Object Creation [0mins]
04-12 Recognize Primitive Obsession [3mins]
04-13 Know the Code Smells [1mins]
04-14 Builder Pattern to the Rescue [1mins]
04-15 Module Summary [1mins]
05 Implementing Methods Best Practices [36mins]
05-01 Introduction [1mins]
05-02 Adhere to the CQS Principle [2mins]
05-03 Keep Your Parameter List Short [3mins]
05-04 Demo: Reducing the Parameter List [4mins]
05-05 Demo: Removing Flag Arguments [5mins]
05-06 Prefer Enums Where Appropriate [2mins]
05-07 Checkpoint 06 - Prefer Enums Where Appropriate [0mins]
05-08 Demo: Replace String with LocalDate [1mins]
05-09 Failing Fast in Methods [1mins]
05-10 Exercise 03 - Improving Method Signature [0mins]
05-11 Null Objects - the Next Level [2mins]
05-12 Reducing Verbosity with var [5mins]
05-13 Avoiding Unnecessary Object Creation [1mins]
05-14 Checkpoint 07 - Avoiding Unnecessary Object Creation [0mins]
05-15 Returning Proper Values [4mins]
05-16 Prefer the Optional [3mins]
05-17 Module Summary [2mins]
06 Looking Closely at Strings and Numbers [11mins]
06-01 Introduction [1mins]
06-02 Use the StringBuilder in Loops [2mins]
06-03 Prefer Text Blocks [1mins]
06-04 Easy Reading with Separators [1mins]
06-05 Use BigDecimal Where Precision Matters [5mins]
06-06 Checkpoint 09 - Use BigDecimal [0mins]
06-07 Module Summary [1mins]
07 Iterating and Branching - the Good and the Better [19mins]
07-01 Introduction [0mins]
07-02 Writing Cleaner Conditionals [3mins]
07-03 Exercise 05 - Improve Conditional Statement [0mins]
07-04 Keeping Ternary Expressions Simple [2mins]
07-05 Switch to Switch Expressions [2mins]
07-06 Checkpoint 10 - Switch to Switch Expressions [0mins]
07-07 How Not to if-else [4mins]
07-08 Prefer Streams over For Loops [4mins]
07-09 Checkpoint 11 - Prefer Streams Over For Loops [0mins]
07-10 Avoid Overly Complex Streams [2mins]
07-11 Demo: Running the Search [1mins]
07-12 Module Summary [1mins]
08 Handling Exceptions Gracefully [21mins]
08-01 Introduction [1mins]
08-02 Catch Specific Exceptions [2mins]
08-03 Some RuntimeExceptions Shouldn`t Be Caught [1mins]
08-04 It`s OK to Catch Some RuntimeExceptions [4mins]
08-05 The Rules of the Catch Block [2mins]
08-06 Translate Exceptions [2mins]
08-07 Checkpoint 12 - Rethrow Exceptions [0mins]
08-08 Pass Pertinent Information [4mins]
08-09 Exercise 06 - Handling Exceptions [0mins]
08-10 Use Multi-catch Where Appropriate [1mins]
08-11 Prefer try-with-resources [3mins]
08-12 Checkpoint 13 - Prefer try-with-resources [0mins]
08-13 Module Summary [1mins]
09 Writing Meaningful Comments Only [12mins]
09-01 Introduction [1mins]
09-02 Redundant Comments [1mins]
09-03 Compensating Comments [1mins]
09-04 Checkpoint 14 - Compensating Comments [0mins]
09-05 Logs and Wiki Comments [2mins]
09-06 Commented out Code [1mins]
09-07 Comments That Lie [1mins]
09-08 Legitimate Uses of Comments [4mins]
09-09 Module Summary [1mins]
10 Creating Better Tests [31mins]
10-01 Introduction [3mins]
10-02 Poor Name Tests [4mins]
10-03 Demo: Fixing Poor Name Tests [2mins]
10-04 Clueless Tests [4mins]
10-05 Demo: Making Tests More Focused [2mins]
10-06 Exercise 07 - Break up a test [0mins]
10-07 DRY vs. DAMP [2mins]
10-08 Demo: DRY vs. DAMP [3mins]
10-09 Consider Using Libraries [1mins]
10-10 The Benefit of Helpful Messages [1mins]
10-11 Checkpoint 15 - The Benefit of Helpful Messages [0mins]
10-12 Demo: Writing Helpful Messages [2mins]
10-13 Making Tests Independent [2mins]
10-14 Favor Composition in Test Infrastructure [2mins]
10-15 Demo: Refactoring to Composition [1mins]
10-16 Further Study [1mins]
10-17 Module Summary [1mins]
11 Course Wrap-up [8mins]
11-01 Learn Modern Java [2mins]
11-02 Maintaining Clean Code [3mins]
11-03 Further Study Recap [2mins]
11-04 Thank You [1mins]
[فارسی]
01 بررسی اجمالی دوره [2 دقیقه]
01-01 بررسی اجمالی دوره [2 دقیقه]
02 چرا به بهترین شیوهها اهمیت میدهیم؟ [9 دقیقه]
02-01 مقدمه [2 دقیقه]
02-02 مزایای Clean Code [2 دقیقه]
02-03 آشنایی با پیش نیازها [1 دقیقه]
02-04 راه اندازی پروژه [2 دقیقه]
02-05 بررسی اجمالی دوره [2 دقیقه]
03 در یک نام چیست؟ [21 دقیقه]
03-01 مقدمه [2 دقیقه]
03-02 نام کلاسها باید مشخص باشد [3 دقیقه]
03-03 نام کلاسها باید منعکس کننده SRP باشد [3 دقیقه]
03-04 خلاصه نام کلاسها [0 دقیقه]
03-05 نام متغیرها [3 دقیقه]
03-06 نقطه بازرسی 02 - تغییر نام متغیر [0 دقیقه]
03-07 اصول نام روش [2 دقیقه]
03-08 نقطه بازرسی 01 - تغییر نام روش [0 دقیقه]
03-09 روشهایی که باید یک چیز را انجام دهند [2 دقیقه]
03-10 تمرین 01 - نامگذاری بهتر [0 دقیقه]
03-11 روش ها- استثنا از قانون [2 دقیقه]
03-12 اختصارات و املا [3 دقیقه]
03-13 خلاصه ماژول [1 دقیقه]
04 ایجاد اشیاء به روش صحیح [24 دقیقه]
04-01 مقدمه [0mins]
04-02 استفاده از جاوا رکورد [4 دقیقه]
04-03 ایست بازرسی 03 - از رکوردهای جاوا استفاده کنید [0 دقیقه]
04-04 ترجیح تزریق وابستگی [4 دقیقه]
04-05 Checkpoint 04 - Prefer Dependency Injection [0 دقیقه]
04-06 چارچوبهای DI را بشناسید [1 دقیقه]
04-07 محافظت با بندهای محافظ [3 دقیقه]
04-08 ایست بازرسی 05 - محافظت با بندهای گارد [0 دقیقه]
04-09 استفاده از روشهای کارخانه ایستا [3 دقیقه]
04-10 اعمال زنجیرهسازی سازنده [3 دقیقه]
04-11 تمرین 02 - بهبود ایجاد شی [0 دقیقه]
04-12 وسواس اولیه را بشناسید [3 دقیقه]
04-13 رمز بو را بشناسید [1 دقیقه]
04-14 الگوی سازنده برای نجات [1 دقیقه]
04-15 خلاصه ماژول [1 دقیقه]
05 بهترین روشهای پیادهسازی [36 دقیقه]
05-01 مقدمه [1 دقیقه]
05-02 به اصل CQS پایبند باشید [2 دقیقه]
05-03 فهرست پارامترهای خود را کوتاه نگه دارید [3 دقیقه]
05-04 نسخهی نمایشی- کاهش فهرست پارامترها [4 دقیقه]
05-05 نسخهی نمایشی- حذف آرگومانهای پرچم [5 دقیقه]
05-06 ترجیح دادن فهرستها در جایی که مناسب است [2 دقیقه]
05-07 نقطه بازرسی 06 - ترجیح دادن فهرستها در جایی که مناسب است [0 دقیقه]
05-08 نسخهی نمایشی- جایگزین کردن رشته با LocalDate [1 دقیقه]
05-09 شکست سریع در روشها [1 دقیقه]
05-10 تمرین 03 - بهبود امضای روش [0 دقیقه]
05-11 اشیاء پوچ - سطح بعدی [2 دقیقه]
05-12 کاهش پرحرفی با var [5 دقیقه]
05-13 اجتناب از ایجاد اشیاء غیر ضروری [1 دقیقه]
05-14 ایست بازرسی 07 - اجتناب از ایجاد اشیاء غیر ضروری [0 دقیقه]
05-15 برگرداندن مقادیر مناسب [4 دقیقه]
05-16 ترجیح دادن اختیاری [3 دقیقه]
05-17 خلاصه ماژول [2 دقیقه]
06 نگاهی دقیق به رشتهها و اعداد [11 دقیقه]
06-01 مقدمه [1 دقیقه]
06-02 استفاده از StringBuilder در حلقهها [2 دقیقه]
06-03 بلوکهای متن ترجیحی [1 دقیقه]
06-04 خواندن آسان با جداکننده [1 دقیقه]
06-05 از BigDecimal در جایی که دقت مهم است [5 دقیقه]
06-06 نقطه بازرسی 09 - استفاده از BigDecimal [0mins]
06-07 خلاصه ماژول [1 دقیقه]
07 تکرار و انشعاب - خوب و بهتر [19 دقیقه]
07-01 مقدمه [0mins]
07-02 شرایط پاکتر نوشتن [3 دقیقه]
07-03 تمرین 05 - بهبود بیانیه شرطی [0 دقیقه]
07-04 ساده نگه داشتن عبارات سه تایی [2 دقیقه]
07-05 رفتن به تغییر عبارات [2 دقیقه]
07-06 نقطه بازرسی 10 - جابهجایی به تغییر عبارات [0 دقیقه]
07-07 How Not to if-else [4 دقیقه]
07-08 ترجیح دادن جریانها به For Loops [4 دقیقه]
07-09 نقطه بازرسی 11 - ترجیح دادن جریانها به حلقهها [0 دقیقه]
07-10 اجتناب از جریانهای بیش از حد پیچیده [2 دقیقه]
07-11 نسخهی نمایشی- اجرای جستجو [1 دقیقه]
07-12 خلاصه ماژول [1 دقیقه]
08 با ظرافت با استثناها برخورد کنید [21 دقیقه]
08-01 مقدمه [1 دقیقه]
08-02 گرفتن استثناهای خاص [2 دقیقه]
08-03 برخی استثناهای زمان اجرا را نباید گرفت [1 دقیقه]
08-04 اشکالی ندارد که برخی از Runtime Exceptions را بگیرید [4 دقیقه]
08-05 قوانین بلوک گرفتن [2 دقیقه]
08-06 ترجمه استثناها [2 دقیقه]
08-07 ایست بازرسی 12 - استثناهای بازپرداخت [0 دقیقه]
08-08 پاس اطلاعات مربوط [4 دقیقه]
08-09 تمرین 06 - رسیدگی به موارد استثنا [0 دقیقه]
08-10 در جاهایی که مناسب است از چند گیر استفاده کنید [1 دقیقه]
08-11 ترجیح دادن تلاش با منابع [3 دقیقه]
08-12 نقطه بازرسی 13 - ترجیح دادن تلاش با منابع [0 دقیقه]
08-13 خلاصه ماژول [1 دقیقه]
09 فقط نوشتن نظرات معنی دار [12 دقیقه]
09-01 مقدمه [1 دقیقه]
09-02 نظرات اضافی [1 دقیقه]
09-03 نظرات جبرانی [1 دقیقه]
09-04 ایست بازرسی 14 - نظرات جبرانی [0 دقیقه]
09-05 گزارشها و نظرات ویکی [2 دقیقه]
09-06 کد نظر داده شده [1 دقیقه]
09-07 نظراتی که دروغ میگویند [1 دقیقه]
09-08 استفاده مشروع از نظرات [4 دقیقه]
09-09 خلاصه ماژول [1 دقیقه]
10 ایجاد تستهای بهتر [31 دقیقه]
10-01 مقدمه [3 دقیقه]
10-02 تست نام ضعیف [4 دقیقه]
10-03 نسخهی نمایشی- رفع تستهای نام ضعیف [2 دقیقه]
10-04 تستهای بدون سرنخ [4 دقیقه]
10-05 نسخهی نمایشی- تمرکز بیشتر تستها [2 دقیقه]
10-06 تمرین 07 - شکستن یک آزمون [0 دقیقه]
10-07 DRY در مقابل DAMP [2 دقیقه]
10-08 نسخه نمایشی- DRY در مقابل DAMP [3 دقیقه]
10-09 استفاده از کتابخانهها را در نظر بگیرید [1 دقیقه]
10-10 مزایای پیامهای مفید [1 دقیقه]
10-11 ایست بازرسی 15 - مزایای پیامهای مفید [0 دقیقه]
10-12 نسخهی نمایشی- نوشتن پیامهای مفید [2 دقیقه]
10-13 مستقل کردن تستها [2 دقیقه]
10-14 ترکیب مطلوب در زیرساخت آزمایش [2 دقیقه]
10-15 نسخهی نمایشی- Refactoring to Composition [1 دقیقه]
10-16 مطالعه بیشتر [1 دقیقه]
10-17 خلاصه ماژول [1 دقیقه]
11 پایان دوره [8 دقیقه]
11-01 یادگیری جاوا مدرن [2 دقیقه]
11-02 حفظ کد تمیز [3 دقیقه]
11-03 خلاصه مطالعه بیشتر [2 دقیقه]
11-04 ممنون [1 دقیقه]
Andrejs یک متخصص تضمین کیفیت با بیش از 6 سال تجربه است. او در اتوماسیون تست تخصص دارد اما اهمیت درگیر شدن زودهنگام در چرخه عمر توسعه نرمافزار را نادیده نمیگیرد - یافتن مسائل در طول تجزیه و تحلیل نیازمندیها به اندازه انجام آزمایشهای دستی و اکتشافی مهم است. او در نوشتن واحد، تستهای یکپارچهسازی و پذیرش برای تعداد زیادی از فناوریها و زمینهها - از اتوماسیون مرورگر گرفته تا لایه Web API و همه راهها تا آزمایش اجزای پیامرسانی Enterprise، تجربه دارد.