伍佰目录 短网址
  当前位置:海洋目录网 » 站长资讯 » 站长资讯 » 文章详细 订阅RssFeed

原创 | 十年编程经验总结,三点技巧帮你提升代码能力!

来源:本站原创 浏览:144次 时间:2021-08-25

大家好,今天和大家聊一个老生常谈的的话题,作为程序员,我们怎么提升我们的代码能力?

在回答这个问题之前,我们需要先给代码能力下一个定义,搞清楚究竟什么是代码能力。只有找对了路才方便发力,很多同学对这个问题其实是不够清楚的。往往会觉得代码能力就是算法能力,就是去刷LeetCode或者是算法题。还有些同学觉得代码能力就是要多刷项目,项目做得多了,代码能力自然就上来了。

其实这两种看法我个人感觉都是有一点误区的,下面简单聊聊我自己的看法,希望能够帮助到大家。

语言基础

很多人看到这里估计要吐槽了,这不是废话么,程序员写代码语言没学会还怎么写代码?

其实还真不是废话,不同的语言有不同的特性,甚至有不同的原理,如果没有对语言基础有比较扎实的掌握,很容易犯一些低级错误。

举个简单的例子好了,之前认识的一个实习生,有一次写了这么一段Python代码,大家不妨看看有什么问题。

def funcA(param):    if param is not None:     return funcB(param)    return Nonedef funcB(param):    pass

不知道有多少同学能够看出问题在哪里,有一些同学可能会觉得是is not None的判断不对,应该写成not is None。其实问题不在这里,is not None才是标准判断的写法,只是这个问题当中的障眼法。真正的问题是在函数调用的部分,他把funcB写在了funcA的后面。

funcB写在后面有什么问题?

大家试一下就会知道,这样写Python解释器是会报错的,我们必须要把funcB写在funcA的前面。因为Python不是编译型语言是解释型语言,它是由解释器逐行执行的。所以它会先执行funcA再执行funcB,当它执行funcA的时候会发现funcB这个函数没有出现过,所以会抛出错误。

当时这位同学debug了半天也没有找到问题所在,甚至还一度以为是Python版本的问题。这其实不是他代码能力不行,而是对语言基础掌握不够扎实。

类似的例子非常多,因为每一门语言往往拥有大量自己的特性,如果我们对某一门的语言只是浅尝辄止,那么写出来的代码一定是非常不规范的。比如Java如果不知道抽象类,Python不知道可变参数、装饰器的话,很多时候写出来的代码看起来就是不舒服的,因为没有做到最简,会给人一种费了很大劲实现了一个很基础的功能的感觉。

所以语言基础也是代码能力的基础,大家不要看不起这个,觉得只要会基本的语法会写就可以了。其实这是大错特错的,一些特性和语法糖可能用得少,但是关键时候用起来是可以大大简化代码量以及增加代码可读性的。

代码规范

不知道大家有没有读过那些特别不规范的代码,我读过一些,真的是感觉眼睛被针扎了一样。

代码规范其实更多的不是能力,而是工程师自己的素养。素养高的工程师会自己主动了解当前这门语言的编码规范,绝不会怎么舒服怎么来。大家可以百度一下代码规范,每一门语言基本上都有自己的代码规范,而且这个规范是非常细致的,具体到变量名、类名、方法名、文件名、常量名怎么命名都有对应的规范。

不仅如此,还对一些特殊情况也做了限制,下面是我从Google的Java编码规范当中截取的一段,大家可以看下:


我们写出来的代码和这份规范越贴合,那么可读性也就越强,也就体现我们编码的素养越高。

代码规范其实并不仅仅包含编码的方面,同样还包含其他很多领域。比如数据库的连接池的使用,比如kafka的设置和使用,以及多线程的使用等等,都会有自己的规范。这些内容不仅是起到一个规范作用,当中的每一个点里面都是有对应的原理的,值得我们去深挖学习。

比如很多人都知道数据库需要用数据库连接池,那么请问为什么要用连接池呢?连接池的连接数又是怎么设置呢?其中的原理是什么呢?

看起来好像是面试题,但其中包含的就是我们对数据库连接底层的理解。我们弄懂了可能不仅在编码的时候用得到,也许在以后学习其他内容的时候也能串联起来。知识不是由许多点组成的,知识是一张网,需要把很多点串联起来。在我们串联之前,我们首先需要足够多的积累。

系统能力

系统能力是代码能力当中最高的要求,也是最贴合一个架构师能力的部分。

同样,我们来举个例子。比如你承接了团队当中的一个任务,开发一个新的系统。这个系统需要承接每秒100K请求的访问。这些请求的数据我们不是全部都要,需要做一定的抽样,并且还需要查询一些存储系统进行特征填充。最后把完整的数据存储下来。

现在这个任务交给了你,请问,这当中的性能瓶颈是什么?你该怎么设计这个系统当中的细节?

估计很多同学会把眼光放在100K这个数字上,觉得这个请求量非常大,可能系统能不能抗住是最大的风险点。但其实100K并不是重点,因为这些请求不需要返回,只是单纯的接收,100K并不是非常大。但是当中有许多隐藏的问题,比如说我们抽样怎么抽,是在线抽,还是先把所有请求存储起来一段时间之后再进行抽样?如果是存储起来再抽样,会不会内存扛不住?再比如我们会对存储系统发起的查询请求是什么量级?会不会影响存储系统?

实际上后来实践的过程果然发生了存储系统扛不住,导致抖动很厉害的情况。那这个问题发生了之后,我们又该怎么解决?

对这些问题的敏感、理解以及解决,需要的就是系统能力。也就是我们理解系统的能力,这当中涉及很多,需要我们有一定的操作系统的知识、分布式的知识,还需要对上下游的系统都有一定的了解。比如知道存储系统的性能不是很好,大批量的请求可能扛不住。这当中有一些是经����,����验,更多的还是我们的基础能力。

提升之道

其实这三点看完,相信大家对于怎么提升应该都或多或少地有了一些自己的想法。

说穿了也没有什么大不了的,无非是三点,我们来做个简单的总结。

  1. 需要夯实语言基础,对于学习的语言不能浅尝辄止,需要有比较深刻的理解。当然这一点也不是说说而已,肯定需要针对性的做很多练习,也需要阅读其他大牛的代码进行学习。
  2. 需要遵守代码规范,不仅仅是变量的命名、一些特殊case的处理,还需要理解一些场景下的系统使用规范
  3. 需要充分理解系统,对每一个环节仔细推敲,需要积累一些操作系统、分布式的知识点和技能点。
    从这三点总结来看,好像没什么大不了的,每个人都能很轻易做到的样子。但实际情况告诉我们,往往越是简单的道理,越是难以做到,希望大家不要轻视了它们。

今天的文章就到这里,衷心祝愿大家每天都有所收获。如果还喜欢今天的内容的话,请来一个三连支持吧~(点赞、在看、转发)

  推荐站点

  • At-lib分类目录At-lib分类目录

    At-lib网站分类目录汇集全国所有高质量网站,是中国权威的中文网站分类目录,给站长提供免费网址目录提交收录和推荐最新最全的优秀网站大全是名站导航之家

    www.at-lib.cn
  • 中国链接目录中国链接目录

    中国链接目录简称链接目录,是收录优秀网站和淘宝网店的网站分类目录,为您提供优质的网址导航服务,也是网店进行收录推广,站长免费推广网站、加快百度收录、增加友情链接和网站外链的平台。

    www.cnlink.org
  • 35目录网35目录网

    35目录免费收录各类优秀网站,全力打造互动式网站目录,提供网站分类目录检索,关键字搜索功能。欢迎您向35目录推荐、提交优秀网站。

    www.35mulu.com
  • 就要爱网站目录就要爱网站目录

    就要爱网站目录,按主题和类别列出网站。所有提交的网站都经过人工审查,确保质量和无垃圾邮件的结果。

    www.912219.com
  • 伍佰目录伍佰目录

    伍佰网站目录免费收录各类优秀网站,全力打造互动式网站目录,提供网站分类目录检索,关键字搜索功能。欢迎您向伍佰目录推荐、提交优秀网站。

    www.wbwb.net