diff --git a/docs/coding-practices/DRY.md b/docs/coding-practices/DRY.md new file mode 100644 index 0000000..7569221 --- /dev/null +++ b/docs/coding-practices/DRY.md @@ -0,0 +1,54 @@ +--- +sidebar_position: 3 +--- + +## DRY + +````php +//bad + +calculateExpectedSalary(); + $experience = $developer->getExperience(); + $githubLink = $developer->getGithubLink(); + $data = [ + $expectedSalary, + $experience, + $githubLink + ]; + + render($data); + } +} + +function showManagerList(array $managers): void +{ + foreach ($managers as $manager) { + $expectedSalary = $manager->calculateExpectedSalary(); + $experience = $manager->getExperience(); + $githubLink = $manager->getGithubLink(); + $data = [ + $expectedSalary, + $experience, + $githubLink + ]; + + render($data); + } +} + +//good +function showList(array $employees): void +{ + foreach ($employees as $employee) { + render([ + $employee->calculateExpectedSalary(), + $employee->getExperience(), + $employee->getGithubLink() + ]); + } +} +```` \ No newline at end of file diff --git a/docs/coding-practices/formatingcode.md b/docs/coding-practices/formatingcode.md new file mode 100644 index 0000000..c94967d --- /dev/null +++ b/docs/coding-practices/formatingcode.md @@ -0,0 +1,114 @@ +--- +sidebar_position: 3 +--- + +## Định dạng theo chiều dọc + +- Code của bạn không nên quá dày đặc theo chiều dọc, khai báo biến có thể viết liền lại với nhau và không nên có comment hoặc ngăn cách chúng bằng 1 dòng trống, điều đó phá vỡ sự liên kết.. +````php +//bad + m_properties = new ArrayList(); + public void addProperty(Property property) { + m_properties.add(property); +} + +//good + m_properties = new ArrayList(); + + public void addProperty(Property property) { + m_properties.add(property); + } +} +```` + +# Khoảng cách giữa các phần +- Gần như tất cả code của bạn được đọc từ trái qua phải, từ trên xuống dưới. Mỗi dòng đại diện cho một biểu thức hoặc một mệnh đề, và mỗi nhóm dòng đại diện cho một mạch logic hoàn chỉnh. Mỗi dòng trống là một dấu hiệu để người đọc xác định một khái niệm mới và riêng biệt +````php + { + if (item.prices != null && item.prices.properties.length > 0) { + let property = "" + item.prices.properties.forEach((it: ItemPropertyProps) => { + property = `${property}${it.name}, ` + }) + return property.substring(0, property.length - 2) + } + return null +} +```` + +# Các hàm phụ thuộc nhau. +- Nếu có một hàm gọi một hàm khác, chúng nên đặt gần nhau. Nếu có thể, hàm gọi nên ở trên hàm được goi, tạo một dòng chảy mã nguồn từ mức cao đến mức thấp. Cũng đừng thu nhỏ font chữ để tăng số lượng ký tự trên 1 dòng màn hình. +````php +format('y-m-d'); +//good +format('y-m-d'); +```` + +## tránh lồng quá nhiều và nên return sớm +- Quá nhiều if else lồng nhau sẽ khiến code tăng độ phức tạp, khó debug. Giảm sự phức tạp bằng cách giảm số if else lồng nhau xuống ít nhất có thể. Return sớm chính là một cách giảm số lần lồng nhau. +````php +//bad +