C # 함수 들여 쓰기

Nov 11 2020

현재 코드에서 들여 쓰기를 개선하려고합니다. 리뷰와 개선 사항을 듣고 싶습니다.

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);
        }
    }
}

답변

5 Dennis_E Nov 11 2020 at 20:22

내가 사용할 두 곳이 있습니다 var.

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

더 이상 using 블록 주위에 중괄호를 둘 필요가 없으므로 들여 쓰기 수준을 한 단계 절약 할 수 있습니다.

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

첫 번째 매개 변수를 줄 끝에 놓고 나머지는 새 줄에 두지 마십시오. 새 행에도 첫 번째 매개 변수를 넣으십시오.

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

새 줄에서 쿼리 문자열을 시작하는 경우 한 들여 쓰기 수준 뒤로 이동할 수 있습니다.

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

Dennis_E는 좋은 조언이 있지만 제가 다르게 할 두 가지 항목이 있습니다.

  1. SQL 삽입 문은있는 그대로 보입니다. 코드는 잘 읽히지 만 클래스에서 문을 저장하기 위해 개인 상수를 선언합니다.

  2. 개체 이니셜 라이저에 대한 중괄호를 자체 줄에도 넣으십시오.

    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
    });
    

들여 쓰기와 관련이없는 추가 관찰 :

  • 매개 변수의 이름을 PascalCase 대신 camelCase로 바꿉니다. C #의 관용적 이름 지정 규칙은 것 quantityInvolved보다는 _QuantityInvolved.

    사소하게 들릴 수 있지만 Shift 키 및 / 또는 밑줄 키를 누르면 입력 속도가 느려집니다. 그것은 "천 번의 종이에 베인 죽음"입니다. 속도를 조금만 줄이는 것은 그 자체로 중요하지 않습니다. 코드를 입력하는 동안이 작업을 매일 수백 번 곱하면 합산됩니다.

BCdotWEB Nov 13 2020 at 14:54

14 개의 매개 변수가있는 메소드가 있습니다. 너무 많습니다. 또한 이러한 매개 변수의 이름은 C #에서 일반적으로 사용되는 이름 인 camelCased를 따르지 않으며 밑줄 접두사가 없습니다.

a를 구성 ComplaintModel하고 전달 하지 않는 이유는 무엇 InsertComplaint()입니까?


DataAccessIMHO는 너무 일반적인 이름입니다. 이를 수십 가지 방법으로 채우고 모든 데이터베이스 논리를 중앙 집중화하고 관리 할 수 ​​없게됩니다. 불만과 관련된 방법 만 가지고 있거나 전체 CQRS 를 사용하는 경우 "ComplaintsService"를 사용하는 것을 고려하십시오 .


이름을 무의미하게 축약하지 마십시오. 나는 함께 살 수 conn있지만 (내가 선호 mySqlConnection하지만 ConnString) 무의미합니다. 라는 클래스의 문제를 방지하기 위해이 작업을 수행 ConnectionString했지만 해당 클래스의 이름을 변경해야합니다.


적절한 이름을 지정하십시오 : List<ComplaintModel> complaint말 그대로 불만 목록이기 때문에 잘못된 것이므로 complaints.


길어질 때 나는 인라인 SQL의 팬이 아닙니다. 저는 .SQL 스크립트를 내장 한 다음 QueryRetriever를 사용하여 읽는 것을 좋아 합니다. 장점은 이러한 .SQL 스크립트도 Visual Studio에서 색상으로 구분된다는 것입니다 (예 : SQL Server 대 MySql 대 Oracle 등과 같은 쿼리 유형에 따라 다른 확장명을 갖는 방법이 있었으면했지만).