高级程序员和普通程序员有哪些区别( 二 )



============我是睡了一觉没睡醒的分割线======
七 不做方案
不做方案代表什么含义呢?就是完全凭直觉行走啊。
跟闭上眼逛窑子一样。

写代码的好习惯应该是先在脑袋里把所有的需求细节过一遍,实现细节拿出来。
上个月就有一个张姓小菜鸡,做一个匿名评论的功能。
基本上没有什么经验,脑子也不好使,给出的方式是什么你们猜得到么?
用户刷新一次就往用户表里插入一条数据,密码默认昵称随机。

不多说了都是泪,我见过太多让人目瞪狗呆的方案了,看着满屏的代码,你怎么帮他调错调优,最好的方式就是全部重写。
做方案的好处太多了。

8 不关注性能
不关注性能也是新人很容易犯的错。什么是性能呢。对后端来说就是TPS和响应时间,对前端来说就是响应时间。
很多新人程序员的习惯就是把东西做出来,然后再优化。
最后就是东西做出来了,优化留给别人了。

对性能的关注也是晋升中级程序员最关键的技能点。在写代码的时候,有经验的工程师已经知道了这个方法这个函数这个功能点的性能怎么样,瓶颈在哪里。

9 害怕重构
“程序员最大的勇气就是看自己三个月之前写的代码。”
其实重构并不应该是在几个月之后重构,最好的方式是实时重构。写一天代码,70%的时间都放到重构上都不过份。
而新人呢,磕磕跘跘的完成一个功能,就跟多米诺骨牌做成的大黄蜂一样,你敢动一下他的代码试试?他会跟你拼命。
你让他自己动一行代码试试?

不重构在某种程度上也意味着你的代码实现无法重塑。
10 做出来就好,不考虑优雅的方案
有个词叫做最佳实践,其实编码规范和最佳实践,是编程功底的重要体现。
优雅方案可以认为是最佳实践的升级版,它和上面说到的不断的重构是相辅相成的。

不好的方案是什么呢?硬编码居多,没有可扩展性,用很丑陋的方式完成了功能。
上次他们去做了一个关于试听课的方案,一个人能试听多少节课,正常的逻辑应该是在用户的表里加一个字段来表示。
需求是写着邀请几个人,可以试听多少节课,所以他们判断试听多少节课就直接在通过邀请人的表里查询去做。

完全没考虑到以后如果我变换了试听课的判断条件怎么办?
实际上这是应该拆解成两部分,一个是试听课的产生条件,这是一个独立的模块,加一个是试听课的确认。
像这种例子太多了,也和不做方案,不考虑扩展性有关系。就是接下来要说的。


11 不考虑未来需求的变化
工程师的水准,其实可以分成以下几个阶段(马丹我找不到之前在哪个答案里写过了):
面向功能编程
面向性能编程
面向未来编程

工程师拿到需求的第一件事,应该聚集在以下几个问题:
第一 哪些需求是我之前完成过的
第二 哪些需求是有可能变化的
第三 有几种方案,分别支持什么样的需求变化

但是差一点的程序员就考虑不到那么远,一个是对业务不熟悉,判断不出来哪些需求可能会产生变化,一个是对可选的方案掌握的不多,根本就没有什么可选的余地,还有就是没有这种思维习惯,分不清楚哪些是现在要完成的,哪些是未来可能会支持或者是变动的。

12 遇到问题的时候不会试错
这也是新手常见的问题。很多时候新人会遇到问题,解决不了,去找一个有经验的工程师,这个有经验的工程师呢,大概也未曾遇到这种情况,但是他解决问题的思路清楚啊。
一会儿试试这个,一会儿删删那段代码,很快就跑通了。


推荐阅读