Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/cmake/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 重构的最佳方式是什么;“时间依赖性”;实例方法的定义?_Javascript_Refactoring - Fatal编程技术网

Javascript 重构的最佳方式是什么;“时间依赖性”;实例方法的定义?

Javascript 重构的最佳方式是什么;“时间依赖性”;实例方法的定义?,javascript,refactoring,Javascript,Refactoring,例如,假设在视图类中,我们需要实例化一些UI组件,然后填充字段。比如: var View = function() { this._initUI(); this._populateFields(); }; View.prototype = { _initUI: function() { this.textField = new TextField(); this.comboBox = new Combobox(); }, _populateFields:

例如,假设在视图类中,我们需要实例化一些UI组件,然后填充字段。比如:

var View = function() {
  this._initUI();
  this._populateFields();
};

View.prototype = {
  _initUI: function() {
    this.textField = new TextField();
    this.comboBox = new Combobox();
  },

  _populateFields: function() {
    this.textField.setText('foo');
    this.comboBox.setVal('bar');
  }
};
这听起来不太对劲,因为您必须在
\u populateFields
之前调用
\u initUI
,而且
\u initUI
将创建一些实例变量,这些变量稍后将由
\u populateFields
使用


您认为更好的方法是什么?

修复原型以进行初始化?如果尚未调用initUI,是否引发异常?有很多方法可以做到这一点。你说修复原型来进行初始化是什么意思?你是说修好构造器?与中一样,基本上直接将
\u initUI
拉入构造函数?如果是这样,当您需要初始化一个非平凡的UI视图时,这可能不是一个很好的选择。您不需要拉入代码,只需调用init即可。在任何情况下,都有很多方法可以确保一个对象被正确初始化。这个问题似乎是离题的,因为堆栈溢出是针对关于使用明确答案编码的特定问题。这更适用于codereview.stackexchange.com,也可能适用于programmers.stackexchange.com,后者用于讨论高级设计概念和最佳实践。@adininbar这是一个很好的观点,这更多的是一个最佳实践问题,而不是“我如何做到这一点”问题。谢谢,我会再贴上去的。