你的代码 STYLE

点击上方“前端小苑”,选择“置顶公众号”

精品技术文章,热门资讯第一时间送达

星期四, 你好

程序员几乎每天都在跟代码打交道。一开始接触的是自己写的代码,合作项目后,开始接触别人的代码。接触别人代码的时候是不是有遇到过以下的情形:

接手一个新项目,打开项目的源码目录,一股腐朽的气息扑面而来。接下来映入眼帘的是命名各种大小写不一的源码文件。你随便打开一个看看,一堆乱七八糟的命名还充满了各种V1,V2的接口。

时不时还可以看见前人写下的注释:

“f**k!“

”挖槽,还有这操作!“

”这个是xxx写的,有问题找他!“

你手扶额头,做偏头疼状:接下来又要蛋疼了!

当然也有人会很兴奋:我又可以重构你啦!哈哈 !。

又接手了一个新项目,打开项目的源代码目录,一股清新的气息扑面而来。规整命名的源代码文件映入眼帘,打开源码文件,接口定义一看就浑身爽,逻辑代码写得是规规整整,各种类,变量的命名也是规范的一逼。

你浏览了一番后,就立马想认识代码的作者,想先去膜拜一下。代码作者真乃大牛也!

以上是大家在接手别人代码的时候,会遇到的情形。

那你的代码写的怎么样呢?代码风格又是如何? 

我总结了一下,这几年遇到的代码风格,来看看,你的代码是属于哪种风格吧。

一 乱七八糟型

这种代码,你一打开,感觉就臭的要命。似乎一刻都不想停留,想马上把ide关了。 

当你硬着头皮看下去,发现各种命名不规范,接口定义冗长且不清晰,看了大半天,还是没看明白其中的逻辑。

时不时还会在眼前飘过几行: 

“f ** k!”

“cao !”

"不是我写的 --- by  xxx!"。

我见过最搞笑的代码: 

接口定义为:xxxConnect。 

然后接口的下面附上了一句注释:

“这个接口本义是 xxxNotConnect,写代码的时候忘记了Not,现在已经被到处引用,改不了了!” 

我当时看完,心里:“挖槽, 还有这种操作,真是人才啊!”  笑得牙都快掉下来了。

乱七八糟型的代码,估计也是各个公司最多的了。

遇到它们的时候,大部人也只能一直忍着,好点的会在改代码的时候,尽力重写一点是一点,比较随便的同学,就随意的加上几行,然后在特别挫的地方,补上一句注释:

“此处有坑,请注意!此处有坑,请注意!”

乱七八糟型的代码,已经完全失控于写代码的人,也谈不上是一种风格了。不过确实很多,所以要列出来。

二 贵族型 (设计模式型)

这种风格的代码,代码命名规范,接口定义完整且丰富。你刚开始接触,看的也是清风拂面,如在春天。

这种风格的代码,感觉就是代码的贵族。雍容华贵,出生于贵族血统。命名规范,接口规范,设计模式的使用,都是教科书式的设计,保持着纯正的血统。

不过这类代码风格容易走入过度设计的极端。有时候,会把一个本来可以用30行代码搞定的功能,硬是给写出了300行代码的高度。当你花了半天,解构完各种设计模式后,才终于理解了要实现的功能,你才在心里骂娘。

这种代码风格,多见于各种客户端(andrios,iOS),或用 java 的后台, 特别是写惯 java 的同学。因为 java 本身的代码设计就采用了更多的设计模式,运用得当,便可是代码中的贵族,运用过度,则显得臃肿不堪,像个肥胖臃肿的胖子。

遇到过一个 leader 写的网络框架,设计模式运用的恰到好处,而且代码逻辑相当清晰,感觉整套的代码一气呵成,优雅华贵,风度翩翩。

当时我觉得这就是代码中的贵族,那位大佬真神人也

三 隐士风(极简型)

这类风格的代码追求极简的设计,极度关注代码的逻辑,对代码层面的封装,更多以实用为主。 

这种风格的代表,我觉得是 linux 的内核。 

linux的创始人 linus 说过, 他写代码的时候,先是进行物理设计,这个物理设计就是指实现这个功能所涉及的数据结构,内存结构,当这部分的设计完成后,代码是围绕数据结构书写的。

所以也被称之为: 围绕数据结构的设计。

这种代码风格极简,你只要了解这个功能所使用的数据结构,就能很快的理解代码。多见于底层系统,比如网络框架,存储系统,操作系统内核,是代码中的隐士:简洁但威力巨大。

因为极简,也使得性能问题可以更容易定位,适合写出高性能的代码。 

这种极简风格的代码,对于底层系统比较适用。底层系统因为需求不多变,但通常对性能要求更高,所以比较合适。如果是用于业务逻辑,就会显得代码设计不到位,使得扩展性太差。 

我有一段时间特别喜欢这种风格的代码,可能跟我当时多做的是底层系统有关。

后来转到写业务逻辑的代码,就发现这种极简的代码设计在应对复杂多变的业务需求的时候,会出现扩展困难,不利于业务系统的开发。

四 极客型

还有一种代码风格。你第一眼看去,简直逼格满满,各种奇技淫巧,语言的各种高级特性都用上了,而且用的极尽逼格之事。

很多复杂的操作,本来需要几行代码实现的, 极客型的代码,估计一行就给你实现出来。理解的人,一眼可以看明白,不理解的,估计还要研究个半天才能明白过来。

各种语言的高级特性或者新特性被用的满地都是,C++ 模版, C 的宏,用的是神乎其技。但看的人是苦不堪言,又不好意思吐槽,显得自己太low逼,最后大家就只能敬而远之,都不愿意去碰这块代码了,真是压力满满呀。

这类代码纯从理论的角度来说,其实是写的不错的,只不过是没有照顾到大多数人的习惯和理解。

 特别是业务层面的代码,过于追求代码特性的运用,最终会导致代码的维护变得特别困难,在人员变更频繁的团队更是如此。

我个人更愿意用朴实的代码去实现一些功能,即使他的性能差些,逼格低些,但是其他人更容易看懂。

以上,是我曾经遇见的一些代码风格。

杂乱无章型的代码最不好,完全没有尝试去做些代码设计和思考。

贵族型的代码要防止过度设计。

写隐士型代码的人,在写业务代码的时候,要多考虑业务代码的扩展性。

极客型的coder,  要照顾下周边同学的理解能力。

你还遇到过什么风格的代码,在留言里写出来,给大家观摩,观摩 。

精选文章

围观

轻松搞定时间复杂度

热文

小程序第三方框架对比(wepy/mpvue/taro)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值