编程王道,为「慢」不破
最近一段时间,在团队中我发现好多程序员,尤其是初级或者新手程序员常常犯得的错误都很初级,经常犯一些编程中的大忌。不是没有能力做好,而是做事不细心,我一直在给他们灌输一个思想,其实编程的核心和王道就是:慢就是快。都说天下武功,唯快不破。但是在编程的道路中,天下代码,而是:唯「慢」不破。
今天,我们就来谈谈新手程序员或者经验少的程序员常常犯得大忌是哪些,表现形式有哪些,以及如何避免的问题。
1、兵马未动,粮草先行
所谓兵马未动,粮草先行,就是讲做一件事之前一定要做够充分的准备工作。而很多程序员犯得大忌和表现形式就是:原型需求和整个产品的业务逻辑都没有搞明白之前,就开始动手了。边做边开始捋需求,对于前端程序员来讲,这还好说一点,但是对于后端的程序员来说,真的是大忌了。因为架构的设计,数据库的设计都是要依据这个产品的业务逻辑来实现的。
这里讲的编程王道,唯「慢」不破,指的是前期一定要花大量的时间来搞明白产品的需求和业务逻辑,不要着急动手去做代码的实现。
我感觉作为一个程序员来讲,在正式敲代码实现之前,搞明白产品需求和业务逻辑到确定数据库的设计和架构的设计,至少得占这个项目所有时间的 1/3 左右才合适,甚至有的难度大的 ERP 式的系统,占到一半时间也有可能。只要这些确定都想通了,剩下的就是噼里啪啦的敲代码了。
之前,有个朋友开玩笑的说:
我看你们程序员敲代码都喜欢使用机械键盘,噼里啪啦的敲代码的声音很大,感觉你们是在做体力活似的。
我想说:我们其实喜欢的是噼里啪啦敲代码的那种感觉,键盘的敲击声能够给人带来一种爽感。但是我们程序员最动脑的工作其实就是前期的准备工作,是设计的思考,后期确实就跟体力活也差不多。
2、编程中慢在细节,快在编码
兵马未动,粮草都已经先行了,前期我们准备工作都做好了,剩下的就是敲代码了。虽然在编码的过程中确实很快,但是也要注意一些细节。
很多程序员编码习惯的问题,或者是为了追求速度的问题,导致在一些该注意细节的地方没有注意到。比如编程的大忌和表现形式就是:后台程序员逻辑判断考虑不周全,有的甚至不写,直到测试测试出来,才会写;而前端程序员不注意细节的体验问题,出现错误不弹窗处理,不告知用户,有些该提示的地方,不给用户提示,不是不知道,就是懒得写。
快在编码不假,但是要慢在细节。后端程序员一定要把逻辑判断想周全,前端程序员一定要注意用户体验。这都是经验。
3、编程大忌:不要抱有先实现,后完善的幻想
有很多程序员都有这样的借口,项目比较着急,我先实现这个功能,能用就行,后期我再回来完善就行。后台程序员可能会想,这个接口先写完,给前端用着,一些判断不先加,等 过后我统一回来完善。前端程序员想这个弹框不先写,等做完了,再一一加上。项目太急了,先做完再说。
这样能叫做完吗?编程的大忌,这是大忌。不要抱有先实现后完善的幻想。敲代码最重要的就是「一步到位」。
你告诉我:有多少程序员能有时间回来完善和重构的?你这样想了,后期不出 bug 或者测试不提,你可能都忘了,都可能记不起来这件事了。因为你可能在你心中永远都认为你在忙。
再者,一个程序员最讨厌的一件事是什么?修改代码,不管是修改你自己的,还是修改别人的。回来修改代码的时间是极大的浪费,以为你要在你写的忙忙代码中找到你当时写的不好的地方,完善它。你找代码的过程是非常浪费时间的。
有多少人能够回来完善?又有多少人会重构代码?反问一下自己。
总结
说完这些之后,我们再来算一下时间成本,为什么慢就是快呢?因为如果你前期花足了时间准备和设计,在编程的时候,又尽量完善的注意到了细节,你项目最终完成的时候,bug 就会少很多,就可以及时交付。如果你认为先实现,后完善,你项目交付测试的时候,bug 会很多,很多,你修改 bug 的时间绝对会大量的浪费时间,最后很容易导致项目不能按时完成和交付。
很多人算不过这个成本,慢就是快,看似你的快,其实并不是快,是伪快。所以,作为一个程序员切勿犯到上面提到的编程大忌。这是一个编程习惯和风格养成的问题。如果有一个好的变成习惯,你将会受益终生。
最后,编程王道,唯「慢」不破。
原文发布时间为:2018-11-25 本文作者:loonggg 本文来自云栖社区合作伙伴“非著名程序员”,了解相关信息可以关注“非著名程序员”。

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
JavaScript如何优雅实现继承?
一、对象冒充 其原理如下:构造函数使用 this 关键字给所有属性和方法赋值(即采用类声明的构造函数方式)。因为构造函数只是一个函数,所以可使 Parent 构造函数 成为 Children 的方法,然后调用它。Children 就会收到 Parent 的构造函数中定义的属性和方法。例如,用下面的方式定义 Parent 和 Children: 原理:就是把 Parent 构造函数放到 Children 构造函数里面执行一次。那为什么不直接执行,非要转个弯把 Parent 赋值给 Children 的 method 属性再执行呢? 这跟 this 的指向有关,在函数内 this 是指向 window 的。当将 Parent 赋值给 Children 的 method 时, this 就指向了 Children 类的实例。 二、原型链继承 众所周知,JavaScript 是一门基于原型的语言,在 JavaScript 中 prototype 对象的任何属性和方法都被传递给那个类的所有实例。原型链利用这种功能来实现继承机制: 注意:调用 Parent 的构造函数,没有给它传递参数。这在原型链...
- 下一篇
刚写完排序算法,就被开除了…
据说是一个月薪 9K 的 Java 程序员,因老板让他写一个排序算法,然后他就写了一段屌炸天的休眠排序算法,接着他就被老板开除了…… 排序算法代码大概是这样的: 这段代码有什么问题? 这个程序员更屌啊,数字排序,用一行简单的 Arrays.sort 就搞定的东西,他竟用到了这么多概念。 1、循环 2、线程休眠 3、多线程 下面贴上完整的代码: /** *微信公众号:Java技术栈 */publicclassArraySortimplementsRunnable{ privateintnumber; publicArraySort(intnumber){ this.number=number; } publicstaticvoidmain(String[]args){ int[]numbers=newint[]{102,338,62,9132,580,666}; for(intnumber:numbers){ newThread(newArraySort(number)).start(); } } @Override publicvoidrun(){ try{ Thread.sleep(...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- MySQL8.0.19开启GTID主从同步CentOS8
- Docker安装Oracle12C,快速搭建Oracle学习环境
- Docker使用Oracle官方镜像安装(12C,18C,19C)
- CentOS7安装Docker,走上虚拟化容器引擎之路
- Docker快速安装Oracle11G,搭建oracle11g学习环境
- CentOS7编译安装Cmake3.16.3,解决mysql等软件编译问题
- CentOS7编译安装Gcc9.2.0,解决mysql等软件编译问题
- Hadoop3单机部署,实现最简伪集群
- CentOS6,7,8上安装Nginx,支持https2.0的开启
- CentOS8编译安装MySQL8.0.19