关于软件开发中的最佳实践1的讨论很多。我已经看到至少有3个主要观点在SE和其他地方引起了很多讨论:
- 什么是最佳实践,为什么?
- 可以断言没有最佳实践是“最佳”实践,因此最佳实践甚至在一开始就值得讨论吗?
- 您什么时候应该放弃最佳做法-或也许是大多数最佳做法-是因为它似乎不适用,还是由于外部限制(时间,金钱等)使权衡取舍变得不切实际?
似乎很少出现的事情,但比以往任何时候都多,这是软件开发中的常识概念。最近的经验再次使这个想法浮现在我的脑海。
我的最初印象是,与最佳实践不同的是讨论,但可能存在交叉授粉。
当我想到一般意义上的常识时,我想到的是您已经掌握或接受的一组规则,这些规则为您提供推理和做出决定的基线。遵循常识是避免您射出整条腿的好方法。但是,除了较低的基准线外,常识可以让人们做出有根据的决定,而当证据看起来足够有说服力时,有根据的决定甚至可以超越常识。我可能对这里的定义有些松懈,但我认为它已经足够接近我的榜样了。
当我想到软件开发中的常识时,我想到了所有基本卫生规则,以防止代码库迅速腐烂成无法理解的混乱。例如,不使用单个全局结构来维护和传递非平凡程序中的状态;不使用只是乱码的变量/方法/类名;这些可能非常类似于我们称之为反模式的东西。在将最佳实践应用于学习模式的实践模拟中,将常识视为学习反模式的实践模拟。
考虑到这一点,我想提出一些问题,看看其他人的回答可能会帮助我确定自己的方式。
其他人是否认为软件开发中存在常识?知道任何一种推理方式都会很感兴趣。
如果是这样,是否值得讨论?我们是否应该像有时采用最佳做法一样努力推动这一工作?是否值得进一步努力?
如果与反模式的类比看起来合理,那么一般规则是,只有在没有其他方法的情况下才使用反模式,甚至只有在非常有限的情况下才使用反模式。允许代码库偏离常识的灵活性应该是多少?答案“根本不是”似乎是不合理的,因为有时权宜之计要求偏离。但是,这似乎是与何时采用“最佳实践”不同的论点。也许不是;如果您不这样认为,我想学习为什么。
这是开放的,也许值得一个后续的问题,您会指出什么样的建议,这似乎是常识呢?
也欢迎其他想法。
1也许我会更好地称它们为“常见重复出现的域模式”,但是“最佳实践”这个名称已经足够普遍,即使每个人都不认同它们是什么,也知道了它们的本质。如果“最佳”部分困扰您,请想象我用不太权威的话语代替了“最佳做法”。