我刚开始一份新工作,我的新老板和我谈起了代码的长久性。
我一直编写代码是为了让它无限可扩展和适应性强。我认为,如果将来有人要更改我的代码,那么这应该很容易实现。
但我从来没有一个明确的想法,应该把未来延伸多远。
所以我的新老板告诉我不要费心编写超过3年的未来,他的理由是技术变化,程序到期等原因。
起初我有些吃惊,觉得他是个怪人,但我越想越觉得这个概念不错。
有其他人对你应该编写多远的未来代码有什么看法吗?
我刚开始一份新工作,我的新老板和我谈起了代码的长久性。
我一直编写代码是为了让它无限可扩展和适应性强。我认为,如果将来有人要更改我的代码,那么这应该很容易实现。
但我从来没有一个明确的想法,应该把未来延伸多远。
所以我的新老板告诉我不要费心编写超过3年的未来,他的理由是技术变化,程序到期等原因。
起初我有些吃惊,觉得他是个怪人,但我越想越觉得这个概念不错。
有其他人对你应该编写多远的未来代码有什么看法吗?
在IT技术领域里,难以做出的决策之一就是如何平衡可扩展性。作为老板,如果我指派一个2小时的任务,三天后他们仍然在工作,因为他们觉得它应该更具可扩展性,于是添加了配置文件中的条目和表格中的列,并必须更改其他4或5个对象来适应这些变化,现在安装文档已经过时,部署脚本也需要更改,测试人员需要花费一两天时间尝试所有组合和排列方式,以便我们知道代码是否有效。但是,当另一个人将这个两小时的任务变成半小时的任务,甚至将发送邮件所需的电子邮件地址硬编码,而团队的其他成员抱怨时,我同样感到很恼火。
如果有一个简单明确的规则,那么每个人在首次编写代码时都可以成为高级程序员。而在实践中,这需要经验和判断力,并且这可能是您所获得的最重要的判断力。您知道如何获得良好的判断力吗?通过经历不良判断而获得经验。
你应该按照规格编码,不多不少。如果规格要求30年,那么你就编写30年的代码。如果规格要求3个月,同样适用。
但请记住,你还应该为了自己的理智编写代码。你创建的所有代码应该实现三个目标:
编写可替换的代码-这只是我的好习惯。在编码时,越容易被替换,你就能够产生更好的代码。这种情况提供了一种反向的方式—你使你的代码更容易被替换,你就能让自己变得更有价值。
编写高效的代码-重复使用、重复使用、重复使用。
Foo
,但如果一个方法将被弃用,那实际上更多的是代码质量和可维护性的问题,而不是为未来的日期编码。写好代码,只关注下一个可交付成果。良好编写的代码是无限可重构/扩展的,无论是否考虑到这一点。而那些本来就意图可扩展但编写质量较差的代码,在实践中很少能够实现。
如果你严格遵循敏捷方法论,那么你应该只为当前的问题编写代码。这也被称为YAGNI(You Ain't Gonna Need It)原则。
这个想法是,你不知道未来会发生什么,所以试图为它编写代码是没有意义的。
然而,我认为这并不是特别明智的做法。
即使你处于敏捷环境中,你也有一个想法,希望代码能够在几次迭代后做到什么,因此应该按照那个方向编码。
虽然程序会过期,技术也会变化,但如果你正在编写那个“杀手级”应用程序,它将存在比3年更长的时间。