Closed. This question needs details or clarity。它当前不接受答案。
想改善这个问题吗?添加详细信息并通过editing this post阐明问题。
6年前关闭。
当我继续进一步增强C#中的子手游戏以帮助我学习该语言并像程序员一样思考时,我认为其中的方法应该放在单独的类中。现在,所有代码都在Form类(Windows Form)上。这使得调用所需的方法非常容易,因为我只需要使用方法名称并使用必要的参数即可。而且,由于它只是一个简单的子手游戏,因此这可能是最好的方法。我不知道。
具体来说,我读取的一种方法是读取其中包含成千上万个单词的.txt文件,将其拆分为一个数组,将其重新排列,然后调用另一种方法来执行其他操作。
在阅读有关C#的一些文献时,我被告知您想隐藏尽可能多的类。这样,您就无法通过传递无法处理的数据来破坏类。但这似乎意味着我必须为该类添加一个属性才能访问它,除了必须创建该类的对象之外,还可以使用我想要的方法。这似乎是拜占庭式访问该方法的一种方式。
如经验丰富的程序员所看到的,我还没有像程序员那样思考。我的重点是尽早养成正确的习惯,而不是后来消除不良习惯。
因此,基本上的问题是,是否应该在这样的简单程序中将此方法设置为私有?最佳做法是什么?
有问题的代码如下(读取文件,表单数组,随机播放等的方法):
想改善这个问题吗?添加详细信息并通过editing this post阐明问题。
6年前关闭。
当我继续进一步增强C#中的子手游戏以帮助我学习该语言并像程序员一样思考时,我认为其中的方法应该放在单独的类中。现在,所有代码都在Form类(Windows Form)上。这使得调用所需的方法非常容易,因为我只需要使用方法名称并使用必要的参数即可。而且,由于它只是一个简单的子手游戏,因此这可能是最好的方法。我不知道。
具体来说,我读取的一种方法是读取其中包含成千上万个单词的.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
,从而进一步限制对同一程序集中派生类的访问。
在设计软件时,您应该开始进行这种分类。设计较小的系统时,进行此分类要容易得多。但是,随着系统规模的扩大,正确执行此操作的重要性将大大提高。