首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Coding-代码规范

前言

如何写代码,如何写出优秀漂亮的代码,是程序员的必修功课。菠菜在工作的前几年一直在追求精简明了的代码能力,算是有些小小的心得。本篇文章仅仅介绍代码规范,算是入门,之后会有更加深入的文章,比如如何设计代码,如何使用面向对象,如何提高代码效率等等;也会手把手写几段大家熟悉的功能以期更好的实践。

市面上的代码规范

市面上有许多代码规范,菠菜曾经研究过Python的PEP8规范,收获颇多,大家有兴趣可以去搜索并学习下。本篇文章不会照搬其他的代码规范,而是总结菠菜自己的心得。由于菠菜也在慢慢的总结经验,所以可能一开始不会太全,不过后期会随着记忆的涌现慢慢完善^_^

命名

命名是写代码的基本功,也是非常非常重要的一环。好的命名会让代码看起来生动、易懂,而词不达意的名字会误导阅读者甚至一段时间后自己再来回顾自己的代码都会产生“错觉”。

精确

命名的精确性是非常重要的,菠菜在写代码的时候,往往为了找到一个精确的词会花费很久的时间,但长期来看,一切都是值得的。那如何起一个精确的名字呢:

如果是一个变量,往往可以比较容易、直观的想到这个变量的存在价值或者说含义是什么,直接翻译成单词即可。

如果是文件名、类名或者方法名,在起名字的时候一定要想清楚它应该干什么以及不应该干什么,当这个命名仅仅并且完全覆盖了该干的事儿的时候,这就是一个特别好的命名(当你觉得无法找到一个精确的词的时候,就该考虑是否要重新设计下代码结构了),如下图:

上图中的方法名为checkRequestParam,但其实还做了将参数变成RequestParam struct的事儿,所以要改成checkAndFormatRequestParam

简单

命名需要用简单、常用的单词,如果单词过长可以考虑缩写,但缩写后的单词不要影响阅读时的理解,恩...有时候Chinglish也无伤大雅,反而促进理解^_^。

一致

命名的一致性也非常重要并且实施起来有很大难度,一致性体现在4个方面:

驼峰式或下划线式可任选其一,但不要混用(常量除外,如REQUEST_NAME)

类似含义的单词要一致,比如起始时间如果用了startTime,就不要再使用beginTime了。再比如request或req都是表示请求,那请选择其中之一,不要一会用request一会用其缩写req。

类似含义的单词组顺序要一致,例如,如果决定使用checkAndFormatRequestParam就不要出现formatAndCheckLoginParam了。

两组类似变量,应有一致的前缀来区隔,例如,修改用户信息,有new_name,new_sex,对应的就是old_name,old_sex。

逻辑块区分

代码写的就是逻辑,如何让代码里的逻辑块区分开,需要掌握两点:缩进以及换行。

缩进

代码缩进是非常基本也非常有效的方式让代码逻辑块更加清晰,比如if缩进,for缩进等。如下图:

注意:不同的语言会有所不同,但原则是缩进的空格数要统一,比如常见的为4个空格,代码里就不要再出现3个空格的缩进了。

换行

换行是有可能被忽略的一种方式,方法间要换行,而同一个方法里不同的逻辑块也要换行,这个在菠菜看来是非常非常重要的,一方面让代码的逻辑更加清晰,一方面也会督促你想清楚逻辑甚至锻炼自己的思维更加具有逻辑性。

举个例子:

上图是将所有逻辑写在一起而不做区分,代码量不多但读起来会有点困难,经过逻辑块区分后如下图:

优化后,这段代码分成了4块,第一块获取UserInfo,第二块获取参数order_id并且校验,第三块做CancelOrder的动作,最后一块返回结果。是不是比第一段代码清晰了很多?

代码体积

有没有这种经历,一个类超过了500行,一个方法超过了200行,看的昏天黑地才能艰难的理解“作者”的意图?而且都不太敢改代码,生怕改错一点而大错特错,所以合理的代码体积很重要。

单行体积

如果一行代码过长,阅读的时候就需要拖动滚动条才能看全,是不是恨不能忍受?所以单行代码最好可以在一屏里显示全,如果过长就需换行。PEP8的规范中建议单行不要超过79个字符,大家可以参考下。

方法体积

根据长期经验来看,单个方法最佳在40行以内,如果超过100行就过长了,需要将某一些长的逻辑块抽出来形成新的方法。

类体积

类的体积最好控制在200行以内,如果超过400行就需要将某些方法抽象成新的类来减少类的体积。

其他

这里会讲一些简单的小措施,让代码看起来更加优美,如:

逗号后边要加空格

凡是涉及“=”的,“=”左右两侧要加空格

调用方法时,如果单行过长需要换行了,换行后的参数跟上一行的参数对齐,或者每个参数一行也行

连续多行赋值代码,保持“=”整齐

代码规范不仅仅作用于代码,而应作用于所有与代码相关的地方,如:项目名、目录、文件名、数据库表、数据库字段等。

最后,如果你的代码在阅读的时候像是一篇英文小短文一样,那么恭喜你,你的代码能力已经非常优秀了!

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20180305G0CFWN00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券