[Linux][2011-5-25] 程序员---好的代码
来源:互联网 发布:网络推广员岗位职责 编辑:程序博客网 时间:2024/06/06 01:12
今天看到圈复杂度为 41的代码, 缺少必要的说明性注释, 感觉, 一头雾水, 难以接收.
什么是好的代码:
1.清晰明了, 必要适当的宏定义, 替代(数字/字母/特殊符号).
如:#define REDIS_EL "/r/n"
#define NOT_EXIST (-2)
#define TCP_PACKAGE_LEN 5120
#define REDIS_DEFAULT_HOST "cache.12345678.com"
#define REDIS_DEFAULT_PORT 6379
例子, 如果你在代码中看到, return -2, 好呢, 还是, return NOT_EXIST 好呢??
清晰的宏定义, 可以是代码方便阅读, 清晰易懂, 容易接手.
2.圈复杂度 小于 15.
将适当的代码功能提取, 做到, 高耦合, 低内聚.
3.适当的换行和空格
redis的代码举例:
static int vmWriteObjectOnSwap(robj *o, off_t page) {
if (server.vm_enabled) pthread_mutex_lock(&server.io_swapfile_mutex);
if (fseeko(server.vm_fp,page*server.vm_page_size,SEEK_SET) == -1) {
if (server.vm_enabled) pthread_mutex_unlock(&server.io_swapfile_mutex);
redisLog(REDIS_WARNING,
"Critical VM problem in vmWriteObjectOnSwap(): can't seek: %s",
strerror(errno));
return REDIS_ERR;
}
rdbSaveObject(server.vm_fp,o);
fflush(server.vm_fp);
if (server.vm_enabled) pthread_mutex_unlock(&server.io_swapfile_mutex);
return REDIS_OK;
}
如果改成如下, 你看了, 会有怎样的感觉呢?
static int vmWriteObjectOnSwap(robj *o, off_t page)
{
if (server.vm_enabled)
{
pthread_mutex_lock(&server.io_swapfile_mutex);
}
if (fseeko(server.vm_fp,page*server.vm_page_size,SEEK_SET) == -1)
{
if (server.vm_enabled)
{
pthread_mutex_unlock(&server.io_swapfile_mutex);
}
redisLog(REDIS_WARNING,
"Critical VM problem in vmWriteObjectOnSwap(): can't seek: %s",
strerror(errno));
return REDIS_ERR;
}
}
rdbSaveObject(server.vm_fp,o);
fflush(server.vm_fp);
if (server.vm_enabled)
{
pthread_mutex_unlock(&server.io_swapfile_mutex);
}
return REDIS_OK;
}
3.适当的明确注释
利人利己,
亲身经历, 自己写的代码, 时间长了, 就不知道, 是做什么的
注释无论中文, 英文, 简单明了
总结:
简单明了, 清晰, 易于接手的代码才是好代码, 才是好程序员写的代码!
晦涩难懂, 挡住了别人, 也为自己埋下了陷阱. 别人难维护, 自己也难维护.
PS: 没有批评redis开源源代码的意思! 只是说明, 有些源代码太晦涩难懂了! 当然, redis 如今的成就, 鄙人难以到达的.
- [Linux][2011-5-25] 程序员---好的代码
- 优秀的程序员写出好代码的5个建议
- 程序员的基本原则 /如何写好代码
- 程序员的基本原则 /如何写好代码
- 好的程序员如何写代码
- 好的程序员怎样写代码
- 好的程序员怎样写代码
- 好的程序员怎样写代码
- 好的程序员怎样写代码
- 优秀的程序员写出好代码的5个建议——网摘
- 【转】技术总监谈好的程序员如何写代码
- 技术总监谈好的程序员如何写代码
- 技术总监谈好的程序员如何写代码
- 技术总监谈好的程序员如何写代码
- 技术总监谈好的程序员如何写代码
- 技术总监谈好的程序员如何写代码
- 技术总监谈好的程序员如何写代码
- [转贴]技术总监谈好的程序员如何写代码
- dos命令大全
- IIS6常用的MIME类型
- Linux 函数--fseek
- oracler的安装和卸载
- 使用SQL Server维护计划实现数据库定时自动备份
- [Linux][2011-5-25] 程序员---好的代码
- 亚美柏科笔试题——java
- Zen Cart模板制作中各个模块文件详细说明
- 网络通信编程demo1[Tcp]
- Ad Hoc Distributed Queries 的启用与关闭2
- Oracle 的基本使用--基本命令
- 网络通信编程demo1[Udp]
- 多线程编程Demo[利用互斥对象实现线程间同步]
- 编程学习总结