代码改进
您已将代码推送到所有测试中,它们又变成绿色。 持续集成流水线贯穿了整个过程。 功能列表上的所有复选框均已选中。 所有便利贴已移至墙的完整部分。 ew
诱人的是将代码调用完成并在假期出发。 这是你应得的。 团队赢得了它。 让代码做点事情。 这不是我们写这本书的全部理由吗? 把它扔在墙壁上,它会嗡嗡作响吗?
[ InfoWorld的2020年度技术奖获奖者:年度最佳软件开发,云计算,数据分析和机器学习产品 ]
las,自满和坐着的日子已经过去了。 这些天什么都还没完。 仅仅因为您排除了错误并交付了可运行的程序并不意味着您应该放松。 您仍然可以做很多事情来改进代码。 一些人是好公民的标志,他为下一个团队的到来进行清理。 一些是增长和占领新市场的机会。 有些是新旅程的开始。
当您从放松和恢复中恢复过来时,这里有16件事。
皮棉
称为lint或lint的工具就像一个执行数百条语义规则的代码审查机器人。 也许有数千个。 有些是由编程方面的强迫性责骂而写的,该部门计算空白字符,并谴责使用过多或过少的字符。 有些是由认真的人写的,他们已经标记出了细微的语义模式,这些语义模式可能会导致以后的安全漏洞。 您的编程团队可能已经选择了一个linter集合,现在是运行它们的时候了。
个人资料
Don Knuth曾经说过:“过早的优化是万恶之源”,因为花时间改进只偶尔运行的部分代码是愚蠢的。 现在,您已经完成编码,是时候启动分析器并查找那些热点了。 通常10%的代码90%的时间都在运行。 有时会有紧密的内部循环吸收99%的循环。 如果您现在可以标记它们,那么一些调整确实可以奏效。
删除调试工具
为了以防万一,很容易保留生产代码中嵌入的详细日志记录选项,但是一旦代码运行起来,就该清理这些工具并关闭调试选项了。 多余的数据会使计算机杂乱无章,甚至可能由于填满一些磁盘驱动器而威胁性能。 将调试排除在生产服务器之外。
用AI分析
老程序员使用基本的正则表达式和语句来查找问题。 现代程序员还拥有人工智能工具。 例如,据说亚马逊的CodeGuru “利用机器学习模型”来搜索不良代码。 这是一个基于分析和严格分析的全自动过程。
整理数据
在构建应用程序时,很容易理会数据库和日志文件。 现在您已经完成了该应用程序的工作,是时候开始针对速度和稳定性来优化数据库了。 在右列中添加索引以加快查找速度。 添加镜像并及时备份以提高断电或磁盘崩溃后的稳定性。
[ DevSecOps:如何将安全性引入敏捷开发和CI / CD ]
现在是时候权衡存储成本和数据丢失成本了。 日志文件到底有多有价值? 他们需要多少维护费用? 地理上不同的备份计划的成本与数据中心的灾难性故障发生的可能性有多少? 这些不是容易回答的问题,但是一旦您了解了备份成本,就可以决定要赌多少钱。 这就像去拉斯维加斯的一次付费旅行,只有随着职业和周围其他人的工作而掷骰子。
优化数据流
许多应用程序都可以从服务器上的高速缓存中受益,也可以通过内容分发网络在Internet上分布广泛。 添加分布式内存缓存或集成CDN是提高用户体验的最简单方法之一。
优化数据
并非所有的数据都需要尽可能大。 图像是减少尺寸而又不付出太多代价的最简单的方法之一。 精美的背景等样式细节可以由CSS指令代替,以进行渐变填充,而这些填充仅占用磁盘空间和带宽的一小部分。 摄影师和艺术家经常喜欢在需要时保留尽可能多的信息和细节,以RAW格式存储图像。 诸如ImageOptim之类的工具将去除用户感知阈值以下的许多不必要的细节,同时还删除跟踪相机镜头等多余信息的EXIF值。 结果是下载速度更快,带宽费用更低。
添加一个API
许多架构师从结构良好的API入手,用于将前端显示代码与下面的业务逻辑分开,但是有时有一个很好的机会通过添加另一扇门或窗户来扩展代码库的用途。 诸如Swagger之类的API工具箱通过提供解析,路由甚至文档提供了相对容易的操作。 如果您有一些不错的功能,可以干净地输入当前代码块的入口点,将它们胶合到新的API中可以启用用于自动化和集成的新选项。
文件
哈哈! 今天的文件记录比以前不那么重要了,但是在正确的剂量下仍然有用。 如果您正在编写结构清晰的代码,并使用线索填充的变量名和简单的结构,则该代码将不需要很多本地注释。 但是,勾勒出每个部分的基本角色,或者指出数据如何流经代码,仍然很有帮助。 指出代码可能存在的一些问题,并说明代码如何从异常中恢复(如果有的话),这也很有帮助。
[ 也在InfoWorld上:如何通过左移测试改善CI / CD ]
继续
一些聪明的程序员更名了重写代码的想法,因为“重写”一词听起来像是您第一次犯错。 “重构”具有更好的效果。 重构不允许先前的错误,这使得自我变得更容易。 改进代码的过程(通常只需一点点跳动)是在“完成”之后立即开始的一个好主意。 几乎没有什么改进和修复可以立即纳入代码中。
许多团队每天甚至每小时都在不断地重构,交付或部署新版本。 这些微小的变化本身看来并不重要,但是在数周和数月的时间里,它们共同构成了重大的改进。 迭代是如此频繁,以至于它们开始模糊完成代码与重新启动之间的界限。 这只是一个连续的改进和部署周期。
翻译自: https://www.infoworld.com/article/3529973/10-ways-to-improve-your-code-after-its-finished.html
代码改进