我读了很多关于如何正确编码的书籍,通常他们从我无法理解的角度谈论所有这些技巧。
E.g。让我们考虑单例模式:
我正在限制所以类只能实例化一次,但因为它只是我创建应用程序,如果我知道该类只应该实例化一次,那么为什么我会再次创建它?
听起来我正在抵制自己。
我觉得错过了大局。
编写应用程序时,我的主要目标是什么?
我该怎么想?
感谢。
答案 0 :(得分:7)
让它工作,让它正常工作,让它快速工作。
大多数模式都将复杂性作为使用它们的一个代价。 如果您不需要,请不要添加模式。
在单例的情况下 - 如果你没有将限制为一个实例(并且真正需要什么时候),请不要它变成了单身人士。它只会使您的代码更复杂,更难理解。
答案 1 :(得分:4)
因为在未来2年,你会忘记它应该是一个单身,并在更新代码时违反了它。请记住,极高(IIRC> 70%)的努力花在维护现有代码上,而不是编写新代码。
使用该模式将允许您在不作为单人团队的一部分工作时进行自我训练。在这一点上,其他人不会知道应该是什么单身人士。
答案 2 :(得分:2)
“创造有效的产品”可能是主要目标。但是,对于一个有抱负的作曲家来说,“创造一块只有摇滚乐的音乐”是有用的。主要的问题是“如何我创建一个有效的产品” - 这几乎与技能有关。
编程是一个如此广泛的领域,你不能只选择一些“基本法则”来关注。从特定的观点来看,可能存在1000或10000个单独的考虑,每个考虑在特定的上下文中是重要的。学习技能的唯一方法是工作,编写代码(这也包括犯错误),阅读其他人的代码,从书籍和网络上阅读(通常是矛盾的)意见和想法等。定期做10到20年你会好起来的。
例如,是否不使用单例是关于在初始复杂性之间进行权衡(使用静态引用的单例比携带参考更简单)与未来的可塑性相比(您可能会发现自己已经“绘制了自己”进入角落“以后”。有些人关于避免全局性(“单身是邪恶的”)是教条主义的,尽管一般来说这可能是一个很好的经验法则,但是全局和单身确实有其用途。例如,Java的System类本质上是一个全局单例。