2010-12-16 4 views
1

Je suis novice en programmation, en apprentissage, et hier je développais une classe pour travailler avec des fichiers utilisant C# et j'ai un doute ... Quelle est la meilleure façon d'utiliser les méthodes quand vous avez une méthode checkmethod?Classe, Quelle est la meilleure façon d'utiliser les méthodes?

ouais, je sais, je n'étais pas clair ici, donc voici un exemple;

Files.cs (classe)

namespace Working_with_Files 
{ 
    class Files 
    { 

    public bool CheckFile(string path) 
    { 
     if (File.Exists(path)) 
     { 
      return true; 
     } 
     else 
     { 
      return false; 
     } 
    } 
    public bool CreateFile(string path) 
    { 
     if (CheckFile(path)) 
     { 
      return false; 
     } 
     else 
     { 
      File.Create(path); 
      return true; 
     } 
    } 

    } 
} 

Quelle est la meilleure et la plus rapide d'utiliser ces méthodes de classe? Parce que quand j'utilise la méthode CreateFile, je dois vérifier s'il y a déjà un fichier avec le même nom.

La meilleure façon est de faire référence à une autre méthode dans cette méthode? comme ça;

namespace Working_with_Files 
{ 
    class Files 
    { 

    public bool CheckFile(string path) 
    { 
     if (File.Exists(path)) 
     { 
      return true; 
     } 
     else 
     { 
      return false; 
     } 
    } 
    public bool CreateFile(string path) 
    { 
     if (CheckFile(path)) 
     { 
      return false; 
     } 
     else 
     { 
      File.Create(path); 
      return true; 
     } 
    } 

    } 
} 

La meilleure façon est avec les File.Exists indigènes à l'intérieur de la méthode CreateFile? comme ça; Ou, la meilleure et la plus rapide est d'utiliser la méthode CheckFile sur le programme principal avant d'utiliser la méthode CreateFile?

C'est mon doute, désolé si je ne peux pas le préciser.

+0

vous avez une raison pour envelopper checkfile, ne pas vous? – DaVinci

+0

Eh bien d'abord, on dirait qu'ils devraient être des méthodes statiques - je ne vois pas de variables ctor ou instance ... – RPM1984

Répondre

2

Ne faites pas d'optimisations prématurées! Le premier est «plus clair», c'est une question subjective.

Et s'il vous plaît renommer les fonctions: si une fonction est appelée CheckFile, il devrait «vérifier» le fichier, le contenu ou quelque chose. Non vérifier si le fichier existe -> renomme à FileExists

4

Personnellement, je fais la façon suivante:

Si le code « vérification » est plus d'une ligne de code, puis je passe à sa propre méthode.

Vous pouvez également faire:

return File.Exists(path); 

dans la méthode checkfile.

Mais en ce qui concerne la performance/vitesse, ne vous inquiétez pas. Ecrire autant de méthodes que nécessaire, la différence de vitesse est si petite.

La lisibilité du code importe plus que la performance minuscule à mon avis.

1

Si vous voulez le moyen le plus rapide, alors je pense que vous pourriez utiliser uniquement votre méthode CreateFile dans le premier cas. Parce qu'il utilise des frameworks File.Exists et File.Create prêts à l'emploi. Et comme le font la plupart des développeurs - si le framework ou le langage fournit les fonctions prêtes à l'emploi, alors utilisez-les sinon si cela ne satisfait pas, combinez ceux qui existent au maximum.

J'espère que cela aidera!

1

En supposant que vos méthodes ont besoin des fonctionnalités supplémentaires et vous n'êtes pas le lys ... dorant

Je pense que vous vous demandez si vous souhaitez dupliquer la fonctionnalité d'une méthode dans une autre, à laquelle la réponse est non."L'utilisation de la méthode CheckFile sur le programme principal avant d'utiliser la méthode CreateFile" vous permet d'étendre votre méthode CheckFile sans la faire diverger dans la fonctionnalité de CreateFile, ce qui constitue une meilleure encapsulation. (Sinon, faites CreateFile appel CheckFile si cela sera toujours nécessaire)

1

Pas besoin de créer une instance de la classe Files, donc soit rendre toutes les méthodes statiques comme déjà suggéré, ou utiliser un tel code qui, à mon avis, est plus élégant:

namespace Working_with_Files 
{ 
    public class Files 
    { 
     private static Files instance; 
     public static Files Instance { get { return instance; } } 

     static Files() 
     { 
      instance = new Files(); 
     } 

     private Files() 
     { 
     } 

     public bool CheckFile(string path) 
     ......no change in rest of code..... 
    } 
} 

Et pour appeler les méthodes:

Files.Instance.CheckFile("myfilehere") 
+0

Ceci est plus un commentaire qu'une réponse, car il n'est pas lié à la question. Plus d'un conseil général. – RvdK

Questions connexes