为什么我编程的速度越来越慢了

前阵子,同事发现一个我年初写的一个 lib 中有一个 bug,并向我报告了错误现象。

然后我就去修复这个 bug,最后只修改了一行代码便解决了,解决完 bug 发现一上午就这么过去了。

好吧,一上午只修复了一个 bug,而且只改了一行代码,到底发生了什么,时间都去哪里了?回顾下整个过程,由于这个 lib 开发于半年前当我再回去定位 bug 时花了一点时间来回忆整个 lib 的代码结构设计。

然后找到了出问题的代码所在的类,但我没有立刻着手修改代码,而是先在 lib 的单元测试集中新写了一个单元测试,单元测试构建了该 bug 的重现场景,并顺利让单元测试运行失败了,然后我再开始去修改代码,并找到了出问题的那一行,修改后重新运行了单元测试集并顺利看见了绿条。作为一个公共 lib,修改完成后我还要为本次修改更新发布版本,编写对应的文档,并上传到 maven 仓库中,才算完成。

回想一下,发现时间主要花在了构建重现 bug 的测试场景中,有时为了构建一个测试场景编写代码的难度可能比开发功能本身更困难。

前面说了个修复 bug 的例子,虽然只是改了一行代码却有这么多事要做。但就算在开发新功能时一样要为主要场景编写单元测试,还要考虑更多的问题,比如有时在编程时会陷入冥想,但想的未必是深奥的算法问题,很多时候是在想一个好的名字(类名、方法名、变量名),好名字省去了很多注释不是么?

编程就是把人类的思维、设计、语言、逻辑和精神创造以一种计算机可以识别和储存的方式记录下来。程序员干的就是这么个活,当你最终坐在电脑前准备敲下代码时,已经到了最后的阶段,不仅要完整的记录下来,而且同样的事用更少的代码来完成就更好,这也是我们不断重构和优化代码实现的意义。更少的代码让我在半年后用更短的时间重新把它们加载进了我的头脑中,所以编程速度慢下来并不是坏事。

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-10-25 21:03:44

为什么我编程的速度越来越慢了的相关文章

自学编程变得越来越简单之后,那些老程序员是有多恐慌?

我大学时期在一所注重硬件系统的学校中学习电子和计算机工程,中途我发现了网页开发这样东西,它彻底改变了我的人生轨迹. 我是否希望自己学的是计算机科学还是软件工程?那还用说?但是,考虑到我一直在自学关于编程的知识,而且事实证明当今世界上大多数程序员(约 69%)都是自学成才. 过去几年的经验使我确信,未来,编程是一项基本技能. 接下来我们就来谈谈吧. 所谓,编程基本上是指编写计算机执行的指令. 其实我故意把它定义的比较模糊的,主要是为了确保我的观点没有被遗漏. 软件/应用/网页开发是一项需要多年经验

编程人生读书笔记(6):Joe Armstrong

Joe Armstrong发明了Erlang语言,并用它开发了开放电信平台(OTP). Joe的学习生涯很特别,开始学习物理,后来因为没钱念博士转而学习计算机.学习期间接触了人工智能并撰写了机器人视觉的论文. 接下来由于行业的变故,人工智能也搞不下去了.辗转到了瑞典空间研究中心,最后加入了爱立信计算机科学实验室,发明Erlang. 0.编程启蒙 中学时代学习Fortran,苦于每次只能提交一个程序,于是想到“偷懒”的办法——并发执行. 期间为同学们调试程序,标准开价居然是一杯啤酒. 1.对开发工

C#编程总结(七)数据加密——附源码

C#编程总结(七)数据加密——附源码 概述 数据加密的基本过程就是对原来为明文的文件或数据按某种算法进行处理,使其成为不可读的一段代码,通常称为“密文”,使其只能在输入相应的密钥之后才能显示出本来内容,通过这样的途径来达到保护数据不被非法人窃取.阅读的目的. 该过程的逆过程为解密,即将该编码信息转化为其原来数据的过程.加密建立在对信息进行数学编码和解码的基础上.加密类型分为两种,对称加密与非对称加密,对称加密双方采用共同密钥.非对称加密,这种加密方式存在两个密钥,一个是公共密钥(对外公开),一种

Python机器视觉编程环境搭建方法

Python机器视觉编程环境搭建方法 1. Why Python C/C++ 早期的计算机视觉领域大多数程序都是用C/C++编写.随着计算机硬件速度越来越快,开源平台越来越多,开发者选择计算机视觉算法的实现语言变得更加灵活,代码编写的效率和易用性成为选择编写语言时的考虑因素,而不再仅仅只考虑执行效率. Python Python的跨平台.开放性.易用性,加之丰富的资源使其成为近年来越来越多开发者的选择.国外出版了大量的Python编程.学习书籍,亚马逊搜索Python图书,结果列表长达100页共

游戏设计模式——面向数据编程思想

前言:随着软件需求的日益复杂发展,远古时期面的向过程编程思想才渐渐萌生了面向对象编程思想. 当人们发现面向对象在应对高层软件的种种好处时,越来越沉醉于面向对象,热衷于研究如何更加优雅地抽象出对象. 然而现代开发中渐渐发现面向对象编程层层抽象造成臃肿,导致运行效率降低,而这是性能要求高的游戏编程领域不想看到的. 于是现代游戏编程中,面向数据编程的思想越来越被接受(例如Unity2018更新的ECS框架就是一种面向数据思想的框架). 面向数据编程是什么? 先来一个简单的比较: 面向过程思想:考虑解决

编程之路漫漫,分享经验与你相伴

今天第一次上来博客园写写东西,之前在头条喜欢写一些杂七杂八的东西,但后来发现头条是一个鱼龙混杂的地方,什么新闻都有,要说发表技术的文章估计没有多少人看.毕竟在博客园大部分搜索的人都是一些有着相同梦想和需求的人,希望在这里可以认识更多大牛,也更希望我的分享可以给大家带来帮助,我今后会写一些关于自己学习C#语言.SQL数据库.数据结构及算法.JS.JQ等,以及开发ASP.NET程序过程中遇到的一些自认为觉得有必要留个底方便以后复习的东西,也欢迎各位读者前来交流学习,写的不好,请各位多多指教,人非圣贤

游戏设计模式——面向数据编程(新)

目录 面向数据编程是什么? 单指令流多数据流(SIMD) 什么是SIMD 为什么需要SIMD 支持SIMD技术的指令集 使用SIMD编程 使用汇编内联 使用指令集库 使用ISPC语言 并行循环 避免Gather行为 CPU缓存(CPU cache) 什么是CPU缓存 为什么需要CPU缓存 CPU缓存预先存的是什么 CPU缓存命中/未命中 提高CPU缓存命中率 使用连续数组存储要批处理的对象 避免无效数据夹杂在连续内存区域 冷数据/热数据分割 频繁调用的函数尽可能不要做成虚函数 重新认识C++ S

1.Python编程基础

1. 其实,程序指的就是一系列指令,用来告诉计算机做什么,而编写程序的关键在于,我们需要用计算机可以理解的语言来提供这些指令. 虽然借助 Siri(Apple).Google Now(Android).Cortana(Microsoft)等技术,我们可以使用汉语直接告诉计算机做什么,比如“Siri,打开酷狗音乐”,但使用过这些系统的读者都知道,它尚未完全成熟,再加上我们语言充满了模糊和不精确因素,使得设计一个完全理解人类语言的计算机程序,仍然是一个有待解决的问题. 为了有效避开所有影响给计算机传

14个优化网站性能提高网站访问速度技巧

相信互联网已经越来越成为人们生活中不可或缺的一部分.ajax,flex等等富客户端的应用使得人们越加“幸福”地体验着许多原先只能在C/S实 现的功能.比如Google机会已经把最基本的office应用都搬到了互联网上.当然便利的同时毫无疑问的也使页面的速度越来越慢.自己是做前端开发的,在性能方面,根据yahoo的调查,后台只占5%,而前端高达95%之多,其中有88%的东西是可以优化的. 以上是一张web2.0页面的生命周期图.工程师很形象地讲它分成了“怀孕,出生,毕业,结婚”四个阶段.如果在我们