0

次のシナリオのコードを書くための最も効果的な方法は何でしょうか...

データを収集してデータベースに挿入する単純なWebフォームがあります。次の例のうち、最も効率的または優れているのはどれですか。また、その理由は何ですか。

私は現在、最初のシナリオのバージョンを使用しています(ただし、より多くのフィールドと適切なHTMLエンコーディングなどがあります)。読みやすくなっていますが、パフォーマンスと品質のコードが無駄になっているのでしょうか。

コードシナリオ1

void GetData() {
    FormResponse myFormResponse = new FormResponse();
    FormResponse.Name = txtName.Text;
    FormResponse.Email = txtEmail.Text;
    FormResponse.Message = txtMessage.Text;

    StoreData(myFormResponse);
}

void StoreData(FormResponse myFormResponse) {
    ... //Database connection code

    DbCommand.Parameters.AddWithValue("@Name", myFormResponse.Name);
    DbCommand.Parameters.AddWithValue("@Email", myFormResponse.Email);
    DbCommand.Parameters.AddWithValue("@Message", myFormResponse.Message);

    ...//More DB handler code
}

Public Class FormResponse {
    public string Name { get; set; }
    public string Email { get; set; }
    public string Message { get; set; }
}

コードシナリオ2

void GetData() {

    string strName = txtName.Text;
    string strEmail = txtEmail.Text;
    string strMessage = txtMessage.Text;

    StoreData(strName, strEmail, strMessage);
}

void StoreData(string strName, string strEmail, string strMessage) {
    ... //Database connection code

    DbCommand.Parameters.AddWithValue("@Name", strName);
    DbCommand.Parameters.AddWithValue("@Email", strEmail);
    DbCommand.Parameters.AddWithValue("@Message", strMessage);

    ...//More DB handler code
}
4

1 に答える 1

0

このようなコーディングを行うときは、常に長期的なことを考え、プログラムを可能な限り拡張可能にし、将来の開発者が読みやすいようにする必要があります。はい、常にパフォーマンスについて考えてください。ただし、この場合、パフォーマンスの違い(ある場合)はごくわずかです。

常にオブジェクト指向を念頭に置いてコーディングするため、FormResponseオブジェクトがModelsクラスにある場合、最初のアプローチが私の理想的な選択になります。2つのフォームがある場合、このオブジェクトを簡単に再利用できます。また、この個々のオブジェクトに添付された追加データを送信する必要がある場合、つまりプライベート関数(objectName)が変更されない場合は、関数呼び出しを引き続き適用できます。

私が言うように、あなたがするすべてのことにおいて常に拡張性について考えてください。応答関数で名前のフォーマットが必要な場合は、次のようにします。

public FormRespose() 
{
     public string Name {get; set;}
     public string FirstName { // use Name here to get first name from it, or turn uppercase, lowercase, whatever }
}

うまくいけば、これは私の主張をするのに十分なはずです。

于 2012-11-26T13:44:42.480 に答える