Identify Responsibilities and Boundaries: The Key to design a Loose Coupling and High Cohesion system

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.

Comparing Git Flow, Trunk Based and GitHub Flow

Source code management is critical to ensuring project stability, developer velocity, and delivery cadence. Today, several branching workflows are widely used: GitHub Flow, Git Flow, and Trunk-Based Development. In this article, we’ll examine each workflow in depth and explore which strategy best suits feature teams of 2 to 7 engineers during active application feature development.

Comparing Git Flow, Trunk Based and GitHub Flow

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.

Parameterized Test in JUnit 5

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 ❤️.

How to Write Testable Code

In the article Introduction to Unit Test, we highlighted the vital importance of Unit Testing. But before applying unit tests effectively in current or future projects, we need a crucial foundation: learning how to write Testable Code (Production Code designed to allow straightforward unit testing). This is often the hardest hurdle, so this article synthesizes key principles to help you write testable code effortlessly.