Loose coupling and high cohesion are two fundamental principles in software design that are often discussed but it’s difficult.
After many failures, I believe I have found the key to solving the above problem: clearly defining the responsibilities and boundaries of each component. In this article, I will explain why this is a crucial step and provide practical guidance on how to achieve it.
When used Modularity and Domain-Driven Design (DDD) together, they can help to create systems that are easier to maintain, more reliable, and more adaptable to change.
Việc quản lý mã nguồn là rất quan trọng để đảm bảo tính ổn định và hiệu quả của dự án. Hiện nay, có nhiều phương pháp quản lý mã nguồn khác nhau như: Github Flow, Git Flow và Trunk Based. Trong bài viết này, chúng ta sẽ đi vào chi tiết về các phương pháp quản lý mã nguồn này và tìm hiểu xem phương pháp nào phù hợp nhất cho feature team size từ 2 đến 7 người trong giai đoạn phát triển tính năng cho ứng dụng.
Nếu các bạn đã thực hiện unit test
với JUnit4 có một điểm yếu là không hỗ trợ parameters
cho test method
dẫn tới việc phải dupl code rất nhiều gây khó khăn cho việc review, update test case
👎. Điểm yếu này có thể khắc phục bằng TestNG. Rất may, JUnit5 ra đời với nhiều cải tiến, trong đó Parameterized Test
là cải tiến giúp ta khắc phục được điểm yếu trên ❤️.
Ở bài viết How to Write Testable Code có đề cập đế khái niệm Mock
. Vậy Mock
là gì? Và đặc biệt là các sử dụng nó dể thực hiện Unit Test
đơn giản hơn nhé.
Ở bài viết Introduction to Unit Test đã nói lên được sự quan trọng của Unit Test
. Nhưng trước khi áp dụng được Unit Test
vào dự án hiện tại hoặc tương lai thì ta cần phải có một “bước đệm” đó học cách viết Testable Code
(là Production Code
cho phép thực hiện Unit Test
dễ dàng). Việc này theo mình là khó khăn và vì thế bài viết này sẽ tổng hợp một số kinh nghiệm của mình để giúp bạn thực hiện việc này dễ dàng hơn.
Trên con đường trở thành một developer “xịn” thì việc biết và áp dụng thành thạo S.O.L.I.D
là một trong những điều kiện tiên quyết. Nó giúp ta định hình lại tư duy code rất nhiều như việc tổ chắc code, phân chia vai trò và tương tác giữa các module, class, method… Từ đó giúp code dễ đọc, dễ hiểu, dễ maintaince hơn. Nó giúp ta viết các Testable Code
để thực hiện Unit Code
. Nó là nguyên lý được áp dụng vào IoC/DI
. Và còn nhiều ứng dụng khác. Nhưng quan trọng nó sẽ giúp bạn được tăng lương hoặc phỏng vấn tốt hơn đó 😸.
Vào năm 2015 có một sự kiện làm thay đổi suy nghĩ của mình về Testing
trong quy trình phát triển phần mềm. Đây là lần đầu tiên mình phải viết report 5 whys 9 steps
. Nguyên nhân chính của vấn đề này là mình xem nhẹ Unit Test
và hậu quả thì khá nặng nề. Vì sao thì các bạn xem tiếp bài viết nhé ;)).
Vào năm 2012, khi mình vừa mới gia nhập gia đình Global CyberSoft, bước chân vào thế giới lập trình với nhiều bỡ ngỡ 😅 thì 2 khái niệm Inversion of Control (IoC)
và Dependency Injection (DI)
là khó nhằn nhất với mình nhưng nó lại là nền tảng cho những ứng dụng sau này. Cùng mình tìm hiểu vì sao nó lại quan trọng như thế nhé.