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

在别人写代码修改这样保证正确性

就算有,不搞清楚以前逻辑和背景,就直接抛掉这些历史包袱不对。在修改别人写代码时候,我们需要信奉黑格尔名言:“存在即合理”。一定要弄清楚之前这样编写代码出于什么样考虑。...项目背景 这段时间我们团队在修改之前一个功能。在接触到这个项目的时候,设计方案已经被讨论了多次,已经到了详细设计阶段。...在视角需求是这样:就是一个查询接口改造,改造前代码逻辑被前人复杂了,这次一些从下游拿数据来拼接返回值逻辑可以改成从下游(数据基础服务)简单取部分数据,另外一部分写死。...详细方案设计在别人写代码修改,详细设计时,第一步要做充分评估改动影响;第二步画流程图梳理改动前后调用链和数据流,列出修改点;第三步定好测试关键案例,确保结果正确性。...HR小姐姐说不是单单问我,要问我们在场所有人一个问题:“代码都读过了,为什么有些人还对逻辑不清楚?”其中一个架构师回答到:“就是你上学时候读鲁迅书和现在读鲁迅区别。”

1.1K20

深入理解JS作用域链与执行上下文3

来源于:《 高性能JavaScript 》;好奇,怎样才能看到这个,不能通过代码访问属性???...你需要这样:图片参考 前端进阶面试题详细解答然后这样:图片好了,你已经看到了,[[Scope]] 属性下一个数组,里面保存了,作用域链,此时只有一个 global。...图片证明,全局作用域链在 全局执行上下文初始化时 就已经确定:我们来做一个有趣实验,跟刚才,按照描述方法,你可以找到 [[Scope]] 属性。那这个属性在什么时候被确定呢???...还是,初始化一个执行上下文,将本作用域函数作用域链确定。这是疑惑,无法证明这个问题,但是,更倾向于 2 观点,如果知道如何证明请联系。至少,《高性能JavaScript》中这样描述。...我们知道,如果作用域链越深, 0 => 1 => 2 => ... => n,我们调用 全局变量,它永远在最后一个(这里第 n 个),这样查找到我们需要变量会引发多大性能问题?

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

    深入理解JS作用域链与执行上下文_2023-02-23

    来源于:《 高性能JavaScript 》; 好奇,怎样才能看到这个,不能通过代码访问属性???...你需要这样: 图片 参考 前端进阶面试题详细解答 然后这样: 图片 好了,你已经看到了,[[Scope]] 属性下一个数组,里面保存了,作用域链,此时只有一个 global。...证明,全局作用域链在 全局执行上下文初始化时 就已经确定: 我们来做一个有趣实验,跟刚才,按照描述方法,你可以找到 [[Scope]] 属性。 那这个属性在什么时候被确定呢???...这是疑惑,无法证明这个问题,但是,更倾向于 2 观点,如果知道如何证明请联系。至少,《高性能JavaScript》中这样描述。 知道作用域链有什么好处?...我们知道,如果作用域链越深, 0 => 1 => 2 => ... => n,我们调用 全局变量,它永远在最后一个(这里第 n 个),这样查找到我们需要变量会引发多大性能问题?

    49320

    深入理解JS作用域链与执行上下文

    来源于:《 高性能JavaScript 》;好奇,怎样才能看到这个,不能通过代码访问属性???...可能还有其他办法,但,只摸索到了这一种。你需要这样:图片然后这样:图片好了,你已经看到了,[[Scope]] 属性下一个数组,里面保存了,作用域链,此时只有一个 global。...图片证明,全局作用域链在 全局执行上下文初始化时 就已经确定:我们来做一个有趣实验,跟刚才,按照描述方法,你可以找到 [[Scope]] 属性。那这个属性在什么时候被确定呢???...还是,初始化一个执行上下文,将本作用域函数作用域链确定。这是疑惑,无法证明这个问题,但是,更倾向于 2 观点,如果知道如何证明请联系。至少,《高性能JavaScript》中这样描述。...我们知道,如果作用域链越深, 0 => 1 => 2 => ... => n,我们调用 全局变量,它永远在最后一个(这里第 n 个),这样查找到我们需要变量会引发多大性能问题?

    48340

    程序员不仅要学会百度,更要懂得提问

    例如: 当你上传文件这个逻辑出现问题时,你问:"为什么没法上传文件",没有人能回答了你,你得自行排查,直到一个小范围. 例如: 上传文件,选择文件之后,发生错误....大神救我 你好 大佬求带 有没有人用过xxx(说一个框架,或者一个不知名项目) 大神这个怎么(直接要代码) 可以问个问题吗?(不说问题,等别人回答可不可以) 这个代码有什么错?...每种问题提问方式如下: 概念问题 概念问题,我们必须要描述准确,并且有自行了解过概念基础,例如: 不太清楚为什么要用面对对象,直接函数封装不行吗?...,但是文件夹存在 使用tp3.2时,session生存时间无法配置 逻辑问题 逻辑问题,我们需要详细描述某个功能哪部分逻辑,例如: 请问session过期怎么实现?...请问mysql连接池怎么实现? 性能优化问题 性能优化问题,需要先确认慢地方,然后截图,例如: 发现这段代码执行特别慢,有什么错误吗?

    89220

    10个最容易犯Python开发错误

    (一)滥用表达式作为函数参数默认值 Python允许开发者指定一个默认值给函数参数,虽然这是该语言一个特征,但当参数可变时,很容易导致混乱,例如,下面这段函数定义: 在上面这段代码里,一旦重复调用foo...下面来看看,这样结果: 解决方案: (二)错误地使用类变量 先看下面这个例子: 这样有意义: 再来一遍: 仅仅是改变了A.x,为什么C.x也跟着改变了。...实际上,这种解析方法也有一些玄机,看下面这个例子: 许多人会感动惊讶,当他们在工作函数体里添加一个参数语句,会在先前工作代码里报UnboundLocalError错误( 点击这里查看更详细描述)。...lst += [5]实际上就是lst = lst + [5],试图给lst赋值(因此,假设Python在局部作用域里)。然而,我们正在寻找指定给lst基于lst本身,其实尚未确定。...(五)修改遍历列表 下面这段代码很明显错误: 在遍历时候,对列表进行删除操作,这是很低级错误。稍微有点经验的人都不会犯。

    1.1K80

    附件3:eclipse memory a

    这段描述非常短,但我相信您已经可以从中找到很多线索了,比如是哪个类占用了绝大多数内存,它属于哪个组件等等。...接下来,我们应该进一步去分析问题,为什么一个 Vector 会占据了系统 99% 内存,谁阻止了垃圾回收机制对它回收。...现在,让我们开始真正寻找内存泄露之旅,点击“Details ”链接,可以看到如图 8 所示对可疑对象 1 详细分析报告。...我们查看下从 GC 根元素到内存消耗聚集点最短路径:我们可以很清楚看到整个引用链,内存聚集点一个拥有大量对象集合,如果你对代码比较熟悉的话,相信这些信息应该能给你提供一些找到内存泄露思路了。...Heap Dump文件中并不包含内存分配信息,所以通常无法通过Heap Dump文件解决谁以及在哪里创建了哪些对象这样问题。

    71710

    「首席架构师看敏捷数据」核心实践:测试驱动开发(TDD)简介

    如果您选择这样(您应该这样),那么大部分测试也可以在项目的早期完成。 使用传统测试,成功测试会发现一个或多个缺陷。TDD也是如此;当测试失败时,您已经取得了进展,因为您现在知道需要解决问题。...TDD一个有趣副作用是,您可以实现100%覆盖率测试—每一行代码都经过测试—这是传统测试无法保证(尽管它推荐这样)。...当试图理解一个类或操作时,大多数程序员首先会寻找已经调用它示例代码。编写良好单元测试正是这样——提供功能代码工作规范——因此单元测试有效地成为技术文档重要部分。...“当您查看图1中描述流程时,需要注意没有一个步骤指定对象编程语言,比如Java或c#,即使这些通常使用TDD环境。为什么不能在更改数据库模式之前编写测试?...为什么不能根据需要进行更改、运行测试和重构模式呢?在我看来,你只需要选择这样猜测,在短期内,数据库TDD,或者测试驱动数据库设计(TDDD),将不会像应用程序TDD那样工作得那么顺利。

    75820

    5000行 SQL 源代码,怎么读?

    “你这一行一个字段,你自己设置吧,其实不需要那么格式化,反而更简单。你看啊,一个 Insert 被几十个字段隔成了两屏,容易造成思维停顿。两行搞定事情,复杂了。还显得代码量大,失去耐心。”...此时代码走读,我们不停留在具体技术末节上,比如 unpivot 语法怎么样实现为什么有里三层外三层嵌套,为什么这里用了动态 SQL 去拼接。...把你认为创建一个订单需要记录信息给标出来,尽可能详细在流程图上标准细节,就好比人,在什么时候需要记录人信息,需要检验人信息;再比如货,什么时间段,要检查货库存,要记录货哪些属性,单价还是 SKU..."知道了,知道了,就是带着问题,主动去寻找答案!" “理解到位,就是这样。给自己找问题,千万别一遍看完代码,什么都没留下来。...我们应该在任何一段 SQL 中都找到可以学习地方,最好找到这段代码设计弱点,比如子查询嵌套太多,不简洁;比如筛选条件不够优化,需要代码重构,这就是第三点,批评实质。”

    93720

    如何提高阅读 SQL 源代码快感

    “你这一行一个字段,你自己设置吧,其实不需要那么格式化,反而更简单。你看啊,一个 Insert 被几十个字段隔成了两屏,容易造成思维停顿。两行搞定事情,复杂了。还显得代码量大,失去耐心。”...此时代码走读,我们不停留在具体技术末节上,比如 unpivot 语法怎么样实现为什么有里三层外三层嵌套,为什么这里用了动态 SQL 去拼接。...把你认为创建一个订单需要记录信息给标出来,尽可能详细在流程图上标准细节,就好比人,在什么时候需要记录人信息,需要检验人信息;再比如货,什么时间段,要检查货库存,要记录货哪些属性,单价还是 SKU..."知道了,知道了,就是带着问题,主动去寻找答案!" “理解到位,就是这样。给自己找问题,千万别一遍看完代码,什么都没留下来。...我们应该在任何一段 SQL 中都找到可以学习地方,最好找到这段代码设计弱点,比如子查询嵌套太多,不简洁;比如筛选条件不够优化,需要代码重构,这就是第三点,批评实质。”

    93720

    代码没几天,遇到一堆报错,该怎么办

    大家好,在之前我们已经详细讲过了在刚开始学习Python面对众多IDE该如何选择,今天我们接着聊聊在新手期最头疼问题,遇到代码报错该如何解决,希望能帮到正在学习Python你。...勇于尝试 在收到很多问题中,有很大一部分问题类似于: 这个变量是什么意思 这个函数有什么作用 这个框框能不能选中 这样行不行 ······ 这样问题会让人很无语,变量什么意思函数什么作用你执行一遍就能看明白...对于我这样行不行问题,一般都会建议你试一下,不要问别人行不行,行不行copy一份数据你试一试就知道行不行。...所以一定在提问时候: 说清楚自己想实现什么或者这段代码在做什么 完整报错代码与对应代码段 确保百度报错代码第一页没可用教程 最好能说一下自己已经做了哪些尝试 一个优秀提问至少要满足上面的两条,...争取一次性让别人定位到你问题所在之处,不讨厌花太多文字或者图片描述问题,反而对很多直接发个报错截图就问怎么办问题很反感。

    52720

    超级账本-如何贡献

    如需详细学习,请参考官方文档: - 官方文档 - 官方文档中文版 下面个人官方文档中文版本翻译GitHub仓库,欢迎大家star: https://github.com/TopJohn/fabric-docs-cn...项目管理 正如我们章程中描述那样,Hyperledger Fabric一个开放治理模型下管理。项目和子项目由一系列维护者主导。...如果你在提交第一个CR时候需要帮助,我们已经为你创建了一个简短教程。 修复问题和认领正在进行任务 查看问题列表找到你感兴趣内容。您也可以从求助 列表中寻找。...实际上维护者相对困难,他们需要审查所有正在提交CR并且评估他们是否应该被合并。您可以查看代码或则文档修改,测试更改内容,并告知提交者和维护者您想法。...总结 如果需要查看上述相关文档,也已经为大家做了翻译,需要详细查看每个细节朋友可以查看中文文档,或者点击博客右侧ARCHIEVEMENT之Fabric官方文档中文版。

    1.1K20

    正确复制、重写别人代码,不算抄袭

    不管你怎么,“重用”就是抓取别人代码,通过它接口来使用,而不去关心它内部结构。这段代码还可能会“偷渡”到一群横向依赖关系中去,这会给你带来麻烦。最少努力,带来最少控制。...复制:从 Github repo、代码片段集或者其他地方,选择你所需要代码。然后把它直接粘贴到你项目中。这段代码已经存在于你代码库中,而不再一个依赖关系。...基本上,你并不需要在搜索引擎中输入你想要东西,而是将该文本输入一个略微详细源码注释即可。然后,实现代码就会自动填充在下面。 真的!不是在开玩笑。请看一些关于它视频。...重写代码片段 如果 200 行以内代码片段,或者复制代码一定会逐行重写代码这样可以了解到这些代码如何工作,并且一些改动,使之更适合项目。...概括地说,在重写代码中,做了以下改动: 为变量重新命名,这样更容易显示它们用途; 使用更加具体方式来声明变量; 把某些代码重构为一个单独函数,来描述其用途; 删除另外一个第三方库(HighCharts

    1.2K20

    谷歌数据科学团队负责人:处理极大复杂数据三类实际建议

    在上次大改版之后四年时间里,每次检查时候,甚至发现有许多Goolge员工翻看它。 为什么经过这段时间,这个文档使那么多人产生共鸣?...它们会成为煤堆中金丝雀,分析所暴露更基本问题。从您数据中将他们排除,或把它们放在一起形成一个“异常”类别,这样可以,但您应该确保您知道为什么一些数据最后被放在这一类。...看实例(这里实例指数据实际情况) 当您在编写新分析代码,您需要看下这些底层数据实例,您写代码如何解释这些实例。不这样,要用分析代码复杂一些您基本上就写不出来了。...为了确保这是一个正确故事,你需要告诉自己这个故事,还预测了什么你应该在数据中能看到,如果假设真的,然后寻找证据表明它是错误这样就是问自己,“什么实验会让故事变得有效/无效吗?...理想情况下,你会有一个知道你正在寻找数据同行,但即使一个这样观察数据经验同行,大体上是非常有价值。以前观点提出了一些方法来让自己正确类型健全检查和验证。

    34020

    为什么要在2018年学习Python?

    这是想要回答问题。 为什么?简而言之,正在寻找一种新编程语言。在大学里学了几门Java课程,但我好几年没用过。学习了HTML和CSS,但我现在正在寻找一种可以用于Web开发以外语言。...作为一名数据科学家,她将Python描述为一种编程语言中“一种非常美妙,吸取了各种长处工具”。 “如果你想做简单事情,那可能一行代码。如果你想做一些非常复杂事情,你也能很好地控制它。”...这些人或是正在寻找最新知识,或是没有时间为每个目的而学习一种新编程语言。...学习Python,似乎许多做类似像我这样工作的人已经采取了行动。 ? 所以,下一个问题:可以学习Python吗?正如我前面提到编码技能没有什么可写。...这个数据看起来和Hillary观点一致——你可以用Python很多事情,这可能像我这样的人唯一需要语言。 04 所以接下来呢?

    50830

    React 即将推出 Compiler,时候告别 useMemouseCallback 了!

    反观 Vue.js 这样框架就不一样了,大家都说 Vue 相比 React 上手更简单,更适合初学者,主要就是因为它没有这么多弯弯绕绕,很多优化事项能在编译时就在编译时做了。...这次 React 推出 Compiler 可能要打破大家这个常规认知了。 React 官方博客这样描述: 当状态变化时,React 有时可能会过度渲染。...它让我们代码变得混乱,容易出错,而且需要额外工作去保持最新。 手动缓存虽然一个合理妥协,但我们并不满意。...React Compiler 基于 Babel 插件实现,它实际会做事情,你可以简单这样理解: 它会把我们常见 React 代码转换成每个钩子依赖、组件上属性,以及组件本身都被缓存代码,比如下面这段代码...HC ,又看起会小伙伴可以看看这篇文章:抖音前端架构团队正在寻找人才!

    26710

    如何使你开源项目成功

    2.解决实际问题 甚至在启动开源项目之前,甚至在编写第一行代码之前,都要花大量时间去寻找要解决实际问题。 总而言之,一个开源项目解决了开发人员正在积极寻求解决方案问题。 ?...对字符串并不特别热衷,创建这样库甚至可能很无聊……但是更重要发现了一个需要解决问题。 寻找问题要用到一些策略: 思考你遇到问题。你可以为此创建解决方案吗?...如果有的话,在任务结束后立即插入指向详细文档链接。 2. 说明 任务结束后,将进行简短说明:“为什么要用它?”它应该稍微详细说明任务。...4.2 文档 如果项目很大,README.md 可能不适合描述详细 API。需要创建一个描述 API 附加页面。...接受建设性批评,忽略垃圾评论。 8.结论 一个成功开源项目需要付出大量时间和精力。 首先,项目必须能够解决一个问题,并将其解决好。开发人员正在为他们问题寻找更好解决方案。

    1.1K30

    为什么要在2018年学习Python?

    但有什么理由会让人相信明年这个时候Python将不会受欢迎呢? 这是想要回答问题。 为什么? 简而言之,正在寻找一种新编程语言。 在大学里学了几门Java课程,但我好几年没用过。...学习了HTML和CSS, 但我现在正在寻找一种可以用于Web开发以外语言。 最重要要确保今天学习东西在今后五年也能用上。...但为什么这么多人选择了Python呢? 一个主要因素Python多功能性。 有超过125,000第三方Python库。...作为一名数据科学家,她将Python描述为一种编程语言中“一种非常美妙,吸取了各种长处工具”。 “如果你想做简单事情,那可能一行代码。 如果你想做一些非常复杂事情,你也能很好地控制它。...学习Python,似乎许多做类似像我这样工作的人已经采取了行动。 所以,下一个问题:可以学习Python吗? 正如我前面提到编码技能没有什么可写

    34630

    V8如何执行JavaScript代码

    通过上面的描述,我们已经知道了JavaScript通过解释器来进行翻译执行,那么JavaScript引擎V8执行Js代码详细过程怎么样呢?接下来我们详细分析一下。...上图一段Js代码转成AST后结构图,从图中可以看出AST代码结构化成树状结构表示,这样是为了更好让编译器或者解释器理解。...字节码机器码抽象,可以看作小型构建块,这些构建块组合到一起构成任何JavaScript功能。字节码比机器码占用更小内存,这也是为什么V8使用字节码一个很重要原因。...Ignition执行上一步生成字节码,并记录代码运行次数等信息,如果同一段代码执行了很多次,就会被标记为 “HotSpot”(热点代码),然后把这段代码发送给 编译器TurboFan,然后TurboFan...把它编译为更高效机器码储存起来,等到下次再执行到这段代码时,就会用现在机器码替换原来字节码进行执行,这样大大提升了代码执行效率。

    1.4K30

    medium 五万赞好文-《永远不懂 JS 闭包》

    (吃不透找我,找耶稣也没用, QAQ) 看完本篇,你会惊奇发现,竟然连以下这段代码都存在着闭包?!...; 关于执行栈操作,可见下面的动图理解: 我们再结合下面这段代码举例解析,来看看 JS 一步一步到底怎么: 1: let a = 3 2: function addTwo(x) { 3:...} 6: let multiplied = multiplyThis(6) 7: console.log('example of scope:', multiplied) 你能参照上一节解释对这段代码进行描述吗...vall 没有被销毁,因为它存在于全局函数执行上下文; 回到第六行,将返回值 12 赋给变量 multiplied; 最后打印输出; 这段描述中,置灰步骤就是和上一节描述基本一致,未置灰...看了以上三段具体步骤详细分析,相信再给你一段类似的调用代码,你也一定能通晓其中端倪,作出类似的解析!

    34710
    领券