我想知道以下哪种模式被认为更“正确”。
第一个示例通过调用隐式接受参数的 void 成员函数来设置私有数据成员长度的值。第二个示例通过将其分配给显式接受参数的成员函数的返回值来设置长度值。
似乎第二种方法使代码更清晰,因为您知道何时以及如何设置私有成员,第一种方法需要跟踪代码以验证分配值的内容和方式。第二种方法似乎也可以在以后更好地重用,因为它可以在任何类/上下文中运行(因为参数和返回类型是显式的)。
第一种方法更快,如果在整个类中使用(对于私有成员函数)可以节省一些编码,但是我不确定这是否会咬我?
感谢您的洞察力并为我澄清了这一点。
class MyDataType
{
   private int length;
   private string content;
   private char[] buffer;
   public MyDataType(str) 
   {
      content = str;
      calculateLength();
      buffer = new char[length+1];
      for(int i=0; i < length; i++)
         buffer[i] = content[i];
      buffer[i] = NULL;
   }
   private void calculateLength()
   {
      int i = 0;
      while(content[i++] != NULL) {}  // i know, buffer overflow...
      length = i;
   }
}
class MyDataType
{
   private int length;
   private string content;
   private char[] buffer;
   public MyDataType(str) 
   {
      content = str;
      length = calculateLength(content);
      buffer = new char[length+1];
      for(int i=0; i < length; i++)
         buffer[i] = content[i];
      buffer[i] = NULL;
   }
   private int calculateLength(string s)
   {
      int i = 0;
      while(s[i++] != NULL) {}
      return i;
   }
}