新物网

当前位置:首页 > 百科

百科

编码在程序开发中要精心雕刻,避免程序中的“破窗效应”

时间:2023-10-14 20:39:48 静子
 大多数人都应该理解社会心理学的破窗效应[注1] (犯罪心理学),教育学家Jamess开始破窗效应 Q. Wilson和George L. 一篇题为Kelling的文章《Broken Windows》文章中明确提出[注2]:“如果一所房子的窗户坏了,没有人会修理它,不久之后,其他的窗户就
 大多数人都应该理解社会心理学的破窗效应[注1] (犯罪心理学),教育学家Jamess开始破窗效应 Q. Wilson和George L. 一篇题为Kelling的文章《Broken Windows》文章中明确提出[注2]:

“如果一所房子的窗户坏了,没有人会修理它,不久之后,其他的窗户就会无缘无故地被摆脱;一堵墙,如果有一些艺术涂鸦没有被清除,迅速 是的,墙上到处都是乱七八糟、难看的物品;在一个非常干净的区域,我们很抱歉不扔垃圾,但一旦地上有垃圾,人们就会毫不犹豫地扔掉,一点也不感到羞愧。”

我们一直在呼吁迭代开发。事实上,迭代开发的一个非常重要的目的是消除浪费,避免破窗效应。”

我们一直在呼吁迭代开发。事实上,迭代开发的一个非常重要的目的是消除浪费,避免窗口破裂效应。事情很难,过去很简单,更方便。步骤太重,过去轻一点,轻一点。尽可能根除研发障碍 解决破窗造成的生活环境问题。下面我可以从软件构建的很多方面来表达如何避免“程序开发中的破窗”。

脏编码
假如编码脏乱,以后人就很难理解了,人们往往对无法理解编码缺乏耐心,不愿意进一步理解。如果你不能进一步理解一些编码,你可能无法改进它 主要有两个结果:1、该代码被遗弃并重写。2、将此代码直接复制到其他地方。对于第一点,它会导致程序开发的消耗,并再次写作 不太可能及时编写一部电影,并可能引入新的bug。对第二点,我们都知道重复代码是设计腐烂的根本原因之一。

在编写程序时,我们可以继续使用一些标准,以确保我们自己的编码易于理解和自我描述。在开发特点时,不断应用重建方法,使我们的设计保持良好的状态。 我们可以避免再次摆脱窗户。

检测
没有测试,或者混乱的测试程序都是破窗滋生和传播自然环境。

并没有检测
在没有测试的情况下,当我们想重建一个代码时,我们就像没有保险绳在高空行走钢丝一样。我们很难采取行动,害怕突然失衡,从悬崖上摔下来死去。那样,在每个人的心里都会有恐惧 从长远来看,我不会重建阴影。最终的结果和上面一段说的一样,设计方案不断腐烂,然后就失去了操纵。

一旦有了单元试卷,就有了初步验收。当我们重建它时,我们可以从测试中快速获得反馈。当红条闪烁时,我们都知道每个人都会破坏一些现有的功能 慢下来修理。当绿条闪烁时,我们都知道它正在运行,我们可以放心地继续重建。一切都在我们自己的掌握之中,我们也会爱上重建。

测试程序混乱
有很多人认为测试程序不是交付给每个人的产品代码,可以不同,不需要花太多时间找出变量命名,命名的方式,我们不需要关心重复的代码。但 是……

混乱的测试程序与未测试程序相同,可能比未测试程序差。我们都认为我们会有测试,但测试也会给你一个不真实的报告。当我们发现重建破坏如此之深时, 早已无济于事。即使测试能给出真实的报告,如果测试程序混乱,就很难添加新的测试,每个人都会越来越害怕添加新的测试。但随着产品代码的演变, 测试程序也应该伴随着演变。测试程序越混乱,测试就越不可能改变,使其反映在产品代码状态中。终于等到一天,大伙儿决定离开检测,如果是大家再回来的话 有检测作为后盾的日子。
事实上,从某种意义上说,测试程序的清洁度比产品代码的清洁度更重要。由于良好的测试,我们可以自由重构自己的代码,即使现在我们的产品代码 我们不担心,因为有测试的保证,我们都知道我们可以重建过去。如果我们必须有一个混乱的测试程序,我们将没有机会重建前线。

无法检测
可测性是检验编码的规则。毕竟,规则通常很难实现。如果编码不能添加测试,经过几次探索,我们通常会放弃写测试的想法。当我们试对的时候 在代码开发测试中发现,在这方面,编码铁板与许多其他类别联系在一起,必须传输到许多超重目标参数值,如与设备交互代码和数据库交互代码联系在一起 模型目标难以模拟或插桩。没有办法,在进步的压力下,我们必须放弃加上测试的想法,这样就像上面一样,编码就像一只在辽阔的草原上奔跑的野兽,失去了操纵。

写一个可测试的代码很难,特别是很难将尴尬的代码改进成可测量的代码。但是有一个技巧,不妨先写测试,用测试推出我的产品编码,然后打开 从一开始,我们就得到了测试套件,把我的产品代码固定在那里,就像高空走钢丝时的保险绳一样;值得一提的是,我们还获得了可测试代码。

稳定性测试非常慢
事实上稳定性测试非常慢是一种数据信号,该数据信号告诫我们藕合的太紧了。许多控制模块必须编译程序才能操作测试。如果你必须运行20分钟的测试,你想经常运输 行检测么?如果一套测试需要10个小时,你想测试多长时间?稳定性测试缓慢是第一个打破的窗户。如果不快速修复,后面会有更多的窗户打破。

稳定性测试非常慢,我们不会经常运行测试,测试也不能立即给出反馈,这样测试效果就会大大降低。

首先,从编码实践活动的角度来解释编号中的破窗以及如何避免破窗。事实上,在程序开发的许多方面也存在类似的情况。

源代码管理
由于种种原因,许多精英团队使用了难以使用的源代码管理专用工具,或者完全由于制造商对高管的广告,使用了一个非常超重、美丽但无用的工具。在 经过一两次专用工具的折磨,团队成员会有一种恐惧的心态,尽可能延迟提交代码。提交代码需要足够的频繁性,即使是有价值的重新命名也可以一次性提交,这样 程序代码演变可以在编码复诊时间阅读文章中提交的代码注释进行演试。而且,每一次成功都有储存,所以当你犯错误时,你仍然有机会后悔,你仍然有机会回到一个 成功情况。虽然人脑很聪明,但也很容易出错,特别是在疲劳的情况下,如果我们一步一步地前进,一步一步地提交,我们就可以随时停下来。你还记得那种需要到还记得吗? 系统状态的游戏只能在某个时候存储?

有时并非专用工具难以使用,而是环境造成的。在分布式团队中,网络可能不好,远程控制源仓库往往无法浏览,或在提交代码时需要连接到VPN, 然后提交,从长远来看,团队成员会厌倦提交代码。因此,我们需要选择Git等分布式源代码管理专用工具。

无法集成化
开发设计的日常任务并没有完全完成。你还记得日夜奋战几次,以集成产品,处理多个控制模块的冲突吗?灵巧注重立即反馈,持续交货。假如集成化 一个产品需要几天时间。如何及时沟通?如果集成太难,大家都会害怕集成,尽量防止集成,但产品最终要集成,所以到了截止日期 等待,很多人日夜奋战,但不是敲代码,而是集成。

如果集成太难,为什么我们不继续集成呢?所有团队成员都在同一支部工作。连续交付网络服务器不断签入最新代码,运行各种检测,最终构建 建立可用的手机软件出去。只要有必要,每个人都可以随时提供工作中的app。

数据可视化
数据可视化是管理中的铁三角之一。许多管理者喜欢用各种华丽的专用工具来绘制华丽的数据图表。例如,使用Project制定具体的天人员计划,应用程序 powerpoint为新产品创造了美好的前景。好像这些都是做出来的,然后发给大家,就有一种感觉,这样的项目都在我操纵之内。事实上,无论多么优秀的专业软件或 不如纸笔。手机软件需要一段时间才能打开。随着手机软件的升级,手机软件的体积越来越大。打开一个庞大的Project文档甚至需要一两分钟,文本文档深埋在计算机文本中 深度的零件系统软件。寻找文本文档,打开,一段时间已经过去了,虽然这几分钟,从长远来看,我们不想看到这个东西,我们都认为这个东西在我们自己的脑海中,但事实上 并没有。整理需求分析文档花了很多时间和精力,最后变成了一纸空文。如果发现与需求不一致,为时已晚。为了避免研究这样的事情,不要摆脱第一扇窗户。

尽管到了21世纪,丰田还是在各个方面选择了最原始的管理看板。在程序开发中也是如此。抛开这些精致的软件,用最简单的纸和笔来规划、进步和用户故事 制作,然后粘在开发者抬头看到的墙上。不要画得太精致,因为越精致,就越不愿意改变,但程序开发中永恒不变的是变化,我们应该随需改变。

笨重步骤
一些公司明确了严格的开发、设计、测试和部署操作流程。如果开发人员想在接口测试中部署产品卖点,他们必须与许多相关负责人互动,并提交审批表,然后专人才能修复 在接口测试中部署更改的一行代码进行测试。不用说在这个过程中有多少等待,有多少消耗。光是这个笨重的步骤就会让大家望而生畏,从而导致对变化的恐惧,先连的改进都会发生 遭受遏制。

续篇
程序开发的各个方面都像一扇窗户,没有必要摆脱第一扇窗户,破碎也需要迅速修复,否则手机软件会像窗户一样打破,慢慢腐烂。

日本丰田远不如福特和通用汽车,选择5S精益生产模式[注3],然而,5S(梳理、整改、清洁、清洁和质量)的最终目的是 避免破窗效果。

注1: 社会经济学上还有一个破窗谬误,但与本文无关。
注2 : 更多关于破窗效应的信息可以参考wiki:http://en.wikipedia.org/wiki/Broken_windows_theory