完成代码后改进代码的16种方法

Lint
称为lint或lint的工具就像一个执行数百条语义规则的代码审查机器人。也许数千。有些是由编程方面的强迫性责骂所写的,该部门计算空白字符,并谴责使用过多或过少的字符。有些是由认真的人写的,他们已经标记出了细微的语义模式,这些语义模式可能会导致以后的安全漏洞。您的编程团队可能已经选择了一个linter集合,现在是运行它们的时候了。
整体轮廓
唐·克努斯(Don Knuth)曾说过:“过早的优化是万恶之源”,因为花时间改进只偶尔运行的部分代码是很愚蠢的。现在,您已经完成编码,是时候启动分析器并查找那些热点了。通常10%的代码90%的时间都在运行。有时会有紧密的内部循环吸收99%的循环。如果您现在可以标记它们,那么一些调整确实可以奏效。
删除调试工具
为了以防万一,很容易保留嵌入在生产代码中的详细日志记录选项,但是一旦代码运行起来,就该清理这些工具并关闭调试选项了。多余的数据会使计算机杂乱无章,甚至可能会因填充一些磁盘驱动器而威胁性能。将调试排除在生产服务器之外。
用AI分析
老程序员使用基本的正则表达式和语句来查找问题。现代程序员还拥有人工智能工具。例如,据说亚马逊的CodeGuru “利用机器学习模型”来搜索不良代码。这是一个基于分析和严格分析的全自动过程。
整理数据
在构建应用程序时,很容易理会数据库和日志文件。现在您已经完成了应用程序的工作,是时候开始为速度和稳定性优化数据库了。在右列中添加索引以加快查找速度。添加镜像并及时备份以提高断电或磁盘崩溃后的稳定性。
现在是时候权衡存储成本和数据丢失成本了。日志文件到底有多有价值?他们需要多少维护费用?地理上不同的备份计划的成本是多少?数据中心发生灾难性故障的可能性有多大?这些不是容易回答的问题,但是一旦您了解了备份成本,就可以决定要赌多少钱。这就像去拉斯维加斯的一次付费旅行,只有随着自己的职业和周围其他人的工作而掷骰子。
优化数据流
许多应用程序都可以从服务器上的高速缓存中受益,也可以通过内容分发网络在Internet上分布广泛。添加分布式内存缓存或集成CDN是提高用户体验的最简单方法之一。
优化数据
并非所有的数据都需要尽可能大。图像是减少尺寸而又不付出太多代价的最简单的方法之一。精致的背景等样式细节可以由CSS指令代替,以进行渐变填充,而这些填充仅占用磁盘空间和带宽的一小部分。摄影师和艺术家经常喜欢在需要时保留尽可能多的信息和细节,以RAW格式存储图像。诸如ImageOptim之类的工具将去除用户感知阈值以下的许多不必要的细节,同时还删除了跟踪相机镜头等多余信息的EXIF值。结果是下载速度更快,带宽费用更低。
添加一个API
许多架构师从结构良好的API入手,该API用于将前端显示代码与下面的业务逻辑分离开来,但是有时会有一个很好的机会通过添加另一扇门或窗户来扩展代码库的用途。诸如Swagger之类的API工具包通过提供解析,路由甚至文档来使此操作相对容易。如果您有一些不错的功能,请干净地输入当前代码块的入口点,将它们胶合到新的API即可启用用于自动化和集成的新选项。
捆绑到图书馆
您编写的某些代码作为已集成到其他项目中的库,将具有第二,第三或第四个生命。优秀的架构师会期望其中的一些选项,并在一开始就将代码分为库,但是有时会在之后激发灵感。将代码重构到库中是为工作赋予新生命的良好开端。
文献
哈哈!今天的文件记录比以前不那么重要了,但是在正确的剂量下仍然有用。如果您正在编写结构清晰的代码,并使用线索填充的变量名和简单的结构,则该代码将不需要很多本地注释。但是,勾勒出每个部分的基本角色,或者指出数据如何在代码中流动,仍然很有帮助。指出一些代码潜在的问题,并说明代码如何从异常中恢复(如果有的话),这也很有帮助。
拆分为微服务
越来越多的建筑师将他们的宏伟愿景变成现实,并知道维护多个小型应用程序通常比维护一个大型应用程序容易。开发人员可以同时进行不同部分的工作,分别进行编码和测试,然后再进行最终集成测试。项目通常会随着时间的推移而增长,尤其是当您要在最后添加更多功能时。有时,当您接近终点线时,将工作分割成较小的部分的优势会变得更加明显。
集装箱化
越来越多的代码在指定新源文件的容器映像中保存下来,并明确指出了需要哪些库和其他服务。在某些情况下,制作此配置文件可能非常简单,但是有很多机会变得聪明。有些团队喜欢将代码拆分为多个容器,以防某些容器可能单独使用。通常,每个微服务都生活在其自己的容器中,但是它们可能有共享的理由。一些开发人员甚至提倡更极端的方法,例如为每个文档创建单独的容器。有足够的辩论空间。
部署到无服务器
现在无服务器计算选项变得越来越普遍,从代码中提取基本功能并将其部署到无服务器平台(如AWS Lambda或Azure Functions)可能是明智的。帐单是通过通话计算的,因此在没有传入流量的情况下,您无需为休假期支付任何费用。如果您的代码已经很好地构建并且不需要任何本地状态,那么通常很容易从应用程序中提取业务逻辑,并通过无服务器系统使用的简单函数调用将其重新包装。
部署到手机
现在,大多数优秀的Web应用程序都是为移动显示而构建的,并且它们在智能手机上通常运行得很好,以至于创建独立应用程序的需求越来越少。此外,网络并不会迫使开发人员跳过数十个障碍和评论,而只是被App Store或Google Play列出。但是有时有充分的理由将基于Web的应用程序转换为本机iPhone或Android应用程序,并且有好几种好的工具通过将Web服务器包装为嵌入式版本的浏览器来简化转换过程。
纯粹主义者会争辩说,在嵌入式网页中运行JavaScript并不是真正的本机,并且他们认为对某些应用程序(例如激烈的游戏)的性能可能会落后,这是正确的,但是对于许多应用程序来说,这是将某些东西带入商店的最简单方法。还有其他优点。本地应用程序可以通过在本地缓存大量网站来更仔细地控制数据传输。这样可以为开发人员和移动用户节省带宽,从而使交互速度更快,带宽费用更低。
移至网路
在大多数情况下,朝另一个方向移动并重新捆绑您的应用程序作为网站需要做更多的工作。除非您使用为Web编码而设计的工具箱之一,否则您将很大程度上重写用Java,Swift或Objective-C编写的本机代码。尽管如此,构建Web浏览器仍可以使您摆脱应用商店评论的专横,并且还可以使用相同的代码为台式机提供服务。
继续
一些聪明的程序员更名了重写代码的想法,因为“重写”一词听起来像是您第一次犯错。“重构”具有更好的效果。重构不允许先验错误,这使自我变得更容易。改进代码的过程(通常只需一点点跳动)是在“完成”之后立即开始的一个好主意。几乎没有什么改进和修复可以立即纳入代码中。
许多团队每天甚至每小时都在不断地重构,交付或部署新版本。这些细微的变化本身看来并不重要,但是在数周和数月的时间里,它们累计起来就构成了重大的改进。迭代如此频繁,以至于它们开始模糊完成代码与重新启动之间的界限。这只是一个连续的改进和部署周期。
最后,开发这么多年我也总结了一套学习Java的资料与面试题,如果你在技术上面想提升自己的话,可以关注我,私信发送领取资料或者在评论区留下自己的联系方式,有时间记得帮我点下转发让跟多的人看到哦。在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值