Coding Convention
Coding Convention
VS code 1.91.1
Intellij
Các Page sẽ được bỏ trong folder Page và trong folder Page sẽ có các folder của từng page lớn thí dụ Home, Acc
Các tài nguyên file có định dạng khác sẽ bỏ trong folder Assets thí dụ file png, .doc,..
Folder Routes sẽ chứa các đường dẫn của từng page tương ứng với từng folder bên trong folder Pages
Layout sẽ được bỏ trong folder layout
Unltis sẽ là folder chứa các hàm mà sử dụng để thực hiện chức năng nào đó chung
Biến và Hàm
Các biến sử dụng chung sẽ được để ở bên trong redux
Sử dụng lowCamelCase khi đặt tên
currentUser biến bình thường, hàm, hằng số hằng, biến và hàm, UpperCamelCas
CurrentUser đặt cho class (cả chữ cái đầu tiên viết hoa) khi đặ
CURRENT_USER Biến tĩnh và toàn cục tên lớp và UPPER_SNAKE_CASE
khi đặt tên biến toàn cục hoặc biến
tĩnh. Điều này sẽ giúp bạn dễ dàng
phân biệt giữa các biến đơn giản,
hàm, lớp yêu cầu khởi tạo và các
biến được khai báo ở phạm vi mô-
đun toàn cục.
Công cụ hỗ trợ
Css: Tailwind, AntDesign
Icon: React Icon, AntDesign, https://iconify.design/
Modal: AntDesign, React Modal
Lấy Api: axios
IDE: Visua Studio Code
g React bản mới nhất
Cấu Hình Tổng quát
Viết Comment
Line Comment: Đặt trên dòng cần chú thích, bắt đầu bằng '//'
Khối try catch
Block Comment: Đặt trên khối code cần chú thích, bắt đầu và kết thúc bằng '/* */'
IDE
IDE: Visual Studio Code (VSCode)
Phiên bản: Sử dụng phiên bản mới nhất
u Hình Tổng quát
Mock Project - Java Coding Convention
package model.dao; Tên package phải viết bằng chữ thường
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
Phần import các class của java
import util.Constant; được đặt ở cùng nhóm với nhau
import util.Util; và đặt ngay sau khai báo package
import model.bean.Departments;
import model.bean.Designation;
import model.bean.EmpStatus;
import model.bean.EmployeeDetails;
import model.bean.Establishment;
import model.bean.Functions; Phần import các class của mình tự viết thì
import model.form.EmployeeDetailsForm; để ở sau cùng trong vùng import
/**
* EmploymentDetailsDAO
*
* Version 1.0
* Tạo comment cho phần mô tả class tương tự
* Date: 12-11-2013 như thế này
*
* Copyright Lưu ý: Date ở đây được định dạng theo format
* là DD-MM-YYYY
* Modification Logs:
* DATE AUTHOR DESCRIPTION
* -----------------------------------------------------------------------
* 12-11-2013 HuyNT2 Create
*/
public class EmploymentDetailsDAO extends BaseDAO {
Connection con;
PreparedStatement preState; Tên class phải bắt đầu bằng chữ Hoa, các
ResultSet rs; từ nối cũng viết hoa chữ cái đầu
Tên class phải bắt đầu bằng chữ Hoa, các
từ nối cũng viết hoa chữ cái đầu
/**
* get data for Job Details page
* @param establishmentCode
* @return
* @throws DAOException
*/
public EmployeeDetailsForm getDataForUpdateJobDetails(String establishmentCode) throws DAOException {
con = connectDb(Constant.DRIVER, Constant.CONNECT_STRING, Constant.USER, Constant.PASSWORD);
EmployeeDetailsForm form = new EmployeeDetailsForm();
try {
//select data form EmployeeDetails Tạo comment cho hàm tương tự như thế
này
preState = con.prepareStatement("SELECT establishmentCode, jdEmpStatus, jdDoj, jdFunctions, "+
preState.setString(1, establishmentCode);
rs = preState.executeQuery(); "get data for Job Details page" là ví dụ về
nội dung mô tả nhiệm vụ của hàm
while(rs.next()) {
form.setEstablishmentCode(rs.getString(1));
form.setJdEmpStatus(rs.getString(2));
}
while(rs.next()) {
empStatus = new EmpStatus();
empStatus.setEmpStatusId(rs.getInt(1));
empStatus.setEmpStatusName(rs.getString(2));
arrayEmpStatus.add(empStatus);
}
} catch (SQLException e) {
throw new DAOException("Method getDataForUpdateJobDetails error.");
Đối với khối try catch thì tuân thủ theo convention:
} finally { try {
closeConnect(con); // TODO
} } catch (ABCException e) {
return form; // TODO
} } finally {
// TODO
}
if(rs.next()) {
return true;
}
} catch (SQLException e) {
throw new DAOException("Method checkEmployeeDetailsIsExist error.");
} finally {
closeConnect(con);
}
return false;
}
Tên hàm phải bắt đầu bằng chữ thường,
/** các từ nối tiếp theo sẽ viết hoa chữ cái
* insert data for employee đầu
* @param employee
* @throws DAOException
*/
public void insertJobDetails(EmployeeDetails employee) throws DAOException {
con = connectDb(Constant.DRIVER, Constant.CONNECT_STRING, Constant.USER, Constant.PASSWORD);
try {
preState = con.prepareStatement("INSERT INTO EmployeeDetails VALUES(?, ?, ?, ?, ?, ?, NULL, ?, ?) ");
Tên biến phải bắt đầu bằng chữ thường,
preState.setInt(1, employee.getEstablishmentCode()); các từ nối tiếp theo sẽ viết hoa chữ cái
preState.setInt(2, employee.getJdEmpStatus()); đầu
preState.setDate(3, employee.getJdDoj());
Tên biến phải bắt đầu bằng chữ thường,
các từ nối tiếp theo sẽ viết hoa chữ cái
đầu
preState.setInt(4, employee.getJdFunctions());
preState.setInt(5, employee.getJdDept());
preState.setInt(6, employee.getJdDesignation());
preState.setString(7, employee.getNdPFnum());
preState.setString(8, employee.getNdEPSnum());
preState.executeUpdate();
/**
* get data for Update to Details page
* @param establishmentCode
* @return
* @throws DAOException Khối lệnh while có convention như sau:
*/
while throws
public EmployeeDetailsForm getDataForUpdateReportToDetails(String establishmentCode) (điều kiện) {
DAOException {
// TODO Constant.PASSWORD);
con = connectDb(Constant.DRIVER, Constant.CONNECT_STRING, Constant.USER,
EmployeeDetailsForm form = new EmployeeDetailsForm(); }
try {
preState = con.prepareStatement("INSERT INTO Salary VALUES(?, ?, ?, ?)");
preState.setString(1, fr.getEstablishmentCode());
preState.setDate(2, Util.convertStringToSqlDate(fr.getSdDate()));
if("".equals(fr.getSdFixedCTC())) {
preState.setString(3, null);
} else {
preState.setInt(3, Integer.parseInt(fr.getSdFixedCTC()));
} Khối lệnh if có convention như sau:
if (điều kiện) {
preState.executeUpdate(); // TODO
} else {
} catch (SQLException e) { // TODO
throw new DAOException("Method insertSalaryDetails error."); }
} finally {
closeConnect(con); Ví dụ như sau là KHÔNG ĐÚNG:
} if (điều kiện)
} {
} // TODO
}
else {
// TODO
}
Ví dụ như sau là KHÔNG ĐÚNG:
if (điều kiện)
{
// TODO
}
else {
// TODO
}
Variable : userAddress
Method: getUserAddress
File and folder: userController
maven https://drive.google.com/drive/folders/1t_ipYM4IfxSUe2xtSCCwWMH8NPc5pLkN?usp=
yaml
Folder repository chứa các interface được kế thừa lại JpaRepository để tương tác trực tiếp vớ
Mỗi repository sẽ tương ứng với 1 entity
Folder service để chứa các folder của từng service riêng
Từng folder service sẽ chứa 1 interface để định nghĩa các phương thức và 1 cla
class tương tự
a, các
u
a, các
u
ails page" là ví dụ về
iệm vụ của hàm
thường,
chữ cái
NULL, ?, ?) ");
chữ thường,
hoa chữ cái
chữ thường,
hoa chữ cái
để canh biên mà
ằng 4 space
ĐÚNG:
stablishmentCode = ?");
n như sau:
G ĐÚNG:
G ĐÚNG:
MH8NPc5pLkN?usp=sharing
để tương tác trực tiếp với cơ sở dữ liệu
entity
service riêng
các phương thức và 1 class implement lại interface và hiện thực các phương thức đó