前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >2019-03-14 面向未来编程:如何平衡代码的可读性和扩展性

2019-03-14 面向未来编程:如何平衡代码的可读性和扩展性

作者头像
Albert陈凯
发布2019-03-19 17:06:03
1.3K0
发布2019-03-19 17:06:03
举报
文章被收录于专栏:Albert陈凯Albert陈凯

为未来编码:使代码可读和可扩展


为未来编码:使代码可读和可扩展

在今天的世界里,软件往往会在其整个生命周期内增加许多功能。为了处理永久的软件,软件工程师必须编写可维护的代码。可维护的代码有两个我们关心的属性:可读性,易于理解的代码和可扩展性,稍后扩展代码的简易性。作为软件开发人员,我们希望保持我们的代码遵循这些属性,以便我们能够更快地向客户提供功能,并使我们的生活从长远来看更简单。

关于性能的简要说明。程序员经常担心交易的可读性或可扩展性。我建议在99%的时间内优先考虑可读性和可扩展性。对于那些对何时考虑表现感到好奇的人,我有另一篇文章。

可读性

可维护代码最重要的目标是保持可读性。为什么可读性如此重要?归结为当你需要的时候能够找到你正在寻找的东西。假设系统中有一个数以百万计的人依赖的错误,开发人员必须尽快修复它。如果代码不可读,那么即使在修复之前,您也会花费太多时间来查明问题所在。延迟会损害客户的体验,因为他们依赖于您快速修复bug。

可读代码是人们可以从中看到的代码。您应该考虑将来的程序员维护或扩展您的代码作为您的客户。我们希望让未来的程序员(可能包括您)更容易理解我们的代码,以便他们能够轻松修复错误并添加新功能。当我们明白人们更喜欢阅读而不是寻找最佳解决方案时,它给了我们一个可读代码的理由和方法。

什么使代码可读:

  • 伟大的,描述性的命名
  • 将代码拆分成更好的名字
  • 功能和类的逻辑组织
  • 遵循全球公约(例如,使用名称设计模式)
  • 在整个代码库中保持一致的风格和结构
  • 避免评论(使用描述性的命名)
  • 分离原则
  • 避免实现继承(通常很难找到和理解基类方法)

可扩展性

需求变化频繁。这可能是改变需求的客户。在游戏开发中,在测试游戏并找到不太有趣的棋子之后,需求经常会发生变化。这可能是因为我们只是想稍后添加新的需求,为我们的客户推出一项新功能。

因此,我们维护代码的第二个目标是使代码可以改变。这被称为可扩展性。可扩展的代码将允许您快速添加或删除功能,而不会引入错误。

在一个完美的可扩展的世界中,我们可以添加新的功能,而不用改变任何已经存在的代码。如果您不必更改旧代码,则无法将错误引入旧代码。在实践中,这是很难实现的,但它仍然是你所有代码单元拍摄的目标。

什么帮助代码是可扩展的:

  • 开放原则 - 开放扩展,关闭修改。使代码(类,功能)的单位,使他们永远不必再被触摸。
  • 分离原则 - 保持代码的一致性
  • 保持代码松耦合
  • 最小化冗余
  • 使用单元测试来查找代码气味
  • 使用多态性
  • 有利于继承的构成
  • 使用依赖注入来分隔使用和创建

平衡可读性和可扩展性

最可扩展的解决方案往往是不可读的。例如,如果您只需要对字符串进行加密,并且不预期将来需要进行更多类型字符串操作的更改,则只会让人们产生复杂的StringDecorator接口。你可以有一个叫做encryptString的函数。阅读和更快实施会容易得多。如果您需要更多的功能,您可以随时重构。

我们如何才能使代码具有可读性和可扩展性呢?

  • KISS - 保持简单,愚蠢 - 您的代码应该像它需要的一样复杂
  • 描述性命名
  • 确保你的团队了解你正在使用的扩展性工具(例如,设计模式,Java lambda等语言特性)
  • 避免实现继承。它杀死了这两个目标。成分是优选的。

一些设计模式很简单,并且可扩展性显着提高,而不会降低可读性。使用策略模式是保持代码可扩展性,减少可读性损失的好方法。在上面的示例中,您可以拥有一个StringEncryptionStrategy,并保留您的代码以更改您正在使用的加密算法。代码仍然是可读的,因为你会知道你正在加密一个字符串。你可能会失去的唯一可读性是你正在使用哪种加密策略,但是在查看另一个类时(实际上是在错误的抽象层中),你通常不需要知道这些信息。

结论

在旧软件不断变化的软件开发的现代,我建议以这种方式优先考虑:

  1. 让它起作用
  2. 使其可读
  3. 使其可扩展
  4. 使其高性能
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2019.03.14 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 为未来编码:使代码可读和可扩展
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档