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

如何提升程序的可读性?像写书那样去写程序

它们使你更快速地工作,产生更高质量的成果,不容易被后来者超越,最最重要的一点是,不会因为某项技术的过时而失去价值。 在我看来,能写出简洁易懂的程序就是一项核心能力。为什么这么说呢?...首先,这是一项很有价值的能力。可读性好的程序更容易得到维护与复用,这就提升了你的工作价值。它还可以为你在团队中建立良好的个人声誉。...为了让读者能高效地阅读,我们的代码树应该具备以下特点 不能太深,也就是不应该有太多函数嵌套 不能太宽,也就是单个函数不能过长 平衡,即每个节点的子节点深度应该是均匀的。...接下来我们来看,写具体的逻辑代码时,程序与写作之间又有何相通之处? 首先,读书时大家都喜欢排版整齐的文章,这让人阅读时有一种舒适感。...表达能力强的编程语言更接近自然语言,在可读性上就有先天性的优势。所以在为一个项目选择语言时,编程语言本身的表达能力应该是一个重要的指标。

42450

如何像巫师那样隔空操作——聊聊迷你雷达的原理和应用

如图1所展示的那样,它们不仅能嵌入可穿戴设备,成为物联网的一类重要传感器,也会逐渐走入寻常百姓家,为生活和日常起居带来方便。 ?...图1 传统的探测侦查雷达(左)以及Project Soli中用于手势识别的迷你雷达(右) 相比于其它隔空操作技术,比如体感相机、超声波等,雷达有着一些天然优势:比如无论白天黑夜,暴晒寒风,皆可正常工作...这些特性让雷达,尤其是微型雷达,在未来都有着广阔的应用前景。除体感手势识别之外,亦可用于商业和住宅的室内室外监控,甚至隔空测量生命体征。...因为频率与距离的关系是线性的,通过检测反射波与发射波当前的频率差异即可推断物体的距离。从演示来看,笔者估计谷歌I/O发布的project soli就是一款基于FMCW的微型雷达。 ?...通过反射波与发射波的频率差可推测物体距离(右) 雷达的另一项优势是可以测量物体的瞬时速度,这就要提到物理中鼎鼎大名的“多普勒效应”了。其大意是说,反射波的频率会因为物体行进的速度改变而改变。

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

    【让高中生掌握深度学习】掀起DL炼金术之争的Ali,这次要像教物理那样教深度学习

    如果非要回答的话,我想回复她说,也许她的工程师们本来就应该害怕。 ? 一个神经网络的架构 想象一下,你是一名工程师,现在给你一个这样的网络,并要求你在数据集上让这个网络工作得更好。...在光学领域,你也需要像深度学习一样构建一个用于处理输入的组件堆栈。下图是一个镜头的堆栈图: ?...每年,美国有数百名光学工程师毕业并继续从事镜头设计工作。他们并不害怕自己的工作。 这不是因为光学很容易。这是因为光学的思维模型组织得很好。现代光学的教学方式是像下图这样抽象的。 ?...让我们从简单的事情开始吧。我们有很多关于深度网络的训练如何工作的思维模型。我收集了一些值得解释一番的现象。 让我们看看这些思维模型是如何解释这些现象的。...我敢肯定,感情是复杂的,但让我把这些作为一种现象记录下来,然后继续讨论。 现象2:浅的局部极小值泛化性比深的更好。 这种说法很流行。

    818100

    如何让机器人具备像人类一样的触觉?

    机器人真的只能是冷冰冰的么?科学家并不这么想,他们想让机器人能进化出“触觉”。外媒近日刊文,对触觉学的发展现状,及其与机器人技术的融合前景进行了详细介绍。...按照瑞典皇家理工学院表面化学教授马克·鲁特兰德(Mark Rutland)的解释,假如人的手指像地球一样大,它足以感觉出一辆汽车和一栋房子的大小差异。...但所有的智能引导任务,以及外科医生的常规活动,都是由机器来负责的。” 机器人蕴含危险 即使是在机器人的地位已经确立的工业领域,专家也担心,与机器人并肩工作的人可能面临危险。...Rethink的机器人则使用了“串联弹性促动器”——其本质上是关节处的一些弹簧,可以模拟人体肌肉和肌腱的弹性——和声学传感器,从而让机器人在与人类接近时能放慢速度。...例如,任何联网的机器人或机器手均可获取如何识别、抓取和拿起咖啡杯的信息。 其他触觉学研究人员相信,通过人工方式复制触觉将对自动化机器人的发展产生重要影响,甚至对增强人类自身能力的各种系统形成促进。

    63250

    如何让你的工作能够大量输出

    这是学习笔记的第 2012 篇文章 前几天梳理了一个表格,就是怎么让自己的工作状态能够更加清晰,而且高效。...首先对于我们来说,什么样的工作成果形式是大家熟知的,不一定是一个响当当的重大技术攻关,一些功能的改进或者性能优化,怎么让彼此可见,而这种方式其实不一定非要用很直白直接的方式告知,因为这样做的目的就是让大家知晓...重要不紧急:比如备份恢复的优化,监控报警体系的完善,数据库高可用方案的设计,分布式架构的演进等。 不重要紧急:一般都是份内工作,一些事务性工作的内容和收获,可以以邮件的形式整理出来。...其中重要不紧急的事情是我们需要细化完善的,而我们需要逐步把那些重要紧急的事情降维,比如我们可以在一个集中的时段处理事务性工作,而把更好的精力留给一些开发工作。...最后一个环节的梳理是重中之重,也是我们工作内容和质量的最终体现,毕竟工作的输出内容不光要高效,具备业务价值,而且具有技术价值。能够成为不可替代的角色,才是我们在互联网时代的核心竞争力。

    1.1K10

    如何让你的开源项目看上去像那么回事

    与之相反,如果你要将你的项目开源,对编码质量有很高的要求。而除了代码,一个开源的项目还有一些杂七杂八的东西,这些可能大家并不是很注意,但却能让你的开源项目「看上去像那么回事」。...其他可以给 README 加分的东西有: Badge,包括包管理、CI 状态、覆盖率、代码质量,这些都有 badge 可以用,可以到Shields.io选择你想要的,但不能放太多,6 个以下为宜。...CONTRIBUTING.md——贡献指南,包括如何设置开发环境,如何提交 issue,PR,如何跑测试,以及代码的规范等等。...Issue template/PR template——Issue 和 PR 的提交模板,有太多用户不知如何提一个好的问题,经常信息不全、只言片语,就指望你为他排忧解难,怎么解?用水晶球吗?...自动发布 Release 可选择的服务有 TravisCI, Jenkins, Appveyor, Azure Pipelines, GitHub Actions。

    17020

    JavaScript是如何工作的:存储引擎+如何选择合适的存储API

    浏览器中的数据持久化 现在,有相当多的浏览器 Api 用来存储数据。这里将逐一介绍其中的一些及它们的区别,以便后续我们能够容合理的选择使用。 然而,在选择如何持久化数据之前,有几件事需要考虑。...当然,有必要知道的的第一件事是你的 Web 应用程序应用场景是什么,以及以后如何迭代和丰富。即使你知道了这些,最终也会有几个选择。...视频游戏或其他使用大量媒体资源的应用 用下载一个或多个大压缩包并在本地将他们解压到一个文件目录中。 应用能在后台预取资源,从而让用户能够进入下一项工作或游戏等级,而不需要等待下载。...请注意,Cache 接口像 workers 一样,是暴露在 window 作用域下的。...IndexedDB 是一种在用户浏览器中持久存储数据的方法。因为它允许你创建具有丰富查询功能的 Web 应用程序,无论网络可用性如何,这些应用程序都可以在线和离线工作。

    1.6K10

    如何让你的程序员不要厌倦工作?

    免责声明:我很幸运地生活在一个程序员工作岗位供大于求的地方,所以对我来说在换工作永远不止一个选择。   如今我成为了 Enki 公司的合伙人与 CTO,同时我还要负责在公司里面打造工程师文化。...我工作内容的一部分就是确保我们的程序员不要对工作感到厌倦,就像我过去那样。   在团队的帮助下,我们设计了一整套策略去帮助程序员们对抗工作中产生的厌烦情绪,并将这些策略运用到了公司的实践当中。...我从这项工作学习到了如何高效分析数据以及 API 接口设计。但是在一年之后,我们依然在针对相同的数据库工作,使用的也是同样的技术。...想要解决程序员在维护代码中产生的无聊情绪有很多种方法可供选择,公司采用微服务战略只是其中一种可行方式。还有别的公司会通过打造智能工具去让代码维护工作变得更有效率也更有意思。...要留出固定的讨论时间,让整个团队都参与讨论接下来该做些什么、如何计划。想要保持这种开放讨论的企业文化,每个人都要对独裁式的管理方式保持警觉。

    1K60

    【Java】基础50:如何让写的代码像诗一样优雅?

    一、Stream流引入 这个流和IO流中的流很容易弄混淆。 但是它们是两个完全不一样的概念,Stream流是容器处理的简易API,使用起来特别方便。...Stream就好比在构建模型:关注做什么,而不是怎么做 for循环的语法就是“怎么做” for循环的循环体才是“做什么” ①过滤出姓刘的元素 ②过滤出长度为3的元素 ③打印集合元素 这些就是做什么,至于具体是怎么做出来的...,Stream流中不关注,并且使用stream流会让代码看上去也特优雅: ?...说白了,Java开发人员搞出这个Stream流,都是为了简化代码,让使用Java的人写起代码来更加地简洁。 2非终结方法 ?...④映射:map方法 看下它的源码: ? 参数:Function接口,昨天学的一个函数式接口。 T类型就是Stream流中的元素类型,R类型是新生成的Stream流中的元素类型。

    85011

    如何选择一份合适的数据科学工作

    本文我们介绍了数据科学相关的五种新兴职业,希望能帮助你选择适合自己的数据科学工作。 如今是数据科学的鼎盛时期......数据科学是未来职业安全的最佳选择 机器人有朝一日将取代人类的工作,这已经不再是科幻小说里的场景了,任何人在开始职业生涯时都需要考虑到这一因素。...对于那些不喜欢数据科学技术方面的人群,有什么选择呢? 以下五个数据科学相关职业,表明该领域不仅对企业的重要性日益增加,更重要的是,数据科学是21世纪最激动人心的工作领域。...选择适合你的数据科学工作: 有很多职业道路可供选择。为了帮助你找到适合自己的职位,下面是招聘中最常见的五个职位头衔,以及职位的工作描述。...然而由于其管理职责,这些职位对于从其他领域转行到数据科学领域的人群是不错的选择。 结语 尽管我们列出了数据科学相关不同职位的要求,但是每个职位的实际工作职责具体因公司而异。

    88790

    AI界的“海马体”:HippoRAG技术如何让机器像人类一样思考?

    这篇论文提出了让RAG赋予大型语言模型(LLMs)类似人脑的知识整合和多跳推理能力的方法,它比现有的迭代检索方法在同等性能下要快 10-30 倍。...因此,在理解HippoRAG的工作原理之前首先需要了解人类记忆模型的工作原理。海马体记忆索引理论为理解人类长期记忆提供了理论支持。...智能升级:HippoRAG技术的实际影响力在了解HippoRAG的工作原理后,下一步值得关注便是HippoRAG在实际应用层面能够带来哪些改变。关于这点,研究人员也在论文中进行了充分的测试。...它将能够像一位精明的侦探,通过缜密的逻辑推理,迅速地从海量信息中筛选出正确的答案。...甚至还能幽默地补充道:“经过HippoRAG的升级,我可以确认,我们不再需要任何胶水,哪怕是无毒的,来固定我们的奶酪。我们的目标是让奶酪在披萨上,而不是在笑话集里。”

    54210

    如何让你写的爬虫速度像坐火箭一样快【并发请求】

    这篇文章就拿他的代码作为样例,在原来的基础上进行一些调整,从而让他写的这个爬虫的运行速度能从龟爬变成像坐火箭一样快!...当然是选择代码最简单、改动最小,并且最容易看懂的协程啊!...其实很简单,协程可以让你写异步代码的时候能像写同步代码一样简单,在Python3中写协程代码的核心语法就是async和await这两个,举个简单的例子吧: def func(): print(1...有没有办法让它像requests库一样方便呢?...所以记住,一定要合理控制并发请求的数量,不要对对方网站造成过大的压力!你给别人留活路,别人才会给你留活路! 最后再留个小作业吧,如何对这个修改后的代码增加一道并发数的限制?在留言区给出你的答案。

    1.9K20

    如何让你写的爬虫速度像坐火箭一样快【并发请求】

    当然是选择代码最简单、改动最小,并且最容易看懂的协程啊!...其实很简单,协程可以让你写异步代码的时候能像写同步代码一样简单,在Python3中写协程代码的核心语法就是async和await这两个,举个简单的例子吧: 1 def func(): 2 print...有没有办法让它像requests库一样方便呢?...我们仅仅是对他原本的代码进行了一些微调,把最耗时的下载图片部分简单粗暴地使用asyncio.gather并发执行了一下,速度就从龟爬变成了像坐火箭一样快!...(其实代码中还有很多可以优化的点,这里就不一一拿出来讲了) 最后给大家提个醒: 虽然并发请求非常牛逼,可以让你的爬虫变得飞快,但它也不是不存在任何问题的!

    64420

    问与答91:如何到点后让Excel自动提醒我要做的工作?

    Q:由于工作太多太杂,导致经常忘记要做的事情,希望利用Excel工作表来定时提醒当前要进行的工作。也就是说,在到达某个时刻后,工作表中的文本框会自动显示该时刻应该做的工作。...如下面的图1和图2所示,图1为工作安排表,列A中为安排的工作,列B中为相应工作开始的时间;图2用于显示当前应进行的工作。 ? 图1:工作安排表。...列A中是工作安排,列B中是工作开始的时间,可根据需要修改和添加。 ? 图2:显示当前工作的界面。单击“显示”按钮后程序开始工作,当达到某时刻后,文本框中会显示当前应进行的工作。...rng.Find(dTime) Sheet5.TextBox1.Value =rngFind.Offset(0, -1).Value DisplayData End Sub 注意,工作表中的...“显示”按钮关联的子过程为“DisplayData”。

    1.3K10

    AngularJS ng-model 指令

    ng-model 指令的工作原理当使用 ng-model 指令时,AngularJS 会在后台自动创建一个监听器,用于监测表单元素的变化。当用户在表单元素中输入值时,该监听器会更新绑定的变量的值。...复选框(checkbox)ng-model 指令也可以用于处理复选框的值。当用户勾选或取消勾选复选框时,ng-model 指令会更新绑定的变量的值。...checkbox" ng-model="isChecked">上述代码中,isChecked 变量的值将通过 ng-model 指令与复选框的勾选状态进行绑定。...下拉框(select)ng-model 指令还常用于处理下拉框的值。当用户选择不同的选项时,ng-model 指令会更新绑定的变量的值。...通过 ng-model 指令,我们可以轻松地实现表单数据的同步更新,并且减少了手动管理表单元素值和控制器变量的繁琐工作。本文介绍了 ng-model 指令的语法、工作原理,以及在常见表单元素中的应用。

    18830

    GPS网络时间服务器是如何让集成系统协调工作的?

    GPS网络时间服务器是如何让集成系统协调工作的? GPS网络时间服务器是如何让集成系统协调工作的? 本文主要解释了区块链中的重要功能:工作证明(Proof-of-Work)。...区块链还有许多其他技术细节,但时间选择是基础性和重要的。没有时间就没有区块链。...谜题的最后一部分 解决方案必须是区块的哈希(准确说是区块头部)。正如我们所提到的那样,输入并不重要,但如果它是实际的块,那么无论何时找到解决方案,它都发生在我们的工作时间校验时钟的滴答处。...值得注意的是,我们的工作证明时钟仅为我们提供了滴答计时。没有办法从滴答判断顺序,这就是Merkle树的用途。 分布式共识如何? 共识意味着协议。所有参与者只能一致认可时钟的滴答别无选择能达成共识。...如果找到一种方法来减少工作的耗时就会产生万亿美元的问题,请让我知道!

    74320

    Angularjs基础(十二)

    ng-model-options       描述:规定如何更新模型             实例: 在失去焦点时绑定输入框的值scope 变量中。                 ...AngularJS 当前的 HTML 元素或其子元素不需要编译。             ...实例:通过点击checkbox 显示或隐藏列表             checkbox" ng-model = "showDetaile">               ...      描述:指定元素的selected 属性         实例:获取选中的选项:           checkbox" ng-model="mySel"...ng-switch-default>                     参数值: 值: expression 描述: 表达式会让匹配项显示

    3.1K100
    领券