0
0
Lập trình
Hưng Nguyễn Xuân 1
Hưng Nguyễn Xuân 1xuanhungptithcm

Đánh Giá và Cải Thiện Mã Nguồn ERP Mã Nguồn Mở WebVella với 1.1k Sao trên GitHub - Phần 1

Đăng vào 3 tuần trước

• 3 phút đọc

Giới Thiệu về WebVella

WebVella là một hệ thống ERP mã nguồn mở, phát triển trên nền tảng .NET Framework và hiện đã được nâng cấp lên .NET. Mặc dù nhận được 1.1k sao trên GitHub sau 6 năm hoạt động, nhưng WebVella vẫn thiếu sự hỗ trợ tài chính từ các công ty lớn, điều này đã ảnh hưởng đến việc nâng cấp và bảo trì mã nguồn của nó.

Tuy nhiên, đây lại là một cơ hội tốt cho các lập trình viên để học hỏi từ thực tiễn, tiếp xúc với những mã nguồn mới và tốt hơn. Trong khi nhiều người có thể không quen thuộc với các best practices và conventions trong lập trình, loạt bài viết này sẽ cố gắng cải thiện và giải thích các vấn đề trong mã nguồn của WebVella.

Phân Tích Phương Thức DataSourceQueryAction

Dưới đây là phương thức DataSourceQueryAction mà chúng ta sẽ xem xét:

csharp Copy
[Route("api/v3/en_US/eql-ds")]
[HttpPost]
public ActionResult DataSourceQueryAction([FromBody] JObject submitObj) {
    ResponseModel response = new ResponseModel();
    response.Success = true;

    // Một số xử lý logic...
}

Các Vấn Đề Của Phương Thức

Phương thức này dài và có một số vấn đề như sau:

  1. Tên Phương Thức Không Đúng Convention: Nên đặt tên là QueryByDataSource để phản ánh hành động.
  2. Tên Tham Số Không Hợp Lý: submitObj có thể gây nhầm lẫn; nên đổi thành requestJObject để rõ ràng hơn.
  3. Khởi Tạo ResponseModel Không Hợp Lý: Nên khởi tạo Success = true khi thực sự có kết quả đúng. Việc khởi tạo này không cần thiết ở đầu hàm.
  4. Tên Gọi Model Không Cụ Thể: Nên đặt tên cụ thể hơn như queryModel để tránh sự mơ hồ.
  5. Sử Dụng Region Không Hợp Lý: Thay vì sử dụng region, có thể tách riêng logic vào hàm private để dễ đọc hơn.
  6. Lặp Lại Mã Nguồn: Sử dụng nhiều lần cấu trúc tương tự để trả về kết quả có thể làm cho mã nguồn trở nên khó đọc.
  7. Cấu Trúc Vô Nghĩa: Việc khởi tạo response ở đầu hàm là lãng phí nếu không sử dụng. Nên hoãn lại đến khi cần thiết.

Kết Quả Sau Khi Refactor

Sau khi cải thiện, cấu trúc phương thức rõ ràng và dễ đọc hơn:

csharp Copy
[Route("api/v3/en_US/eql-ds")]
[HttpPost]
public ActionResult QueryEqlDataByDataSource([FromBody] JObject requestJson) {
    if (requestJson == null) return NotFound();

    try {
        var queryModel = InitializeEqlQueryModel(requestJson);

        var dataSource = GetDataSource(queryModel.Name);

        if (dataSource == null) {
            return Ok(GetFailedResponseModel($"DataSource with name '{queryModel.Name}' not found."));
        }
        // Logic xử lý...
    }
    catch (EqlException eqlEx) {
        return Ok(GetFailedResponseModel(eqlEx.Errors.Select(e => new ErrorModel("eql", "", e.Message)).ToList()));
    }
    catch (Exception ex) {
        return Ok(GetFailedResponseModel(ex.Message));
    }
}

Đánh Giá Kết Quả

  • Dễ Đọc Hơn: Phương thức cấu trúc lại rõ ràng hơn, giúp người đọc dễ dàng nắm bắt logic.
  • Quy Tắc Viết Hàm: Thực hiện quy tắc một hàm nên trong một trang màn hình, giúp tăng cường khả năng bảo trì mã.
  • Comment: Tránh sử dụng comment quá nhiều; mã nguồn rõ ràng có thể tự diễn đạt tốt hơn.

Kết Luận

Refactoring là một phần thiết yếu trong lập trình, diễn ra thường xuyên trong quy trình phát triển sản phẩm. Việc này giúp loại bỏ code lỗi thời, cải thiện kỹ thuật lập trình và nâng cao chất lượng sản phẩm. Đừng ngần ngại sửa đổi mã nguồn để phù hợp với thực tế mới.

Mời Góp Ý

Nếu bạn có mã nguồn nào cần xem xét, xin để lại thông tin hoặc liên hệ qua email tại ore@refacore.com. Chúng ta sẽ cùng nhau học hỏi và phát triển.

source: viblo

Gợi ý câu hỏi phỏng vấn
Không có dữ liệu

Không có dữ liệu

Bài viết được đề xuất
Bài viết cùng tác giả

Bình luận

Chưa có bình luận nào

Chưa có bình luận nào