为未来编码:使代码可读和可扩展
在今天的世界里,软件往往会在其整个生命周期内增加许多功能。为了处理永久的软件,软件工程师必须编写可维护的代码。可维护的代码有两个我们关心的属性:可读性,易于理解的代码和可扩展性,稍后扩展代码的简易性。作为软件开发人员,我们希望保持我们的代码遵循这些属性,以便我们能够更快地向客户提供功能,并使我们的生活从长远来看更简单。
关于性能的简要说明。程序员经常担心交易的可读性或可扩展性。我建议在99%的时间内优先考虑可读性和可扩展性。对于那些对何时考虑表现感到好奇的人,我有另一篇文章。
可读性
可维护代码最重要的目标是保持可读性。为什么可读性如此重要?归结为当你需要的时候能够找到你正在寻找的东西。假设系统中有一个数以百万计的人依赖的错误,开发人员必须尽快修复它。如果代码不可读,那么即使在修复之前,您也会花费太多时间来查明问题所在。延迟会损害客户的体验,因为他们依赖于您快速修复bug。
可读代码是人们可以从中看到的代码。您应该考虑将来的程序员维护或扩展您的代码作为您的客户。我们希望让未来的程序员(可能包括您)更容易理解我们的代码,以便他们能够轻松修复错误并添加新功能。当我们明白人们更喜欢阅读而不是寻找最佳解决方案时,它给了我们一个可读代码的理由和方法。
什么使代码可读:
可扩展性
需求变化频繁。这可能是改变需求的客户。在游戏开发中,在测试游戏并找到不太有趣的棋子之后,需求经常会发生变化。这可能是因为我们只是想稍后添加新的需求,为我们的客户推出一项新功能。
因此,我们维护代码的第二个目标是使代码可以改变。这被称为可扩展性。可扩展的代码将允许您快速添加或删除功能,而不会引入错误。
在一个完美的可扩展的世界中,我们可以添加新的功能,而不用改变任何已经存在的代码。如果您不必更改旧代码,则无法将错误引入旧代码。在实践中,这是很难实现的,但它仍然是你所有代码单元拍摄的目标。
什么帮助代码是可扩展的:
平衡可读性和可扩展性
最可扩展的解决方案往往是不可读的。例如,如果您只需要对字符串进行加密,并且不预期将来需要进行更多类型字符串操作的更改,则只会让人们产生复杂的StringDecorator接口。你可以有一个叫做encryptString的函数。阅读和更快实施会容易得多。如果您需要更多的功能,您可以随时重构。
我们如何才能使代码具有可读性和可扩展性呢?
一些设计模式很简单,并且可扩展性显着提高,而不会降低可读性。使用策略模式是保持代码可扩展性,减少可读性损失的好方法。在上面的示例中,您可以拥有一个StringEncryptionStrategy,并保留您的代码以更改您正在使用的加密算法。代码仍然是可读的,因为你会知道你正在加密一个字符串。你可能会失去的唯一可读性是你正在使用哪种加密策略,但是在查看另一个类时(实际上是在错误的抽象层中),你通常不需要知道这些信息。
结论
在旧软件不断变化的软件开发的现代,我建议以这种方式优先考虑: