Thụt lề cho các hàm c #

Nov 11 2020

Tôi chỉ đang tìm cách cải thiện thụt lề trên mã hiện tại của mình. Tôi rất vui khi nghe bất kỳ đánh giá và cải tiến nào.

public class DataAccess
{

    public List<ComplaintModel> GetComplaint(string _OrderNumber)
    {
        throw new NotImplementedException();
    }

    public void InsertComplaint(
        DateTime _Date,
        string _OrderNumber,
        string _CustomerName,
        string _CustomerContactName,
        string _Telephone,
        string _Email,
        string _CustomerReference,
        string _Product,
        string _PackSize,
        string _BatchNumber,
        DateTime _BestBeforeDate,
        string _QuantityInvolved,
        string _Details, 
        string _Comments)
    {
        using(MySqlConnection conn = new MySqlConnection(ConnectionString.ConnString))
        {
            List<ComplaintModel> complaint = new List<ComplaintModel>();

            complaint.Add(new ComplaintModel { Date = _Date,
                OrderNumber = _OrderNumber,
                CustomerName = _CustomerName,
                CustomerContactName = _CustomerContactName,
                Telephone = _Telephone,
                Email = _Email,
                CustomerReference = _CustomerReference,
                Product = _Product,
                PackSize = _PackSize,
                BatchNumber = _BatchNumber,
                BestBeforeDate = _BestBeforeDate,
                QuantityInvolved = _QuantityInvolved,
                Details = _Details,
                Comments = _Comments});

            conn.Execute(@"INSERT INTO customer_complaints 
                        (date_taken, order_number, customer_name, customer_contact, telephone, email, customer_reference, product, pack_size, batch_lot_number,
                        best_before_date, quantity_involved, details, comments) 
                        VALUES (@Date, @OrderNumber, @CustomerName, @CustomerContactName, @Telephone, @Email, @CustomerReference, @Product, @PackSize, @BatchNumber,
                        @BestBeforeDate, @QuantityInvolved, @Details, @Comments)", complaint);
        }
    }
}

Trả lời

5 Dennis_E Nov 11 2020 at 20:22

Có hai nơi tôi sẽ sử dụng var:

var conn = new MySqlConnection(ConnectionString.ConnString)
var complaint = new List<ComplaintModel>();

Bạn không còn phải đặt các dấu ngoặc nhọn xung quanh một khối đang sử dụng, tiết kiệm cho bạn một mức thụt lề:

using var conn = new MySqlConnection(ConnectionString.ConnString);

Không đặt tham số đầu tiên ở cuối dòng và phần còn lại trên một dòng mới. Đặt tham số đầu tiên trên một dòng mới:

complaint.Add(new ComplaintModel {
    Date = _Date,
    ...

Nếu bạn bắt đầu chuỗi Truy vấn trên một dòng mới, bạn có thể di chuyển nó trở lại một mức thụt lề:

conn.Execute(
    @"INSERT INTO customer_complaints
    ...
3 GregBurghardt Nov 11 2020 at 21:44

Dennis_E có một số lời khuyên tốt, nhưng có hai mục tôi sẽ làm khác.

  1. Câu lệnh chèn SQL trông vẫn ổn. Mã đọc tốt, nhưng tôi sẽ khai báo một hằng số riêng trong lớp để lưu trữ câu lệnh.

  2. Đặt các dấu ngoặc nhọn cho trình khởi tạo đối tượng của bạn trên các dòng riêng của chúng:

    complaint.Add(new ComplaintModel     
    {
        Date = _Date,
        OrderNumber = _OrderNumber,
        CustomerName = _CustomerName,
        CustomerContactName = _CustomerContactName,
        Telephone = _Telephone,
        Email = _Email,
        CustomerReference = _CustomerReference,
        Product = _Product,
        PackSize = _PackSize,
        BatchNumber = _BatchNumber,
        BestBeforeDate = _BestBeforeDate,
        QuantityInvolved = _QuantityInvolved,
        Details = _Details,
        Comments = _Comments
    });
    

Một số quan sát bổ sung không liên quan đến thụt đầu dòng:

  • Đổi tên các tham số của bạn thành camelCase thay vì PascalCase với dấu gạch dưới hàng đầu. Quy ước đặt tên thành ngữ trong C # sẽ quantityInvolvedđúng hơn _QuantityInvolved.

    Nghe có vẻ không đáng kể, nhưng việc chạm vào phím shift và / hoặc phím gạch dưới sẽ làm chậm tốc độ nhập của bạn. Đó là "cái chết bởi một ngàn vết cắt giấy." Một chút giảm tốc độ tự nó không quan trọng. Nhân nó với hàng trăm lần mỗi ngày bạn làm điều này trong khi nhập mã và nó sẽ cộng lại.

BCdotWEB Nov 13 2020 at 14:54

Bạn có một phương thức với mười bốn tham số, quá nhiều. Tên của các tham số này cũng không theo tên thường được sử dụng trong C #: camelCased và không có tiền tố gạch dưới.

Tại sao không xây dựng một ComplaintModelvà chuyển nó cho InsertComplaint()?


DataAccessIMHO là một cái tên quá chung chung. Bạn sẽ bị cám dỗ để điền vào điều này với hàng tá phương pháp, tập trung tất cả logic cơ sở dữ liệu của bạn ở đó, và nó sẽ trở nên không thể quản lý được. Hãy xem xét có một "Dịch vụ khiếu nại" chẳng hạn, nơi bạn chỉ có các phương pháp liên quan đến khiếu nại, hoặc thậm chí truy cập CQRS đầy đủ .


Đừng viết tắt tên một cách vô nghĩa. Tôi có thể sống với conn(mặc dù tôi muốn hơn mySqlConnection), nhưng ConnStringvô nghĩa. Tôi hiểu rằng bạn đã làm điều này để tránh các vấn đề với lớp được đặt tên ConnectionString, nhưng sau đó bạn nên thay đổi tên của lớp đó.


Đặt tên riêng cho mọi thứ: List<ComplaintModel> complaintlà sai vì nó theo nghĩa đen là một danh sách các lời phàn nàn, và do đó nó nên được gọi như vậy complaints.


Tôi không phải là fan của SQL nội tuyến khi nó trở nên dài dòng. Tôi là người thích nhúng các tập lệnh .SQL và sau đó đọc chúng bằng QueryRetriever . Ưu điểm là các tập lệnh .SQL như vậy cũng được mã hóa màu trong Visual Studio (mặc dù tôi ước có một cách để có các phần mở rộng khác nhau dựa trên loại truy vấn, ví dụ: SQL Server so với MySql và Oracle, v.v.).