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

在重构一些代码时,我发现了这个。我假设它应该在一个构造函数中。在课外,你有什么想法吗?

在重构代码时,发现某段代码应该在一个构造函数中,这意味着这段代码应该在对象实例化时被执行,以确保对象的初始化和配置工作得以完成。构造函数是一种特殊的方法,用于创建和初始化对象。它在对象被创建时自动调用,通常用于设置对象的初始状态和属性。

将代码放入构造函数中的好处是:

  1. 简化代码:将相关的初始化代码放在一起,提高代码的可读性和可维护性。
  2. 避免重复代码:如果多个地方都需要执行相同的初始化操作,将其放在构造函数中可以避免代码的重复。
  3. 提高代码的可测试性:将依赖的对象和配置信息作为构造函数的参数传入,可以方便地进行单元测试,通过模拟不同的参数来测试不同的场景。

在课外,我有以下几个想法:

  1. 深入学习设计模式:构造函数是面向对象编程中的重要概念之一,学习设计模式可以帮助我们更好地理解和应用构造函数以及其他的面向对象编程原则和技巧。
  2. 探索新的编程语言和框架:了解不同的编程语言和框架可以拓宽自己的技术视野,提高解决问题的能力。可以尝试学习一些流行的前端框架如React、Vue,或者后端框架如Spring Boot、Django等。
  3. 参与开源项目:通过参与开源项目,可以与其他开发者合作,学习他们的经验和技巧,提高自己的编程能力和项目管理能力。
  4. 持续学习云计算和相关技术:云计算是当前和未来的热门领域,不断学习和了解云计算的最新技术和趋势,可以使自己保持竞争力,并为未来的职业发展做好准备。

腾讯云相关产品和产品介绍链接地址:

  • 腾讯云函数(Serverless):https://cloud.tencent.com/product/scf
  • 腾讯云云服务器(CVM):https://cloud.tencent.com/product/cvm
  • 腾讯云数据库(TencentDB):https://cloud.tencent.com/product/cdb
  • 腾讯云人工智能(AI):https://cloud.tencent.com/product/ai
  • 腾讯云物联网(IoT):https://cloud.tencent.com/product/iot
  • 腾讯云移动开发(Mobile):https://cloud.tencent.com/product/mobile
  • 腾讯云存储(COS):https://cloud.tencent.com/product/cos
  • 腾讯云区块链(Blockchain):https://cloud.tencent.com/product/baas
  • 腾讯云元宇宙(Metaverse):https://cloud.tencent.com/product/mv
页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

关于单元测试

偶然想起@jeffz_cntwitter上问:“私有方法真的不应该单元测试?为什么觉得有的组件只是逻辑复杂一些,因此会提取私有方法,并且测试这些私有方法的逻辑。...这两个阶段添加和修改的代码应该在130K+。(呵呵,看到这里一定觉得数据有问题。呵呵,确实看起来问题。但是,细节这里就不能多说了。) 目前的单元测试代码覆盖率应该在20%~25%之间。...单元测试应该在物理设计阶段进行规划,而不是完成代码后。 实践告诉,单元测试是需要良好的设计来支撑的。一个耦合度很高的模块几乎没有办法进行单元测试。曾经几次相对已有的代码进行一些重构来支持单元测试。...有时候一个产品发布之后,发现了Bug,下一个版本也要保证这个Bug原封不动的表现在那里(这时候,我们会说这是我们产品的一个Design)。因此,对代码重构就会成本很高。...如果这个函数具有了变化和复用的可能性,我们就应该将它抽象为一个独立的对象,并且对他进行测试。这是一个更好的设计,而不应该归入过度设计的范畴。

75080

C++初阶 类和对象(下)

什么这个形参得是被类对象的引用呢,直接传递这个要拷贝的目标不可以,不是一样的操作。...这样说吧,假设一个Date d和你个test函数,你想将d传递给test函数,于是编译器就会调用这个拷贝构造函数,而调用这个拷贝构造函数的时候会生成一个叫做date的形参,而这个形参刚好也是Date...类型的变量,那么它也会走向这个拷贝构造函数,于是拷贝构造函数调用拷贝构造函数,再调用拷贝构造函数....... 1.3 使用拷贝构造函数 简单的拷贝并打印一下,代码什么的自己去敲一遍效果好一些,别光看...(参数) 运算符重载既可以写在类的里面,也可以写在类的外面 而写在类的外面我们往往会用到一个操作叫友元,这个操作的大致意思就是令你这个类外面的东西成为这个类的朋友,因此这个类外面的东西就可以访问到类...想说的是,这样多少有点舍本逐末了,因为C++之所以会有类的原因,一部分就是因为多个结构体的函数和变量过于混乱,而按的方法去做,那么这个类的成员变量所有人都可以进行操作,那哪还有什么规矩,这个类的创建又有什么意义

14310

React 面试必知必会 Day9

这意味着调用 setState() 不应该依赖当前的状态,因为不能确定这个状态会是什么。解决办法是将一个函数传递给 setState(),并将之前的状态作为参数。...这种情况通常是由于回调引起的,当一个组件等待一些数据,在数据到达之前被卸载。理想情况下,任何回调都应该在 componentWillUnmount() 取消(解除挂载之前)。...通常,在对代码做简短的反馈迭代代码异味会暴露出一些深层次的问题,这里的反馈迭代,是指以一种小范围的、可控的方式重构代码。 6. React 中支持哪些指针事件?...React v16 中支持自定义 DOM 属性? 是的,在过去,React 习惯于忽略未知的 DOM 属性。如果写的 JSX 一个 React 不认识的属性,React 会直接跳过。...当使用 ES6 类应该在构造函数初始化状态,而当使用 React.createClass() 应该在 getInitialState() 方法初始化状态。

1K30

写给精明Java开发者的测试技巧

我们都会为我们的代码编写测试,不是?毫无疑问,知道这个问题的答案可能会从 “当然,但知道怎样才能避免写测试?” 到 “必须的!爱测试”都有。...我们遵循了AAA模式,并断言了一些发生了的事情——那么哪里错了? 首先,我们看到这个测试的名字:testFoo,并没有真正告诉我们这个测试在做什么事情,并且没有匹配任何一个我们检查的断言。...当编写软件,一种最佳实践是重构那些通用的代码片段,将其放入单独的方法,那么这些方法就可以代码中被调用很多次。这样做很有意义,因为我们只编写一次代码,然后也只需要测试一次。...通常,一个测试集中的许多单元测试可能都非常类似,唯一的微小区别就在于如何针对测试准备测试系统。因此,对于软件开发人员来说,将这些重复的代码从单元测试重构到帮助函数是很自然的。...结论 在这篇文章介绍了五个基本原则,这些原则会帮助我们针对应用程序编写单元测试。如果任何想法,欢迎通过下面的评论进行分享,或者可以Twitter上找到我:@cocoadavid。

2.1K10

一个完整的TDD演练案例(三)

字段 学员定义执行该任务的类,一种可能性是将输入的答案作为类的构造函数参数。...什么内容应该放在构造函数作为参数?换言之,构造函数参数与对象之间的关系是什么?之所以要作为构造函数参数,就是意味着某种场景下这些参数值应该在创建该对象就存在。...如果不是,就不应该作为构造函数的参数。觉得输入应该作为构造函数?如果要验证另一条输入应该怎么办?再创建一个InputValidator对象? 违反了阅读直觉。validate()方法验证谁?...对此,第二个任务已有描述,这里不再赘述。 重构:Answer的验证逻辑 开发第二个任务,我们已经Answer类定义了validate()方法。...实现时,应该如何重构现有代码

87770

关于烂代码的那些事(上)

2.写烂代码很容易 刚入程序员这行的时候经常听到一个观点:要把精力放在ABCD(需求文档/功能设计/架构设计/理解原理)上,写代码只是把想法翻译成编程语言而已,是一个什么技术含量的事情。...而随着编程技术一直不断发展,带来了更多的以前认为是傻X的人加入到程序员这个行业来。...即使认为他们写的代码是坨翔,但是从不接触代码的人的视角来看(比如说的boss),代码编译过了,测试过了,上线运行了一个月都没出问题,还想要奢求什么?...烂代码“烂”的因素有不确定性、开发效率也因人而异,想要证明这个东西“确实”会增加两天开发时间,往往反而会变成“看了3天才看懂这个函数是做什么的”或者“做这么简单的修改要花3天”这种神经病才会去证明的命题...最重要的是,最后的结果是一个完整的程序,可以按照日常工作的标准去评价程序员的能力,而不是从十几行的函数里意淫这个人在日常工作中大概会有什么表现。

83120

的手写 new 实现足够严谨

开始阅读这篇文章之前,可以对比下面这两段代码的输出结果是否一致(假设 myNew 是自己实现的 new 操作): function F(){} F.prototype = null const obj1...基本上,上面代码的实现没有什么问题,但是突然产生了一个疑问:当第一个参数是 null 的时候,Fn.prototype = proto 已经把构造函数的原型对象设置为 null了,为什么后面还要在判断第一个参数为...这就能解释为什么用 null 重写构造函数的原型后,实例的 __proto__ 没有跟着改变了,因为调用构造函数的过程链接上了 Object.prototype,可以说,这里实例的原型链并没有断开...实现一个更严谨的 new 大部分的手写 new 实现,通常都没有去检查构造函数的原型是否是一个对象。...所以,如果想实现一个更加严谨的 new,那么就不应该在内部去调用 Object.create 方法,而应该选择手动创建一个对象并和构造函数建立原型关系,同时,我们还应该加入对构造函数原型的类型判断,看到底是不是一个对象

49210

关于烂代码的那些事( 上 )

2.写烂代码很容易  刚入程序员这行的时候经常听到一个观点:要把精力放在ABCD(需求文档/功能设计/架构设计/理解原理)上,写代码只是把想法翻译成编程语言而已,是一个什么技术含量的事情。  ...而随着编程技术一直不断发展,带来了更多的以前认为是傻X的人加入到程序员这个行业来。...即使认为他们写的代码是坨翔,但是从不接触代码的人的视角来看(比如说的boss),代码编译过了,测试过了,上线运行了一个月都没出问题,还想要奢求什么?...烂代码“烂”的因素有不确定性、开发效率也因人而异,想要证明这个东西“确实”会增加两天开发时间,往往反而会变成“看了3天才看懂这个函数是做什么的”或者“做这么简单的修改要花3天”这种神经病才会去证明的命题...最重要的是,最后的结果是一个完整的程序,可以按照日常工作的标准去评价程序员的能力,而不是从十几行的函数里意淫这个人在日常工作中大概会有什么表现。

22240

异步函数的异常处理及测试方法

/ 可以 Javascript 的异步函数抛出错误?...可以从函数抛出错误,可以参照以下示例: ? 这是对的测试(使用Jest): ? 也可以从 ES6 的类抛出错误。 Javascript 编写类总会在构造函数输入意外值。...但是如果想从异步函数抛出错误怎么办? 可以测试中使用assert.throws? 各位看官请上眼! 测试异常 所以应该知道什么是 Javascript 的异步函数,对?...先看一段代码: ? 假设要添加异步方法来获取有关该人的数据。这种方法需要一个网址。如果url不是字符串,就要像上一个例子那样抛出错误。 先来修改一下这个类: ? 如果运行代码会怎么样?...那代码该怎么写呢?为了能够捕获错误,应该这样重构: ? 现在异常将会出现在控制台中: ? 如果你想要更多的try/catch.,一件重要的事需要注意。 下面的代码不会捕获错误: ?

2.9K30

要成为优秀的机器人工程师,该如何选择课程?

最后,当你收集到10~20条信息,停止。 阅读您的文档并查看您列出职位的入职要求。 他们的大多数需要高级学位?还是大部分只需要专科学位?这份工作还需要哪些技能?...问题 3: 已经几个课程选项,该如何选择? 选择专业之前,要确定什么类型的学位课程适合。然而,这远还未结束。现在,必须选择学位课程本身。但是,如何在两个不同的学位课程之间做出选择?...这只是一个起点。先到大学或学院里跟导师交流,然后再做出决定。了这方面的知识,就可以开放日的过程向课程导师提出更好的问题了。...例如,看起来很喜欢某个课程,但在这个特定的课题下是否足够的模块,可以问他们“的学位课程期间,如何才能获得更多课题?”...Eric问了一个问题,可以总结为“这个学位课程足以机器人领域找到一份工作?” 这个问题的答案,我们几乎总是说:No.

61450

的测试策略说了算

每次添加新功能都会感谢已经编写好的测试,特别是包含了众多功能的大型服务无法想象手动去验证每一个功能点意味着什么,那可能是个无稽之谈。...所以,想让再问自己一些关键的问题: 逐个类、逐个方法的测试总是有意义的哪些替代方案可以帮助我们更容易、更快地修改代码? 集成和端到端测试什么时候才有意义?...已有的实现不适合新的想法或环境,现在有两种选择:使用 hack 手段或重构。当然,我们总是选择重构假设逻辑拆分得很干净(只是将一些方法移到新的类),旧类保留对新类的引用。...但也许对“单元”的概念进行一番“重构”会更有意义。 很长一段时间,一直在想,为什么没有看到人们谈论这个问题。后来,找到了一些讨论这个话题的文章和视频。...阅读 Vladimir Khorikov 的《单元测试原则、实践和模式》一书这个问题和其他概念了更清晰的了解。 如果单元不是对应类,那应该是什么一个跨了几个方法或类的功能?

15220

GPT4结对编程实战,鹅厂一线研发真实使用感受

这里完善了的需求:我们接入层的正则应该在乎精确率,忽略召回率,旨在尽早发现一部份错误,而不是全部错误: 这一次的输出看上去还不错。但是懒、不想仔细看,又不放心写。...02、场景二:重构代码 我们写代码的过程,往往会因为疏忽,而产出各种「bug 和坏味道」。我们来试试 ChatGPT4 能帮我们做什么。...此外,还帮我们发现了个 BUG。 照例,让补充一下单测: 通过15分钟的简单交流,和 ChatGPT 一起完成了这次代码重构。...但是这里我们发现这段代码个BUG。当然,是不会自己动手修复的,让GPT4自己来吧: 其交付的整体代码虽然不算特别清晰,但做一些修改还是可以用的。...-End- 原创作者|胡宸源 技术责编|胡宸源 什么使用ChatGPT的小技巧和心得,欢迎腾讯云开发者公众号评论区分享讨论。

83230

新手程序员如何写出好的代码

代码评审——结对编程方面做了很多工作,因此以前个人认为代码评审的优先级较低。然而,许多团队发现代码评审很大的价值。 耐心——使用结对编程,很容易陷入争论。...我们程序员这个职业大部分人都不擅长处理人际关系,但这对我们很重要。 试试这个:当你在做结对编程的时候,会发现的搭档犯了一个错误,等着看他/她是否正式提交之前发现了自己的错误。...谦逊——经常被问到,“如何说服别人写干净的代码?”当然,这个问题假设是对的,他们是错的。 我们大多数人都在努力改变自己的想法。...但是,编写代码最有价值的技巧是代码静修(code retreats)中学到的(谢谢你,科里·海恩斯!)学习何时删除所编写的代码是非常重要的。不是说为了代码量更小而重构。...我们的生活还有其他的各种兴趣爱好,这也是花费更少时间打磨代码一个很好的理由。 但是,从来没有遇到过一个程序员不在乎代码

39150

从600场技术面试总结出的5个常见问题

是如何确定或否定想法的?为什么选择某种特定的方式实现某个东西?是否发现了代码的潜在问题?这个问题是什么?等等。 对的面试官来说,这些缺失的信息是一个隐藏的宝藏。...使用过的语言中,没有哪一种提供名为“a grouping”的数据结构。关于这个问题,会做什么假设呢? 大多数面试者立即假定一组(a grouping)数字就是一个数组。...但其实,面试者可以询问面试官,了解有关这个提问的一些更详细的内容,如果他们让做出不同的假设,则可以问一下他们假设好不好;或者问一下,是否可能影响算法的替代数据集,将使用它们作为测试用例。...然后,当我编写代码也倾向于安静地工作,但我肯定会不时地停下来分享的思考过程,然后,我们第一次运行代码之前,我会更彻底地向你介绍代码能接受?...或者,如何沟通或解决这个问题什么不同的期望?” 保证会让他们大吃一惊。大多数面试官都不会准备好让考虑他们的期望。

31620

高管必备思维:区分2类问题和4类可视化方法

如果从一开始就明白数据可视化并不是一个单独的问题,而是很多不同的计划、资源和能力的结合,的可视化结果会更有效。 之所以写这篇文章恰恰是因为发现了自己犯了这个错误。这篇文章是从一本书简化而来。...要么展示一些定性的信息,要么绘制一些定量的信息:一个想法一个是统计数据。这里要注意的是,这个问题是关于信息本身的,而不是你想最后展示信息的方式。...的听众往往是自己或者是几个人。 如果假设是成功的,那么就可以直接向你的老板展示一个表明性质的可视化图表。”这个图展示了为什么销售业绩发生震动。” 探索性的可视化一般两种。...我们上面的例子证明一个假设是否正确。但如果并不知道为什么业绩下滑,也就说不知道在数据什么。这时候需要挖掘工作簿的规律、趋势和不规则现象。...其他描述这个想法的方式? 数据范围一般是可控的,而且使用的图表类型大多相似,虽然希望用新方法描述可能会尝试些比较罕见的类型。

32020

观点 | 我们该如何学习机器学习的数学

但是在校外学习比较推荐成立学习小组或研讨会,它们同样能提供类似学校的学习环境。 研究实验室,这种课外学习可能是以阅读小组的形式进行。...资源:谷歌机器学习应用的四十三条经验法则(附 PDF) 学习必要的数学 如果一头钻进机器学习工作流,可能会发现在调试机器学习系统时会遇到一些困难。当遇到困难知道需要查找什么?...的权重是不是合理?为什么模型使用一些损失函数不能收敛?用什么样的度量方法衡量模型性能才是合理的?在这个时候,对数据分布做出假设、约束最优化方法或采用不同的算法都是非常有帮助的。...一些圈子里,研究人员依然质疑经验性的方法缺乏严谨的数学推导(例如,一些深度学习方法),无法为我们带来广义上的智能。 担忧研究界可能是建立已有的系统与假设上,并未扩展我们对机器学习领域的基础理解。...这个过程可能经历数千小的思考、提问、推翻问题寻求新的视角。「有趣的探索」能让科学家提出深度、洞见的问题,超越简单的想法和架构。 要清楚,机器学习研究,不可能什么都学。

25310

一份 2.5k star 的《React 开发思想纲领》

介绍 《React 开发思想纲领》是: 开发 React 一些思考 每当我 review 他人或自己的代码自然而然会思考的东西 仅仅作为参考和建议,并非严格的要求 会随着的经验不断更新 大多数技术点是基础的重构方法论...扪心问问自己,是否真的使用了某个库的 feature? 真的需要? 看看这些可能不需要的依赖 是否真的需要 Redux?可能需要,但其实 React 本身也是一个状态管理库。...Axios 是一个很棒的库,一些特性不容易通过原生的 fetch API 来复刻。...应该在面临需求的时候再去实现相应功能,而不是在你预见到可能需要的时候。代码应该越少越好! 1.3 发现了就优化 1.3.1 检测代码异味(Code Smell),并在必要对其进行处理。...如有任何想法,欢迎评论交流 ---- ❤️ 支持 如果本文对帮助,点赞 支持下吧,的「赞」是创作的动力。

79820

和祖传代码战斗到底:代码重构阿里妈妈的落地实践

甚至几次对“代码优化”后理论性能更好的代码重构,把变成更简单的样子……卡农响起,这不是进入了循环么!...如果只是应急,我们通过 hack 的手段打一个不优雅的补丁是可以容忍的(通常的做法是通用的函数里加一个标记参数和分支),但是当这种补丁累积到再一次让心烦意乱,就可以考虑定义抽象的范围了。...InfoQ:进行代码重构的日常工作,有没有什么印象深刻的踩坑经验? 冯雨:如果说是日常工作中进行代码重构的经验来看,最容易被忽视但其实非常难搞是“人”的问题。...但是使用过程,想要写一个很小的功能都需要走一遍繁杂的 AST 查找、构造和修改的过程,而且之后的可读性也比较差。...在这个过程,如果能形成一种经验,千万不要吝惜,把先通过一些线下交流分享给你的同事们,或是记录成文章分享到互联网上;更可以“码以载道”,通过一个开源项目帮助更多人,这样也会收获别人对的认可。

27110

像一名教育者一样思考代码质量

但是,如果工作一个对 Rails 都是新手的团队,这些菜鸟绝对会陷入绝望和沮丧。 这就是需要像一名教育者一样思考的地方。假设是一名教授。...也不知道能不能读懂。 这说明了一些问题,因为 Eric Normand 是一名函数式编程方面的专家。如果代码过于简洁,以至于即使是领域专家也很费劲才能理解,那么这可能不是应该追求的目标。...当代码注释这样的东西变得过时了,很容易编辑它们,但是对于一个视频,不能真正地编辑从 17:34 到 21:40 的片段。至少不太容易。 这个观点一些反对意见。...认为这个想法很好,但这是唯一的好想法?填空:“像个 ____ 一样思考代码质量”。还有哪些有意义的想法想到的最重要的是“可用性设计师”。为什么?...因为一直认为,用户测试是人们应该在代码做的事情! 想想看,文档最后一段所说的: 问问你自己,是否会有其他人会很难理解所写的代码 可用性设计师一直在做这类事情!这是他们的工作!

73730

分享8个 VSCode 进阶级快捷键,提升的开发效率

当您处于专注状态,您希望能够尽快将脑海中的想法转化为代码。必须使用鼠标并弄清楚某个东西的位置,或者需要调整大小可能足以让您从专注状态中分心。...对那个讨厌的utils.ts文件的位置有些模糊的想法。 然后,开始搜索。一个目录接一个目录,上下滚动,“它在哪里?!就知道它就在这里,伙计!”无望。...5、查找符号 使用模糊搜索在当前编辑器会话查找类、函数或属性的位置 Linux / Windows: Ctrl + T Mac: Cmd + T 最佳实践指出,应该在单个文件拥有42,069行代码...在你凌乱分散的代码,以极短的时间找到函数、属性和类的声明! 6、展开/折叠当前代码块 展开或折叠一个代码块,例如函数或类。...总结 希望这些快捷键能帮助您更长时间地保持专注,同时也能避免一天结束肩膀疼痛。 您有喜欢的快捷键?也许有些没有在这里提到的?别保守秘密!评论中分享出来吧!

71220
领券