Questions tagged «construction»

3
“开始”,“运行”或“执行”方法是一种好习惯吗?
我目前正在开发具有许多实现Start方法的类的代码库。在我看来,这似乎是两阶段构建,我一直认为这是一种不良做法。我不能说这和构造函数之间的区别。 什么时候适合使用start方法而不是普通的对象构造方法? 我何时应该更喜欢使用构造函数? 编辑:我不认为这是相关的,但是编程语言是C#,它同样适用于Java或C ++

6
创建新对象还是重置每个属性?
public class MyClass { public object Prop1 { get; set; } public object Prop2 { get; set; } public object Prop3 { get; set; } } 假设我有一个对象myObject,MyClass并且需要重置其属性,那么创建一个新对象或重新分配每个属性会更好吗?假设我对旧实例没有任何其他用途。 myObject = new MyClass(); 要么 myObject.Prop1 = null; myObject.Prop2 = null; myObject.Prop3 = null;

5
当将数据而不是方法参数传递给构造函数时,类的概念如何改变?
假设我们正在做一个解析器。一种实现可以是: public sealed class Parser1 { public string Parse(string text) { ... } } 或者我们可以将文本传递给构造函数: public sealed class Parser2 { public Parser2(string text) { this.text = text; } public string Parse() { ... } } 在两种情况下用法都很简单,但是与另一种相比,启用向的参数输入是什么意思Parser1?当他们查看API时,我向同一个程序员发送了什么消息?此外,在某些情况下是否存在任何技术优势/劣势? 当我意识到接口在第二种实现中将变得毫无意义时,又出现了另一个问题: public interface IParser { string Parse(); } ...第一个接口上的接口至少可以达到某些目的。这是否特别表示某类是“可接口的”?

3
依靠隐式参数转换是否被认为是危险的?
C ++具有一项功能(我无法弄清楚它的正确名称),如果参数类型不是期望的参数类型,它将自动调用参数类型的匹配构造函数。 一个非常基本的示例就是调用一个std::string带const char*参数的函数。编译器将自动生成代码以调用适当的std::string构造函数。 我想知道,它是否像我认为的那样对可读性不利? 这是一个例子: class Texture { public: Texture(const std::string& imageFile); }; class Renderer { public: void Draw(const Texture& texture); }; Renderer renderer; std::string path = "foo.png"; renderer.Draw(path); 这样好吗 还是太过分了?如果我不应该这样做,我可以以某种方式让Clang或GCC发出警告吗?
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.