首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何改善遗留代码

冻结数据库 直到你修改代码结束之前尽可能冻结你的数据库,在你已经非常熟悉代码库和遗留代码之后再去修改数据库。...如果旧代码很庞杂,那么现在正是让它模块化的时候,将大段代码分解成众多小的部分,不过不要改变量和数据结构的名字。...底层代码的重构 现在,你应该非常理解每一个模块的作用了,准备做一些真正的工作吧:重构代码以提高其可维护性并且使代码做好添加新功能的准备。...那样随着代码库的提升你也对代码的作用更加理解。一个典型的代码提交应该最多两三行。 发布! 每一次的修改都发布到生产环境,即使一些修改不是用户可见的。...的确,在按照以上步骤优化代码时会有一些重复的工作步骤。但是它确实有效,而这里介绍的任何一个步骤都是假设你对系统的了解比现实要多。我需要保持声誉,也真的不喜欢在工作期间有负面的意外。

52870

Go 语言怎么优化重复的 if err != nil 样板代码

= nil 样板代码是最令 Go 开发者难以忍受的,严重降低代码的可读性。 针对这个社区争论非常激烈的话题,笔者介绍两种优化重复的 if err != nil 样板代码的方式。...= nil { // do something } } 调用错误检查函数示例代码: err := SomeMethod() CheckErrors(err) 阅读上面这段代码...= nil 样板代码的重复出现。 04 总结 本文我们介绍怎么优化 Go 语言中重复的 if err !...= nil 样板代码的两种方式,笔者推荐使用第二种方式,因为第一种方式虽然简单,但是在一些特定场景并不适合。...通过在结构体中定义错误信息的字段,将结构体的方法和错误信息绑定在一起的优化方式,相比较第一种方式更加优雅。

1.6K20
您找到你想要的搜索结果了吗?
是的
没有找到

如何接手别人遗留下的代码

如果你需要修复遗留代码,那是因为你需要将风险降至最低;为什么你会故意采用无法量化的风险? 如何重构遗留代码 假设你不想面对大规模重写带来的成本和风险,那么如何重构代码呢?...例如,如何获取连接到测试数据库的代码如何确保测试之间的数据隔离(换句话说,运行测试的顺序无关紧要)?如何创建浏览器对象?当你真正动手时,你需要回答这些问题,以及更多其它的问题。...事实上,在许多方面它可以被视为无聊(虽然我喜欢重构代码),但我已经成功地在多个遗留代码库中使用了这种方法。...因此,你应当明白何时应该考虑修复遗留代码库。我建议你未雨绸缪。修复遗留代码库虽不如送火箭上天一般高难度,但它确实需要一定程度的专业知识来转换现有的代码库。...遗憾的是,大多数开发人员似乎对此技能并不感兴趣,他们似乎也并不想处理遗留代码库。

56130

程序员,该如何接手别人遗留下的代码

接手别人代码是程序员最不喜欢做的事情之一,特别是没有注释的代码,优秀的代码本身自带注释,现在很多优秀开源的代码注释极少,但大家基本上都能服气的确代码质量高,但国内软件开发环境绝大部分都是赶出来的代码,主要考虑还是短时间内能够完成功能需求...对于遗留代码如何处理?...1.首先保证原有功能的稳定使用,毕竟刚接手代码整体的设计思想以及理念都不清晰的状态下,维稳是第一要素,先是尝试看懂代码了解代码,做局部功能的修改,时间长了真正搞明白了再去做大规模的调整。 ?...2.搞清楚接手的代码在整个公司中的地位以及前景,同时对代码的优劣程度做出一个评估,如果是写的框架比较差,同时还是未来主打的一个方向,这个时候需要从长计议,考虑抽出一段时间对代码进行重构,使之真正成为有效的代码块...3.如果是非常优秀的代码,就不要想太多了,直接开始慢慢消化学习,从基本的api接口学习,利用好测试模块代码,成熟的代码维护起来也会比较方便,以学习态度对待。

96130

一日一技:警告但不禁止,遗留代码优化策略

但是,在正常公司项目中,我们可能会需要维护一些历史遗留代码代码规模大,函数调用层级非常深。并且之前的人已经使用字典来传递了大量的数据。 短时间内,我们没有办法直接把字典改成Dataclass。...对历史遗留代码的修改,必须要谨小慎微,稍不注意改错一行代码,可能整个系统就不能工作了。因此,我们的目标是尽量在不影响现有代码功能的情况下,以警告而不是禁止的形式告诉其他开发者,不要再加Key进去了。...如果你强行要加入,代码也能运行,但出问题你要自己负责。 我们知道,Python 的类型标注正好就是警告但不禁止。当你的类型有问题时,他会告诉你这里有错,但你强行要运行,代码也能正常工作。...我们来看一段代码: from typing import TypedDict class User(TypedDict): name: str age: int...'salary': 9999999999 } def test_dict(user: User): print(user['name']) 这只是一段看似非常普通的代码

14510

微软发布新的Visual C++代码优化

微软在5月4日发布了新的高级代码优化器,服务于Visual C++的后端编译器。提高了代码性能,可以压缩代码体积,将编译器带入了一个新的境界。...Visual C++的团队在博客上称,这将会是发布的第一个版本,鼓励大家进行尝试,提出建议和反馈。...新优化框架的目的是,希望能进行更多深层次的优化,比如利用更多的编译信息和现代编译器的开发。过去老旧的编译器,过时的设计让高级的优化和速度优化变得困难。...作为一个新的优化框架,将会成为未来优化的基础,所以它的一个目的就是,将实现、测试、评估变得更加简单。...新优化器的目标 提高代码的质量,包括提高性能,减少代码体积 设计一个优化框架,让开发变得更简单、潜在的错误更少 对代码提供更好的静态分析 专注测试和正确性 如何尝试 使用新优化器的编译器安装非常简单,只需要从

62460

一日一技:如何正确为历史遗留代码补充单元测试?

一个优秀的代码,单元测试的代码量,经常会超过被测试的代码本身。一个理想化的开发团队,可能有三分之二的时间是在写测试,剩下的三分之一时间才是写业务代码。...如果你的项目是从一开始就写单元测试,那么你写起来应该轻松又愉快,因为单元测试会促使你的代码自身变成可测试的代码。...但如果你接手了一个大项目,里面已经有几十万行代码了,那么给这些代码补单元测试会让你知道什么叫做痛不欲生。你会发现有一些函数,它让你不知道怎么写测试代码。...但你又不能随便修改代码的结构,谁知道会引起什么连锁反应?...但是每次测试都要从他们里面读取数据,这样就会导致测试代码依赖外部环境。如果MySQL或者Redis挂了,那么测试代码就会运行失败。

51440

如何使用Talisman检测Git代码库中是否遗留有令牌凭证等敏感信息

关于Talisman Talisman是一款功能强大的敏感数据检测工具,可以通过在目标代码库中设置钩子,来确保代码库中没有开发人员遗留的潜在凭证数据或敏感信息。...,而且还可以安装在我们初始化或克隆的任何新代码库中。...首先,打开终端并运行下列命令,然后下载并安装代码库: curl --silent https://raw.githubusercontent.com/thoughtworks/talisman/master...最后,选择一个Talisman需要扫描的代码库,并设置一个Git钩子为符号连接。这里可以将“SEARCH_ROOT”环境变量设置为目标代码库的路径。...处理已有钩子 在全局范围内安装Talisman不会影响代码库中已有的钩子。如果工具的安装脚本找到了已有钩子,则会显示在控制台中。

98040

祖传代码如何优化性能?

其次对项目进行一次压测,不知道现在的性能,后面的优化也无法证明其效果了。 以注册接口为例,当时注册的性能大概是40qps,记住这个值,看我们是如何一步一步达到1000qps的。...至于MySQL如何实现一个悲观锁,我相信你会的,所以我就不展开。...锁优化优化锁之前,我们先搞清楚为什么要加锁,在我反复测试,读代码,看文档之后,发现事情其实很简单,这个锁是为了防止App、Cluster、Endpoint重复写入。...这无法考证,但现状就是这样,如何破解呢? 首先是看这些表能否加唯一索引,有则尽量加上 其次数据库悲观锁能否换成Redis的乐观锁?...本文就以一种最小的代价来搞定对祖传代码的性能优化,当然并不是鼓励大家都去取巧,这项目我也正在重构,只是每个阶段都有不同的解法,比如老板要求你2周内接手一个新项目,并完成性能优化上线,重构是不可能的。

31831

如何写出优雅的C++代码

工欲善其事必先利其器,优雅的代码离不开静态代码检查工具,大家可能平时使用较多的是cppcheck,但今天我想跟大家分享另一个静态代码检查工具clang-tidy。...不同于cppcheck使用正则表达式进行静态代码分析,clang-tidy是基于语法分析树的静态代码检查工具,虽然它的速度比正则表达式慢一些,但是它检查的更准确、全面,而且不仅可以做静态检查,还可以做一些修复工作...; return 0; } 我们都知道在C++中应该更多的使用nullptr而不是NULL,这里使用了NULL而不是使用nullptr,可能我们在开发过程中没有注意到这种用法,所以clang-tidy...该工具还可以检查代码是否符合编码规范,例如Google编码规范等,看这段头文件相关代码: #include #include #include ...而且适用于Windows/Linux/MacOS多平台,还支持命令行,CLion/VSCode/VSStudio插件等,检测规则还可以定制,重要的是免费开源,快去用起来吧,写出优雅的C++代码~ 参考资料

1K10

immutablejs 是如何优化我们的代码的?

我当时的回答是:immutablejs 就是 tree + sharing,解决了数据可变性带来的问题,并顺便优化了性能。今天给大家来详细解释一下这句话。 背景 我们还是通过一个例子来进行说明。...= 1; b = 2; c = 3; d = { name: "lucifer", age: 17, location: "西湖", }; e = ["脑洞前端", "力扣加加"]; 上面代码的内存结构大概是这样的...sd = { ...d }; const se = [...e]; // 有的人还觉得不过瘾 const sxbk = JSON.parse(JSON.stringify(e)); ❝旁观者:为啥你代码那么多...我们来看下 immutablejs 是如何解决这个性能难题的。...因此我的建议是技术咱先学着,如果项目确实需要使用,团队成员技术也可以 Cover的话,再接入也不迟,不可过早优化

58310

C++如何代码到游戏的?

C++如何代码到游戏的 这个简单啊。 你既然问C++了,那我问你,现在,我有一个Student类。C++怎么创建一个学生类的对象? // 嗯我会!...嗯,上面的代码在学校里都写过吧?有这个基础就够了。 那游戏是啥?无非是一堆图形堆叠呗,把上面的Student类换成窗体类,换成控件类,换成游戏中不同的元素类,然后再组合起来不就完了么。...新的窗体用一张传新的图片做背景,我再顺手给加上四个按钮,代码不贴了,就是上面的代码复制粘贴改改坐标,改改图片: 接下来就是游戏的主体部分了,也巨简单,有图就行: TDMenuButton *btn1 =...比如: 避开了注册按钮的回调, 避开了随机生成图片的时候要保证成对出现的算法, 避开了把这些按钮和数据做关联, 避开了如何通过数据计算两点能否连通, 等等 但这都不重要,不妨碍你简单体验一下C++如何代码到游戏的这个过程...我觉得还是叫玩具更合适些:跨平台编译不过,函数指针强转有问题,代码也写的乱七八糟....

89730

后端思维篇:如何应用设计模式优化代码

本文是后端思维专栏的第三篇哈,本文内容就是:在原有代码基础上,如何一步步通过设计模式去优化代码?日常工作中,我们用得最多的设计模式,就是策略模式、工厂模式和模板方法模式啦。...最近刚好用这几种模式优化代码,所以今天跟大家聊聊,我是怎么优化的,思路是怎么样的。希望本文对大家有帮助哈。...优化前伪代码的流程 策略模式是如何应用进去的 工厂设计模式是怎么使用的 模板方法模式又是怎么应用进去的。 唠叨几句 1. 优化前伪代码流程 大家先看下,优化前,原有代码的大概逻辑哈。...策略模式是如何应用进去的 大家是否还记得,如果代码中有多个if...else等条件分支,并且每个条件分支,可以封装起来替换的,我们就可以使用策略模式来优化。 回忆一下,什么是策略模式呢?...本文呢,也是阐述了我是如何在原有代码上,抽取出设计模式的。 ‍‍

50820

内存监控工具的构建:C++代码示例与性能优化技巧

我们将使用C++来实现它,并且我们将使用一些常见的C++标准库来简化我们的工作。图片在上述示例中,我们重载了new和delete运算符,以便跟踪分配和释放内存。...实现数据提交:在你的监控工具代码中,使用合适的库或方法,将格式化好的数据提交到网站的API接口。你可以使用C++中的HTTP客户端库,如Curl,来执行HTTP POST请求。...例如,在C++中,你可以使用Curl库来执行HTTP POST请求,如下所示:图片curl_easy_setopt(curl, CURLOPT_URL, "https://www.os-monitor.com...在现代软件开发中,内存管理是至关重要的,而构建内存监控工具可以帮助我们更好地了解和优化内存使用情况。...通过使用C++编写内存监控工具,并应用性能优化技巧,我们可以确保我们的应用程序在内存管理方面表现出色,提高性能和稳定性。

39400

如何用Swift重写C++ObjC代码库,并将其缩减70%

通过编写新代码来添加新功能,并将古老的遗留代码隐藏在抽象层下,这是更容易做到的。最终的结果是:积累了数十年的技术债会使新的开发变得令人担忧。...遗留代码包含了当前开发人员从未经历过的数十年的艰辛教训,即使是最初的开发人员,如果他们还在的话,也早就忘记了。虽然一个全新的开始可能会在美学上令人满意,但它也会为缺陷创造一个巨大的表面积。...在为我们的 iOS 产品添加了 AR 支持后,受 AR 在儿童故事书中使用的启发,我构建了一个原型应用程序,探索如何在数学教育中使用 AR。...C++ 所需的大量重复样板代码在 Swift 中消失了,只剩下表示逻辑所需的代码,使含义更加清晰了。...(发现该语句的限制性仍然是优化图形计算机性能的一个重要课题。)

89040
领券