导航:首页 > 程序命令 > 程序员升级代码编写量下降

程序员升级代码编写量下降

发布时间:2022-08-25 05:13:33

‘壹’ 程序员怎么才能提高代码编写速度

万行代码这个有些扯,只能说应该干活麻利些。 敲键盘快是个很不错的特效,就像吉他手solo秀手速一样, 我觉得每个程序员都应该追求一下。 顺手的键盘机械键盘还是笔记本那种键盘,抑或10块钱一个的随机赠送键盘,总之挑一个自己适合的。 远离鼠标鼠标的定位功能远没有键盘精准。用光标键移动几下,和鼠标移动几十个像素,速度上完全不能比。 并且敲键盘是讲究节奏的,当你双手都放在键盘上的时候,如果为了某些操作,而去拿鼠标,就会破坏这个节奏,这样会影响你的输入速度。所以能不用鼠标就不用鼠标,遇到一定要去菜单里点个东西的时候,不放去看一眼快捷键是什么,然后双手回到键盘,用快捷键完成输入。时间长了,就都记住了。现在的开发环境快捷键都是很全的。 (不知道有没有人用VC6的 alt+E+I) 标准键盘指法这个不多说,混这碗饭吃的,这个都不会就说不过去了熟悉编辑器常用操作1. 控制光标的基本操作 行首,行尾,页首,页尾, 整词移动,常用的书签功能 2. shift键的含义 在编辑器中,shift键可以理解成取反(不只是编辑器,大部分环境下都是如此) 所以按住shift移动光标就是高亮显示 VC中ctrl+U是将选中字符小写,ctrl+shift+u就是全大写 3. 行选取。所谓行选取,就是shift+下移光标,这样选取的一行,就是带有换行符的了。再粘贴到别的地方的时候,就不用自己粘回车了。 这里比较容易发生的套路是:光标移动到要复制的行,然后两下home键,将光标移动到行首,然后按shift键同时下移光标(这是vc的操作哈,也许有不太一样的) 4. 复制粘贴 复制粘贴经常用的是ctrl+c和ctrl+v。 这里有强烈推荐的操作方式 复制:ctrl+insert, 粘贴:shift+insert。 这个方案的好处是两只手来操作,容易保持节奏,并且不容易犯错。 中文的问题避免不了会输入中文,但不要把中文设成默认输入法,并且把ctrl+space的输入法切换快捷键改成生僻一些的,避免误操作切换出来 远离IDE的函数提示(这个有争议,可以不认同)现在的IDE都很人性化,你输一个字母,就会出来一堆提示让你选, 甚至输一个括号,就自动帮你把另一半括号给敲出来了。 远离这些, 能关都关掉,否则你永远连一个函数都拼不出来。 这东西是破坏你输入节奏的元兇之一。

‘贰’ 程序员怎么提高代码编写的速度

一、强调基础知识

基础这个东西不是用说就能有的,常用的东西只有牢牢的记住熟悉才能了然于胸。如果你还在为一个基础函数参数返回值困扰,那你要多去背背理解基础知识别无它法。


二、学会找轮子,不要去造轮子


这个观点其实是有异议的,不造轮子是指你要去用一些成型库函数和api,不要唯我独尊,什么都自己写,这样的话你基本脱离不了低级趣味了。比如一个消息队列在c++中就有实现,难道你会为一个只用它来存几个字符串消息,自己写个消息队列实现?


三、找个好的IDE


java开发的弄个eclipse,window开发用vs,linux开发用vim。一个好的IDE能让你事半功倍。更何况是在天朝,大部分都在ctrl+c、ctrl+v。一个好的IDE,自动补全,函数跳转查找,自动排版,检错。你决定使用一个IDE,你就应该去认认真真的学习它的快捷键和一桶使用方法。


四、重思考


一个段好的代码并不是它们月复杂越好,简单实现复杂功能才是我们最需要的,liunx内核代码虽大,但是那些金典的算法实现的代码精炼的不能再精炼了。昆明北大青鸟http://www.kmbdqn.cn/建议要提高编码速度更重要的是简化梳理程序流程,以最小的代码量完成功能。所以编程最重要的事情是思考。


‘叁’ 程序开发者们对于未来程序开发的一些趋势看法。。。未来的程序开发是不是会出现代码量越来越少这样的趋势

也许吧

‘肆’ 如何提升程序员的代码编写能力

一、先列三个常见的开发场景:

1、拿到一个模块详细设计文档,大部分程序员的通常做法就是开始搭建界面代码,然后从第一个按钮点击事件或页面Load事件开始写第一行业务代码。写的差不多了,就运行一下,发现哪里不是自己想的那样,就改改,直到改到是自己预想的那样。

2、做完了一个功能模块或几块相关联的功能模块,输入111asd,发现新建正常、保存正常,就提交给测试人员。测试员用测试用数据、测试场景用例来测试,发现有问题,就登记bug。对于严重的影响下一步测试的BUG,测试员就用内部IM通知这个开发人员。对于不影响继续往下测试的BUG,测试员就登记下来,等程序员有空时处理。

3、程序员一般工作不希望大家打扰,所以开发起来就是开发。等手头开发告一段落,就看看BUG库。发现有与自己有关的BUG,就从第一个BUG开始看起。就开始通过IM和测试员掰扯起来(这不是个BUG啊、业务逻辑不是你想的那样啊、我这里不能重现啊、你给的信息描述不清晰啊),于是IM几来几往,甚至跑过去当面交流一番,甚至会拉扯上产品经理一起讨论,更甚者需要项目经理或产品经理发起一个会议来集体讨论一下

这是不是很熟悉呢?这就是大部分程序员开发的三个步骤:写代码、自测、修复BUG。

二、说好的代码设计、代码测试呢?

代码设计?那不是都有开发平台么,已经固化了啊。那不是维护旧功能做完善修改呢么,又不是写新代码,只能在现有代码基础上修改啊,你又不能大幅重构。

代码测试?你丫需求讨论期、产品设计期、设计评审期那么长,都把研发项目时间占光了,就留下2个星期让我们写代码,我们哪里有时间搞那么深的测试。还想让我们搞结对编程?还想让我们搞测试驱动开发?

而且你看测试,什么功能测试、集成测试、性能测试、安全测试、安装部署测试、升级测试、迁移测试、UAT测试,一大堆测试,测试也需要很多时间。

一个项目,需求讨论、产品范围规划与评审、产品设计与设计评审占了一个半月,开发+自测就一个月,测试占了一个半月,这就4个月了啊。

三、为啥程序员写代码总是写写测测?

刚才大家也都看到了,大部分程序员都是从界面代码开始写起,而且写一写,就运行一下看看。为什么会是这种开发方式?

那是因为大部分程序员缺乏在脑子中的整体建模能力。只能做出来一点,真实的感觉一下,然后再往下。

有些是产品经理的上游就有问题,没给出业务流程图(因为产品经理也没做过业务),也没画清楚产品功能操作流程图。

为啥没给出业务流程图?因为产品经理不熟悉业务,另外,产品经理也没有流程建模能力啊。为啥没画清楚产品功能操作流程图啊?因为不会清晰表达流程啊。

很多产品经理、程序员,都缺乏分类、分层、相关、先后能力,更别说总结、洞察能力。

这是基本训练,是一个做事头脑清醒的人必备的技能,这不是一个程序员或产品经理或测试员的特定技能要求。

我经常看书就梳理书的脉络,每看一本就写一篇总结。我过去闲扯淡还梳理过水浒传、红楼梦的人物关系图呢,其实就在事事上训练自己的关联性、层次性、洞察性。

我经常面试一个人时,我会问这样的问题:“你把我刚才说的话复述一遍,另外你再回答一下我为什么会这样?”,其实,我就在看一个人的细心记忆、完整梳理、重现能力,我也在看一个人的梳理、总结、洞察能力。

我个人写代码就喜欢先理解业务流,然后理解数据表关系,然后理解产品功能操作流,大致对功能为何这样设计、功能这样操作会取什么表、插入或更新哪些表,哪些表的状态字段是关键。

然后我写代码的时候,就根据我所理解的业务流、功能操作流、数据输入输出流,定义函数,定义函数的输入与输出。

然后,我会给函数的输入值,赋上一些固定值,跑下来看看能否跑通这几个关联函数,看看还需要怎样的新增函数,或者看看函数的输入输出参数是否满足跑通。

剩下的事,就是我填肉写详细逻辑代码了。

当然,大部分人没我这样的逻辑建模能力。怎么阅读理解也想象不出来,也没法定义函数。毕竟有逻辑建模能力的程序员都很少,100个人里有10个,已经是求爷爷告奶奶好幸运了。

那怎么办呢?

我建议是分离分工配合,这就是现实中没办法的办法。让有逻辑建模能力的人来设计函数框架、来设计工具来设计代码模板,然后让没有逻辑建模能力的人来填肉写详细逻辑代码。

我们可以先从最紧要的模块开始这么做。不紧要的模块,还让它放任自流,让熟练手程序员继续涂抹。

我曾经还让有头脑的程序员做榜样,给大家分享他是怎么规划函数的,怎么做维护性代码的代码结构改善的。但是发现效果并不佳,其他人并没有因此能做代码设计。可能逻辑建模能力是个人的基本素质,是从小到大训练成型的,不是你一个大学已经几年的人能够短时间内可以训练的。

所以啊,还是让能走的人先走,让从最紧要的模块开始这么做。

不必担心这样做后,因为过去一件事被分工(一个做代码框架一个填肉)成两个人做了会降低工作效率。我们很多的工作效率低就是因为半瓶子醋搞出来的,来回反复修改。

真是应了刘德华在电影里说的那句话:说你又不听,听又听不懂,听懂了又不做,做又做不好,做不好还不服气。

四、为什么大部分程序员不做代码测试或白盒测试或单元测试呢?

还是因为没有代码设计。因为没有函数啊。所以,一个按钮功能有多复杂,代码就有多长。我见过2000行的函数,我也见过1000多行的存储过程和视图SQL。怎么做白盒测试啊,这些代码都粘在一起呢,要测,就得从头到尾都得测。

所以啊,先学会设计函数,先写好函数,这就求爷爷告奶奶了。很多开发了5年的熟练手程序员,可能都未必会写函数。

函数的输入输出值就很有讲究。很多人都写死了,随着版本迭代,发现过去定义的函数参数不够用了,于是就新增了一个参数。然后,相关性异常就爆发了,其他关联的地方忘改了,到底哪些有关联,怎么查啊,本系统没有,没准其他系统就调用你了,你根本不知道哪个神经人曾经COPY过你的代码修吧修吧就改成了他的功能呢,而且里面的很多代码他看不懂也不敢删,只要他实现的功能正常了他也不管了。于是,你改了你这个函数,他的系统就莫名出错了。

所以,我一般会定义几个对象来做参数。另外,我也很注重函数的日志、函数的异常保护、异常抛出、异常返回。另外,我也很注重参数输入值的合法性校验。

所以啊,应该开发Leader们先制定函数编写规范最佳实践,输入输出参数怎么定义比较好,函数的返回值如何定义比较好,函数的日志记录应该怎么写比较好,函数的异常保护、异常抛出、异常返回如何写比较好。先教会一般程序员,先从会写函数开始啊。

当然,你光有一份规范,程序员们还是不理解、不实际应用啊。所以,还得Leader们做好典型的代码模板,里面是符合函数规范的代码框架,只有这样,一般程序员们才会照猫画虎适应了函数设计的编程习惯。

所以啊,我专门重新定义了leader的明确职责,其中第一个重要职责就是:负责工具/框架/模板/规范的制定,并且负责推广且普及应用落地。

你不明确定义Leader的这个重要职责,你不对这个职责做明确的KPI考核,谁尿你啊。你以为好的工具/框架/模板/规范是靠人们的热情、自发产生的么?我们还没有那么自觉高尚啊。

五、为什么大部分程序员不写注释啊?

我经常说一句话,千万别多写注释。为啥?

因为我们经常遇到的问题不是没有注释,而是更糟的是,注释和事实代码逻辑是不相符的。这就出现常见问题了:残存下来的设计文档是一个逻辑、注释是一个逻辑说明、真实代码逻辑又是一个,钟表多了,你也不知道正确时间了。

所以啊,产品文档、注释、真实代码,三者总是很难一致同步。我为了几百人研发团队能做到这个同步花了大量心血和办法,但我最终也没解决了这个问题,还把Leader们、总监们、我都搞的精疲力尽。

索性回归到一切一切的本源,代码,就是程序员的唯一产出,是最有效的产出。那么,让代码写的不用注释也能看懂,咱得奔着这个目的走啊。

为啥看不懂,不就是意大利面条式代码么,又长又互相交杂。

OK,我就规定了,每个函数不能超过50行。用这一个简单规定和静态代码检查插件,来逼迫大家尝试着写函数。有的函数属于流程函数,是串起其他函数的,有的函数就是详细实现函数,实现一个且唯一一个明确作用的。

有了流程函数和功能函数,而且每个函数不超过50行,这就比过去容易看懂了。

六、为什么大部分程序员不抽象公共函数啊?

我经常说一句话:千万别抽象公共函数啊。为啥?

因为大部分程序员缺乏抽象洞察能力。特别是有些积极热情有余、爱学习爱看书、半瓶子醋晃悠的二杆子,看了几本UML、重构、设计模式、整洁代码之道,就跃跃欲试了,还真敢给你抽象公共函数了。

一开始,他觉得80%相似,20%不相似,于是在公共函数里面简单写几个if..else做个区隔就可以。没想到,越随着版本迭代,这些功能渐渐越变越不一样了,但是这个代码已经几经人手了,而且这是一个公共函数,谁也不知道牵扯多少,所以谁也不敢大改,发现问题了就加一个if..else判断。

没想到啊没想到,这个本来当初公共的函数,现在变成了系统最大的毒瘤,最复杂的地方,谁也不敢动,除非实在万不得已,手起刀落。

所以,我平时告诫程序员,纯技术的、纯通用的,你们可以尝试搞搞抽象公共函数,对于业务的,你们还是简单粗暴的根据Leader们做的代码模板代码框架,乖乖的复制、修改、填肉吧。

你们啊,先从做模板做代码片段开始吧,咱们放到咱们内部代码片段开源库里,看谁的代码片段被别人复制的多,说明你的代码抽象设计能力越好了。那时候,我就大胆放心让你撒丫子跑了。在没有学会跑之前,给老子乖乖的复制、修改、填肉吧。

‘伍’ 为什么编程人员每天编写的代码行数很少

编程人员每天编写的代码行数很少,说明编程人员编程能力不够好,编程技术水平不行。

‘陆’ 普通程序员代码量一般要达到多少才会产生“质变”

熟能生巧,这话小孩子都懂的道理,恐怕长大的我们未必懂得。

只有老老实实的写代码,才能有所进步,有所突破,有所提升。如果,每天看着视频,不动手写代码,量达不到,还是手生,没有代码的感觉。写代码也是一项技术活,技术活靠的就是扎实严格规范的训练,才能有所成就。所以,代码的功力是写出来的,不是看出来的,保证每天都有代码量的产出,只有不断的积累,不断的打磨自己的技术,才能让自己脱颖而出,才能让自己更有竞争力。

‘柒’ 为什么国内程序员都很少进行代码重构

说到代码的重构对于国外的程序员提到的比较多,特别是大型的开源工程,基本上一个模块或者函数的实现会反复的修改,一个文件能被修改成千上万次,曾经订阅了linux内核组的邮件,每天的收到的修改文件成千上万,有时候一个文件都能被修改上百次,对于文件修改最疯狂的是google的chrome源码,重构的次数,让你觉得每天都在重写但是功能上感觉越来越流畅。为什么我们周围的程序员绝大部分时间做的不是这样的事情。

为啥从直觉上觉得老外的写的代买质量比我们的要高,我们国内的程序员绝大部分的时间是在赶进度,准确的来讲忙着增加功能和修改bug,其实也从侧面反映出为什么国内出不了android以及Linux等影响深远的 科技 创新,从全球开源代码的占比就可以看出,差距还是很巨大的。

为什么觉得老外写的代码比我们的强?

1.国内软件发展主要阶段还在解决有没有,还远谈不上强大
中国的软件经过近几十年长足的发展,已经取得了巨大的成就,特别在互联网行业已经有几个巨头跻身世界前列了,最近炒的很热的脸书的用户数据泄密事件,作为当事人扎克伯格,也在论述中提到中国有几个很厉害的互联网公司,这说明中国在互联网领域还是取得了相当大的成就,但是在一些核心的领域,或者门槛很高的领域差别还是非常巨大。

任何事情在发展的初级阶段首要考虑的是不是有没有,所以如同创业初期的公司会选择短时间内搞出来个产品,哪怕是不成熟的产品,然后快速的投入市场,根据市场用户的反应同步追踪问题,等到产品差不多稳定,并且产品在市场上有了一席之地之后,后续的事情就要考虑优化功能,对里面的代码或者产品的性能进行全方面的提升,目前国内大部分的互联网一般比较年轻,还在解决有没有的问题,相信随着时间的推移以及国内软件的发展,也会有大量的高质量的开源框架代码出来,但这一切都需要很长的时间。

所以国内的程序员大部分时间都是在赶进度和根据需求完成功能代码。

2.软件产业的底子还很薄弱, 历史 积淀还不够
举个很典型的例子,现在很多国内的程序员到了30多岁就开始考虑后续的转型了,因为后面的轻轻人会带来很大的冲击,所以大部分的30多岁的程序员都在考虑自己后路,都要考虑转型的问题。老的有经验的程序员反而转型去做管理或者合伙创业了,哪有几个还在安心搞技术,年龄大了还在搞技术的还被人鄙视,觉得自己没有出息。

但是在国外写代码是一种很常见的职业,和别的工种没有多大的差异,40,50岁了写代码也是比比皆是,做软件是一种技术工种,经验的占比是很高的,所以老程序员写出来的代码更加有深度,稳定性更高,一切的根源还是产业的发展不够成熟,需要时间和 历史 的积淀,从这方面讲国内的软件整体产业还是比较薄弱,从业人员的整体素质和工作氛围还有待慢慢的成熟,周围都是有经验的程序员在带领着如何去重构代码,如何提升代码的质量,而国内大部分的程序要还是被产品经理鞭策着增加需求和修改代码。

3.公司的文化差异
目前很多的中国技术公司更多的追求的是短期利益的最大化,在基础软件的投入远远不够,毕竟基础的投入很难短期见成效,在一个具体的场景,有一个产品主体的功能已经实现了,也能在用户那边投入使用了,一般的公司很难拿出时间来,让你做代码的重构,毕竟这种事情很难直接产生经济效益。这与公司本身的文化差异有很大的关系,重视的技术或者懂得技术的公司对于这方面相对比较重视,反之就差很多。

小时候课本上就说着我们落后100年,所以高楼大厦不是一天建成的,所以在追赶的道路很漫长,所以承认存在差距,然后努力加倍的去追赶。

Time is money. 以目前国内互联网的情况,需求应接不暇,程序员基本上都是被需求与业务赶着走,时间非常紧张,在这种情况下,程序员很多时候唯一的选择就是赶紧实现需求的功能。所以,一个项目下来,代码基本上都变得非常非常的“垃圾”。

也有很多程序员想过在项目结尾的时候进行代码的重构,基本上每个程序员也都知道重构代码的好处,但是并不代表着真正能做起来。还是那个原因,国内互联网的速度太快,需求应接不暇,做为程序员,基本上没有时间来做这件事情。

而另外一个原因是跟团队负责人有关。若团队负责人能够意识到重构的好处,那么他可以为此单独划分一段开发时间出来,让大家分别负责一个模块进行重构,这都是可以安排做起来的。这也需要团队负责人如何在需求人员的需求与代码质量的进度上做一个平衡,进行统筹安排。

最后我想说一个可能很少意识到的原因,那就是人员流动问题。国内互联网目前人员流动非常的大,尤其是北上深这样的互联网发达的城市,基本上是平均两年就会走一大波人,在这样的情况下,也会考验从业人员的职业道德,即我到底要把代码写的多好,要把代码的可维护性做到多好,其实这都是从业人员自身需要考验的问题,因为完成一个功能很容易,但是要考虑的全面就是另外一回事了。而人员流动带来的另一个问题就是有一些代码是很难看懂的,即有些代码在人员离开后成为了“ 历史 ”,无人敢动。这也会阻碍着软件的重构工作的进行。

从我所讲的这几种情况来看,重构其实是大家都能知道的好处,但是真正实施起来却又有现实的约束,需要负责人来做这样的统筹安排与推动。

成本太大
大多数软件产品的开发都是经过了很多开发人员的付出,如果进行代码重构需要了解产品、了解框架、了解代码逻辑,这个过程会花费大量的时间和人力成本,对于企业来说,效益是第一位的,与其花费精力进行效益不大的产品重构,不如去承接更多的项目来的实在。
领导决策
由于大部分企业的老板都是非技术人员出身,他们更关注效益和客户,为了符合企业的发展,在进行产品开发时会更多的采用新技术来吸引客户,花费精力重构代码不如开发一套新产品或者开发更酷炫的效果更具有实在意义。
代码规范不足
由于国内互联网较之国外起步较晚,很多企业发展时间较短,加之人员流动比较大等多方面的因素,很难形成标准、严谨、行之有效的代码规范,所以很多技术人员在开发时都是根据个人风格习惯在开发,等其他人接手代码时,缺少相关标准和文档,很难理解代码逻辑,花时间去了解代码、重构代码不如直接推翻重做来的方便。
客户定制化需求
部分企业创业初期对企业信息化是不够重视的,只有企业发展到一定程度才会考虑信息化建设,而由于业务的限制,大多数标准化的互联网产品都很难满足企业的实际需求,需要进行大量定制化的开发,对于互联网企业来说,即使产品开发足够完善,在实际项目中也需要进行扩展,倒不如直接在项目中进行调整。
程序员的发展限定
在国内很少有终身的程序员,大部分都会逐渐转向销售、售前、项目经理、产品经理等岗位,而这些岗位则需要了解业务、了解客户,对技术的需求反而不会太高,所以与其花时间去专研技术不如将更多的精力用在业务和项目层面。

代码能够重构对底层框架要求深度掌握、且代码框架本身要足够灵活,而国内绝大部分技术人员都是停留在对框架的使用层面、少数可以完善、结合使用,极个别的在做同语言山寨或者换一种语言重写,能够对产品体系进行把握、与时俱进扩展实在是凤毛麟角。随着国家的经济提升、IT行业逐渐成熟,在我国这么多IT公司基数下,即便是凤毛麟角的概率,重视基础框架、积累萃取、不断迭代完善的一些技术公司也会慢慢崭露头角、涌现出来的。

【国内程序员很少进行代码重构】,这个现象虽然没有什么调查统计,不过我写了十多年代码,也发现身边的程序员大多数是这样的,【宁可写新的代码,也不愿意重构老代码】。下面我也谈谈自己的看法:

系统没有问题,就是最大的功劳
我见过的大部分的传统行业的软件公司或IT部门是这样的(互联网公司不太了解),“只要系统稳定,那么就是最大的功劳”,而保持系统稳定最好的方法是什么? 就是尽可能的不要动系统!

可能很多人不能理解,但很多公司确实是这样,甚至公司对项目的考核标准中,项目有什么突破的权重很低,是否有生产事故的权重很高。所以很多“机智”的项目组成员,千方百计的不接需求,或者把需求推给别的项目组。在这种单位里面,别说重构了,新代码都写的不多。

测试覆盖度太低,重构代码没办法保证质量
代码重构,很重要的一个问题:“重构后的代码谁来保证?如果影响到原有的功能怎么办?”

这时候很有效的一个方法,是使用各种自动化的测试来保证重构代码的质量。

但是,大部分公司,不管是单元测试还是其他的自动化测试,都是不健全的,甚至是没有的。所以只要不是被逼不得已,程序员宁可重新写一个方法,也不愿意重构之前的代码。

其他

进行代码重构不是一件容易的事情,务必需要对需求熟悉;对代码 历史 变更熟悉;对代码框架,模块熟悉;对产品更新迭代做好风险把控,时间成本把控……

进行代码重构需要能力非常高,责任心非常强的人进行,甚至需要一个优秀的团队完成。

为什么要代码重构?理由一大堆,我认为主要有两条,一是原代码已不适合扩展新需求,二是原代码已拥肿不堪,乱七八糟。

为什么很少重构?除了上述分析外,还有其他因素,如人员流动快,原团队原作者早已不知何去何从了。又如需求和业务繁多,完成工作开发都累得半死不活,日理万机似的,哪有时间和心情重构?

谢谢大家。

1.国内程序员技术能力不足以进行代码重构

大量的软件从业人员连编程规范都不熟悉,怎么可能做代码重构?更多的人只会写写hello world,只会拷贝粘贴小段代码,连if else这种语句都写不清楚甚至漏掉逻辑,连面向对象的编程思想都没有,谈何重构?

2.国内程序员的沟通能力说服能力一般。

进行软件重构,必须说服经理,让经理相信重构会带来软件质量的提高和故障率的逐步降低,这样经理才会安排人力进行重构。

3.国内软件开发更注重bug的及时解决

国内软件开发大量的人力被分配到解决短期的某个bug,没人抽时间思考如何长久的彻底的解决软件缺陷,其实解决bug不重要,找到软件的缺陷或者性能低下的地方才重要,这些才是重构的点。国内加班加点疲于奔命式的开发,没人考虑bug率是否长期内能够收敛,总是先解决眼前的问题再说,处于一个永远解决bug的死循环里。

这种工作模式是愚蠢的,不是smart的。

软件开发,一定要动脑子,不要蛮干,这不是耕地,力气大就耕的多。

重构代码的目的说白了,就是让软件开发人员更自由。

谢谢楼主的问题,这是一个我特别想回答的问题?

为什么?因为,第一,我是一个对代码有洁癖的人,受不了一坨,一坨那样的代码。第二,我是一个践行Clean Code 的人,给大家我主要负责的一个项目的一组数据(JAVA),总代码量20万行,UT coverage(单元测试代码覆盖率)82%,代码重复率0.5%,代码规则(sonar)违反(Code issue)0,甚至连最低的违反都没有。

也正是因为我的项目在实践Clean Code上的数据,我经常去给不同的团队做分享,也对团队对这个重构不太上心有一些理解。

大致以下几个原因。

第一,也是最多的,交付压力,大部分人都会抱怨,你看我们有这么多新功能,还有那么多bug,根本忙不过来,哪有时间重构?

第二,重构意识不足,老板,管理人员总是希望这个我们要有,那个我们也要实现?为什么?因为别人有,别人有我们没有可能会造成用户流逝。即使有一些有见识的程序员和老板反应这个重构问题,但是重构从来不是高优先级的。毕竟,现在的软件的生命周期可能很短。

第三,人员流动性大,这个是我听过最奇葩的一个理由,我问一个来听培训的哥们,说你代码写成这样,以后怎么维护?这个哥们说,我也知道难维护,但我明年就跳槽了。

第四,设计上就不需要重构,曾经给一个保险公司做分享,我本人也是做金融相关产品后台的,我就问你们这样写代码,可能三四年以后就非常难维护了,还是要尽快重构。他们的回答是,我们不重构,我们只重写。什么意思那?就是一个系统,三四年以后在写一遍。

第五,程序员本身的问题,可能第一写单元测试,修改命名,修改代码结构,是一件很没有成就感的事情,也是一个没有多少附加值的事情。毕竟现在你去找工作,这个代码质量方面的问题会问得很少。

第六,我见过的我不能反驳的一个回答,我的英文太差,不能很好的命名,而我也不想学英文。

第七,反正我已经实现了功能。

最后,用一句话来提醒程序员们,重构是多么重要。

出来混迟早要还的,挖了坑迟早要填的。

在国内,【重构】这件事是程序员最喜欢做的事,而不是公司喜欢做的事。

但程序员喜欢并不能影响公司的决策,所以,国内的现象就是软件系统很少有重构。

其根本的原因在于,国内的公司所推出的系统大多没有重构的价值。

1、国内的互联网公司存在这样一种快节奏,那就是发现一个有价值的创意,就马上进入开发,开发完成立即上线,并立马推广使用。这是一种快速试错的模式,一旦发现系统在 社会 中没有引起反响,那就马上把系统再下线。这种情况下的系统哪来的重构价值呢?

2、即使一个系统上线成功了,也积累了大量的用户,貌似为了系统的稳定性和性能,可以有重构的机会。但事实上不是,国内公司仍旧不会选择重构,因为重构带不来新的价值。所以,公司多数都会在系统上添加新的功能来吸引新的客户,而不会考虑重构现有系统。

总得来说,引起重构的原因在于能够有持续的价值。没有价值的事,企业当然不会做,仅是程序员的一厢情愿而已。

你只是见到了你所在的公司现象,不代表所有,也不能代表大部分的。

代码重构还是存在的现象

代码设计烂,经常出问题、扩展麻烦、维护心累、数据混乱、结果不清醒、模块划分混乱

就可能要考虑到重构了

呵呵,

老大说:

你赶紧去修复一下这个bug,

还有几个功能没有实现,加班搞一下,

pm 说:

这个功能改一下,

还有这个,界面重新调整一下,

这个业务流,现在不一样了,

客户需求需要多几个功能,

老板说:

这东西下周能出来吗?

‘捌’ 普通程序员代码量一般要达到多少才会产生“质变”

有人说程序员的代码达到1万行就可以质变。也有人说每天至少100行代码坚持1年才可以。

这些说法只是部分人整理出来适用他们自己的方法。

由量变转化成质变,量大肯定能实现质变,但是更多的时候,质变应该是和一个人的思考相关的。做任何一项工作,如果真正的动脑了,OK ,及时没有量,也是可以发生质变的。

‘玖’ 程序员真的一年可以码3万行代码吗

您好:
随着工作年限的增长,代码量会逐年下降。
相对的代码质量会提高。
如果按照总量计算,三万代码不多,毕竟单独的大括号也要算一行的。。。

‘拾’ 程序员用C++写了两年了,公司项目不算多,代码量一般,想快速提升自己。

Effective C++, More Effective C++, 代码大全,设计模式解析,个人认为是比较有用的。

阅读全文

与程序员升级代码编写量下降相关的资料

热点内容
百度输入法双拼方案文件夹 浏览:380
cad中生成面的命令 浏览:758
clp在单片机中是什么意思 浏览:146
还珠格格韩国源码 浏览:892
linuxpostgresql配置 浏览:873
云服务器如何挂机赚钱 浏览:549
null是java关键字 浏览:688
看过读过听过是什么APP 浏览:834
java判断数据是否存在 浏览:15
一巴掌解压图片 浏览:976
自己搭建的服务器如何安全 浏览:753
miui源码公开 浏览:447
linuxbin是什么 浏览:332
php小项目留言板 浏览:955
得推论坛系统源码v24 浏览:67
android根据号码查询联系人 浏览:496
命令行ftp上传 浏览:338
大爷程序员 浏览:198
自私的基因pdf 浏览:479
程序员是怎么做优化设置 浏览:251