2013-03-06 2 views
-1

Au cours des derniers jours, j'ai lu sur les différences entre les propriétés et les méthodes en C# et lors de l'utilisation de chacun. La plupart des articles/questions que j'ai lus disent que les getters devraient être "légers" et ne jamais avoir une grande quantité de logique ou d'opérations complexes à l'intérieur.Devrais-je convertir ce getter en méthode?

En ce moment j'ai un get que je pense est sur la ligne entre la propriété et la méthode, donc je voudrais voir ce que vous pensez tous, si je devais changer de méthode ou rester avec le getter.

également tout autre conseil est la bienvenue: D

public decimal[] getPreprocData 
{ 
    get 
    { 
     int i = 3; 
     decimal[] data = new decimal[9]; 

     data[0] = (start.Value.Hour * 3600) + (start.Value.Minute * 60); 
     data[1] = duration.Value; 
     data[2] = flowRate.Value; 

     foreach (NumericUpDown nud in gbHTF.Controls.OfType<NumericUpDown>().OrderBy(nud => nud.TabIndex)) 
     { 
      data[i] = nud.Value; 
      i++; 
     } 

     return data; 
    } 
} 
+0

Ce code appartient vraiment codereview.stackexchange – Servy

+1

L'analyse doit se plaindre de retourner un tableau d'une propriété. Vous ne suivez pas non plus les conventions de nommage BCL. –

Répondre

6

Properties & Field sont généralement Noun et methods & functions sont généralement Verb.

Ainsi, getPreprocData devrait être un method. Comme il respresnt une action sur l'instance de l'objet (class).


De mon point de vue, étant donné que votre propriété est jamais fait usage de la setter, il est toujours préférable d'utiliser method que property.

Quel est le point d'avoir une propriété quand il n'y a rien à définir.


propriété Vous pouvez être mis en œuvre Méthode:

public decimal[] GetPreprocData() 
{ 
     int i = 3; 
     decimal[] data = new decimal[9]; 

     data[0] = (start.Value.Hour * 3600) + (start.Value.Minute * 60); 
     data[1] = duration.Value; 
     data[2] = flowRate.Value; 

     foreach (NumericUpDown nud in gbHTF.Controls.OfType<NumericUpDown>().OrderBy(nud => nud.TabIndex)) 
     { 
      data[i] = nud.Value; 
      i++; 
     } 

     return preprocData; 
} 
+0

Devrait certainement être une méthode. Je ne sais pas si vous devriez préfixer avec "get" si. Si le résultat est quelque chose que vous assigneriez toujours à quelque chose, il devrait avoir un nom pour un nom même s'il s'agit d'une méthode, sinon il se contente de lire mal. Ce serait comme appeler Math.Sin(), Math.GetSin(), ou appeler Random.Next(), Random.GetNext() et ainsi de suite. –

0

le convertir en une méthode. Il y a du traitement et de la logique métier là-dedans.

Généralement, je limiterais les propriétés au formatage ou à la combinaison d'autres propriétés, juste pour que vous ayez une séparation claire des problèmes.

1

Cela ressemble à quelque chose qui devrait être une méthode.

Vous effectuez un peu d'initialisation, et la taille de gbHTF.Controls est illimitée, donc peut finir par être coûteux.

Il se cache également derrière un nom de propriété qui ne décrit pas réellement ce que vous faites - ce serait mieux comme une méthode descriptive.