fli*_*m57 2 c# encapsulation private-methods
随着我继续在C#中进一步增强我的刽子手游戏以帮助我学习语言并像程序员一样思考,我认为其中的方法应该在不同的课程中.现在,所有代码都在Form类(Windows窗体)上.这使得调用所需的方法非常简单,因为我只需要使用方法名称并使用必要的参数.而且,由于它只是一个简单的刽子手游戏,这可能是最好的方法.我不知道.
具体来说,我之一的方法是读取一个包含数千个单词的.txt文件,将其拆分为数组,对数组进行洗牌,然后调用另一个方法来执行其他操作.
当我阅读一些关于C#的文献时,我被告知你想尽可能多地隐藏你的课程.这样你就不能通过传递它无法处理的数据来破坏你的类.但这似乎意味着我必须向该类添加一个属性才能访问它,除了必须创建该类的对象,只是为了能够使用我想要的方法.这似乎是一种拜占庭式的方式来访问该方法.
正如有经验的程序员所看到的那样,我不是在想程序员.我的重点是尽早养成正确的习惯,而不是在以后消除坏习惯.
所以问题基本上是这个方法应该在这样的简单程序中设置为私有吗?什么是最佳做法?
有问题的代码如下(读取文件的方法,表格数组,随机播放等):
private void ReadFile(StringBuilder hintlength, string[] wordlist, string lettercountpath) 
{
  string fileContent = File.ReadAllText(lettercountpath); //Read file
  string[] array = fileContent.Split((string[]null, StringSplitOptions.RemoveEmptyEntries); //Form array
  Random rand = new Random(); 
  for (int i = 0; i < array.Length; i++) // Shuffle algorithm 
  {
    int randIndex = rand.Next(i, array.Lenth);
    string temp = array[randIndex];
    array[randIndex] = array[i];
    array[i] = temp;
  }
  for (int i = 0; i < 10; i++0)  //Assigns shuffled array into wordlist array
    wordlist[] = array[i];
  if (j > 9) //Checks counter to see how many times it's been clicked
     j =0;
  Start.Enabled = false;
  NewWord.Enabled = false;
  WordSelection(hint length, wordlist); // Calls WordSelection method 
  radioButton1.Enabled = false;
  radioButton2.Enabled = false;
  radiobutton3.Enabled = false;
  if (remainderWords == 1) // Checks remaining words counter
     remainderWords = 10;
}
您应该根据类成员在设计中的位置设置类成员的可见性,而不是根据类的大小或任何其他考虑因素.
internal.您可以混合internal并protected进一步限制对同一程序集内派生类的访问.在设计软件时,您应该开始考虑这种分类.在设计较小的系统时,更容易进行此分类.但是,随着系统规模的扩大,正确行事的重要性也会大大增加.