这可能是编码中的一种常见模式,虽然我知识不足以识别它或使用正确的术语(我当时会用Google搜索)。
当你创建一个将在循环中调用方法的对象,但循环的内容可以根据一组条件改变时,你做(伪代码):
method _method($condition){
switch($condition){}
}
或
method init($condition){
switch($condition){
case 1:
this._method = function(){};break;
case 2:
this._method = function(){};break;
....
}
}
我更喜欢版本1,因为它更易于维护,但我觉得版本2更轻。我是对的吗?
我意识到答案可能会有很大差异,具体取决于用例,所以这是我的:我有一个javascript滑块,实现为jQuery插件。根据选项,当滑块到达最后一帧时,它会向后滚动以开始,或者无缝循环。现在,如果它必须无缝循环,那么当每个幻灯片前进时,我必须将刚刚消失的元素设置为在最右边排队。这意味着我必须检测元素何时从视图中消失,并对scrollLeft值进行其他检查以及如果我只是简单地滚动我不需要做什么。 那我该怎么办呢?
答案 0 :(得分:3)
我相信你明白这一点,但值得重复:
如果没有损坏,请不要修复它。
通过思考,你几乎不会在非玩具软件中发现性能问题。
当人们学习如何解决性能问题时(as, IMHO, I have), 他们经常被问到秘密是什么。 秘诀很简单 - 不要猜测,做诊断。 Here's the method I use.
每个人都知道,但无论如何他们都在猜测 例如,查看this question的答案。
答案 1 :(得分:1)
您的用例似乎很简单,并且不需要太多的计算时间,但您应该使用更易读的代码并且更易于维护。 使用性能关键代码时,应尽可能简短/便宜地将代码保存在循环中。