问题标签 [coding-efficiency]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
1951 浏览

javascript - hasOwnProperty 在检查父对象属性时返回 true

我的 JavaScript 代码:

我有两个对象(BaseClass 和 SubClass)。一个使用构造函数模式从另一个继承,如MDN 中所述

现在,当我遍历子类对象的所有属性时,它们都为 hasOwnProperty 返回 true,即使对于父方法/属性,除了构造函数。

这是否意味着在使用构造函数模式时它会中断?

当我将公共属性和方法放在构造函数中时,无论是在 BaseClass 还是 SubClass 中,它们都将始终被“标记”为自己的属性/方法。当我将它们附加到各自的原型时,hasOwnProperty 将为它们输出“false”。

无论您将公共方法/属性放在原型还是构造函数本身,它们都可以在子类中使用(--> SubClass2,--> SubClass3)。

我现在唯一能想到的,为什么要将它们附加到原型对象上,是出于效率原因,正如此处“定义类方法”部分所述。为了不为每个构造的实例添加闭包。

值类型应该在原型上声明,但不是实例变量,其初始值取决于构造函数的参数或构造时的其他状态。无论它们的声明位置如何,您都可以覆盖这两个属性/函数。

同样在原型上设置 getter 和 setter,例如设置或获取私有变量,是没有意义的,因为私有变量必须是公共的,以便附加到原型的 getter 和 setter 可以访问。

因此,使用 getter 和 setter 是没有意义的。您可以直接访问公共变量。

我现在必须稍微调整一下我的问题:

我什么时候需要hasOwnProperty,如果实际上应该在原型上声明公共道具/函数,这反过来将全部输出Object.hasOwnProperty(obj,"prop/func") --> false。给我一个用例,在有意义的时候使用 hasOwnProperty。


解决方案

当我问这个问题时,我认为在 JavaScript 中使用经典继承时,我可以使用 hasOwnProperty 区分我的子类的哪些属性/函数直接属于它。这是不可能的,因为父原型的所有属性/功能都被复制到子类的原型中:

使用 hasOwnProperty 时,附加到原型的所有属性/函数都返回“false”。

如果您在 BaseClass 和 SubClass 的构造函数中声明了公共属性/函数,则在为子类上的这些属性调用 hasOwnProperty 时,所有这些属性都会返回“true”。

使用以下语句将这些复制到子类:

因此,在迭代 SubClass 类型的 obj 的所有属性时使用 hasOwnProperty,将对原型级别声明的所有属性/函数输出 false,对构造函数级别声明的所有属性/函数输出 true。

现在,我明白了为什么在这个用例中使用 hasOwnProperty 是没有意义的。

0 投票
1 回答
131 浏览

c# - 在处理大量迭代时,是否有比在 C# 中的 for 循环中嵌套 if 语句更有效的替代方法?

我有一个方法,它由嵌套在 for 循环中的 if 语句组成:

但是,如果 val 表示数千万以内的数字,则该方法在运行时需要很长时间,因为它同时用于 for 和 if 循环。

有没有更好、更有效的方法来做到这一点?目前的代码效率太低了。

0 投票
1 回答
64 浏览

java - 这两种算法中哪一种更有效?

我正在编写一些代码,我想出了 2 个用于从左侧环绕数组的函数。我将其命名为负模,因为它类似于使用模数从右侧环绕数组。我意识到性能影响在小范围内可以忽略不计,但我想知道哪个更有效。你们有什么感想?

0 投票
2 回答
634 浏览

coding-efficiency - 如何让输入代码更有效率?

我是个打字员,我承认。在我最近从我使用多年的键盘切换到稍微不同的键盘之后,在 Dvorak 短暂停留并且有一段时间没有做大量的打字,我比平常更糟糕!我最近的测试显示,母语大约 90 WPM,代码大约 50 WPM。除了练习,还有什么好方法可以让打字更有效率,特别担心我的错误率?

例如,将主行设为模态并将其映射到常见的特殊字符(如 $"!%^&*()-+ + _<caps>等)会不会很疯狂?

我使用 Vim,我希望能够减少从思考到在文本中思考的时间,以免打断我的过程。我还需要提高我的准确性,因为我往往会犯一些错误,这可能是有问题的。

我已经尝试过 10fastfingers 的自然语言,它说我比 95% 好或类似的东西……但 90 是乐观的,最近大多是 80-85 左右。

0 投票
2 回答
1634 浏览

r - 为什么求幂(例如,10^6)比 R 中的计算器符号(例如,1e6)要长 4 倍?

在 R 代码中使用科学记数法10^6(就像我通常做的那样)导致计算时间比使用计算器表示要长得多1e6

为什么 R 重新计算10^6的时间与它计算的时间差不多exp{6*log(10)}?我理解 R 在计算时执行函数的事实10^6,但为什么要这样编码?

0 投票
2 回答
37 浏览

android - 为什么我不能在“for”循环中为多个按钮执行“.startAnimation”?

我有一个带有 12 个按钮的网格,我想要为这些按钮设置动画。我把它们放在一个向量中,当我打算执行“.startAnimation”时,我总是有“NullPointer”异常,我不知道为什么。

我有这个:

为什么不这样做?错误是

在 startAnimation 行中。

我注意到当我尝试这个时也会发生这种情况:

当我在“botones [n]”中使用索引时。有人也遇到过这种情况吗?

0 投票
2 回答
42 浏览

vba - 这些陈述之间有什么区别,最喜欢哪一个?

我注意到我在互联网上找到的很多代码都会定义和设置我会避免的变量......例如:

Dim db as Database Dim rs as Recordset Set db = CurrentDB Set rs = db.OpenRecordset

我会这样写:

Dim rs as Recordset Set rs = CurrentDB.OpenRecordset

我在顶部保存了 2 行代码,Set db = Nothing在末尾保存了 1 行代码。其中,数以百计的潜艇和功能真的可以加起来......

但是大多数编码人员是否更喜欢另一个?有实际理由使用其中一个吗?实际定义和拼写整个事情有好处吗?除了让心皮隧道多花几分钟之外,按照我的方式做这件事有什么真正的节省吗?

0 投票
2 回答
66 浏览

c# - 将相似的方法合并为一个方法以减少重复

我正在努力学习和实践 OOP 原则,我需要一些帮助来帮助我克服困难。我有以下代码:

我想要做的是整合代码集,这样我就可以有一个方法来返回不同的数据类型而无需重复代码。 请不要评论有几种更有效的方法来搜索字典这一事实,我知道这并不理想。我只是模拟了一些数据和方法以用作示例。对于我的生活,我真的无法想象如何实现这样的东西。

0 投票
2 回答
187 浏览

java - 有一个始终打开的连接更好,还是每次需要某些东西时建立一个连接更好?

目前,我的程序每次需要时都会建立与服务器的连接,并在获取所需内容后关闭连接。

如果我从程序开始就运行一个全局连接,这是更好还是更差的做法,会有什么不同。就像是

只是在我需要的地方引用它

0 投票
2 回答
1674 浏览

java - 最高效的 Android 应用程序开发工作流程?

目前我正在开发我的第一个应用程序,并且我注意到正在出现的某些工作流模式。具体来说,Android 应用程序遵循一种类似树的用户活动流程,其中每个用户操作通常要么向下进入树的更深分支,要么返回到根部。

因此,由此出现的开发模式是:添加可操作的小部件 -> 为它们添加监听器方法 -> 发送意图以启动新活动并将数据传递给它们 -> 构造新的活动布局和类以接收此数据 - > 重复。

然后在某些活动中会有显示数据库数据的小部件(因此您必须设置 CursorAdapters 等),以及一些修改数据库数据的小部件(因此您必须实现更新/添加/删除方法等)。

我的问题是:有没有办法自动化这个工作流程,或者让它更有效率?即,是否有某种基于模式的脚本,您可以在其中绘制活动的树结构,哪些项目需要 CursorAdapters 等,然后它会为该模式写出骨架类?看起来编码“狗工作”,可以说,比如敲出应用程序的骨架方面,占用了大量的打字工作,而不是大量的功能。

我想我正在寻找的是深入了解电源编码器或“精英”通常如何编写 android 应用程序。

干杯