文档章节

代码风格

-鹏
 -鹏
发布于 2017/07/31 19:57
字数 839
阅读 23
收藏 0
点赞 0
评论 0

see also: [How to write elegant code?](https://my.oschina.net/wanjubang/blog/675953)

[How to write elegant code?(Part 2)](https://my.oschina.net/wanjubang/blog/703907)

 

整洁的代码

1. 代码格式

这真的是个老生长谈的问题 。有的人通过软约定来实现项目代码格式统一,有的人通过配置(如eslint)来实现代码格式统一。 我个人更倾向于自动格式化实现项目代码格式统一,项目的格式就是一个配置,但却不要求开发人员必须遵守,代码特定时候(保存或者提交或者手动触发)自动格式化。比较有名的插件有beautify ,prettier。

 

2. 模块划分

    函数因子划分,用了react等组件化框架的话还有组件划分。组件和函数的基本原则是单一职责,即一个模块只做一件事。一般来说一个函数代码不宜超过100行,一个组件代码不宜超过300行。

see also : https://my.oschina.net/wanjubang/blog/704162

3. 命名

    减少命名!实在不行的话要采取合适的命名,即具体不模糊不清,通俗易懂。如果你实在想不出名字,那么只好麻烦你写好注释(良好的代码应该是自注释的)了。

为什么我们需要给命名呢?大部分人答案是,因为需要变量或者常量来保存数据。 如果你是抱着保存数据,供其他方法使用,那么我觉得不可没必要。其实函数也是一种对象,我们大可以通过合理的组装这些函数形成一个新的函数,然后将数据丢给新函数,它就会乖乖吐出我们想要的东西。

 

一个例子:

git log > git.log

这段代码就是通过git 命名查找当前仓库日志并写入git.log文件。非常简单,试想让你通过代码实现,是不是会先保存 log数据,然后再写入呢?

 

清晰的代码

1. 格式

函数的书写应该遵守一定的格式。 就像写文章一样,总有一些套路。 还记得上初中老师叫我们写作的套路,什么总分总,什么首尾呼应,画龙点睛。 写代码也是一样,遵守一定的格式也很重要。

个人比较喜欢的格式:

# 变量声明

# 入参验证, 执行分支逻辑

# 函数组合,将多个函数组合成一个新函数

# 执行函数。 其实就是数据在函数中流动

# 返回。一个函数如果没有返回值,我怎么知道它执行了没有。

2. 参数约定

一定能够通过函数签名或者段注释看出你的入参和出参。良好的代码甚至应该在必要的时候增加一些例子。

如果你说明你的代码能干什么,我还以为什么都能干呢。如果函数不定义明确的输出,我还以为总会给我正确的结果呢? 如果函数突然抛出一个错误,这会弄脏你的手。

参考:

https://my.oschina.net/wanjubang/blog/675953  (putting the ret into bottle)

https://my.oschina.net/wanjubang/blog/744438(4.注释方面)

 

优雅的代码

see : https://my.oschina.net/wanjubang/blog/1494254

© 著作权归作者所有

共有 人打赏支持
-鹏
粉丝 20
博文 155
码字总数 92388
作品 0
杭州
前端工程师

暂无文章

upstream sent too big header while reading...

nginx 报错:1736 upstream sent too big header while reading response header from upstream 1. 一般处理 location ~ \.php$ { #增加下面两句 fastcgi_buffer_size 128k; ......

dubox
9分钟前
0
0
Python解析配置文件模块:ConfigPhaser

import configparser as pa# [SectionA]# a = aa# b = bb# c = cc# [SectionB]# optionint = 1# optionfloat = 1.1# optionstring = string#https://www.cnblogs.com/a......

易野
15分钟前
0
0
Java基础——面向对象

声明:本栏目所使用的素材都是凯哥学堂VIP学员所写,学员有权匿名,对文章有最终解释权;凯哥学堂旨在促进VIP学员互相学习的基础上公开笔记。 Object的方法: clone() Object 克隆 to Strin...

凯哥学堂
17分钟前
0
0
rabbitmq学习记录(八)消息发布确认机制

RabbitMQ服务器崩了导致的消息数据丢失,已经持久化的消息数据我们可以通过消息持久化来预防。但是,如果消息从生产者发送到vhosts过程中出现了问题,持久化消息数据的方案就无效了。 Rabbit...

人觉非常君
21分钟前
0
0
毕业5年,我是怎么成为年薪30W的运维工程师

#转载# 我在大学读的是计算机专业,但大学毕业之后,进入到一家私企进行工作,工作的内容类似于网管,会经常的去修电脑,去做水晶头等内容。刚开始工作,也没想太多,最想的是丰富自己的工作...

Py爱好
29分钟前
1
0
大数据基础知识,大数据学习,涉及的知识点

一、什么是大数据 一种规模大到在获取、存储、管理、分析方面大大超出了传统数据库软件工具能力范围的数据集合,具有海量的数据规模、快速的数据流 转、多样的数据类型和价值密度低四大特征。...

董黎明
44分钟前
0
0
Linux CentOS 7上安装极点五笔

话说几天前在新买的惠普笔记本上成功地安装了Linux CentOS 7操作系统、Nvidia Quandro P600驱动程序及X Window,并在VMware下安装Red Hat教学环境,彻底跳出Windows的苦海,但仍然有一件事不...

大别阿郎
56分钟前
16
0
2018年7月20日集群课程

一、集群介绍 集群,简单地说是指一组(若干个)相互独立的计算机,利用高速通信网络组成一个较大的计算机服务系统,每个集群节点(即集群中的每台计算机)都是运行各自服务的独立服务器。 ...

人在艹木中
59分钟前
0
0
spark开发机中调试snappy

目的 在Idea中的点击运行,使spark可以直接读取snappy 自己编译hadoop,以支持snappy的压缩。 自己编译的目的就是要得到支持snappy文件读写的动态链接库。如果可以在网上下载,可以跳过自行编...

benny周
今天
0
0
centos7 安装docker

1,查看系统版本 cat /etc/redhat-release 2,安装gcc yum -y install gccyum -y install gcc-c++ 3,卸载旧版本 yum remove docker \ docker-client \ ......

暗中观察
今天
1
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部