文档章节

程序员自我修炼(二) - 如何编写合格代码(下)

ali安东尼
 ali安东尼
发布于 2017/09/07 15:23
字数 1319
阅读 3
收藏 0
点赞 0
评论 0

在《如何编写合格代码》的上篇中的开头,我给大家分享了对于“合格的代码” 的定义。

在本文的开头,不妨先让大家重温一下:

满足要求定义的初始化规则代码清晰简洁,没有思维逆反的逻辑或者刻意为之的陷阱代码尽可能控制代码风险合理的代码注释合理的标准化接口定义合,杜绝误用或者滥用

关于前三点的具体注意事项和例子,之前已经有所阐述。(有所忘记的读者可以再重读上篇)

接下来,我将会继续阐述剩下的两点守则。

合理的代码注释

当一个经验丰富的工程师第一眼接触到不合格的代码时,就会下意识地有所察觉。而引起这种“不适感”的很大一个可能原因,就是缺乏合理简洁的注释和排版。

我们在编程工作中应该时常会遇到这样的场景:

当我们编写一个函数后,发现自己应该为函数名或者变量名额外注释说明。

    -那可能是因为你当初定义的变量和函数名称太过随意和模糊;

当我们为函数功能做注释的时候,发觉函数的描述涉及到的功能内容非常多而繁杂。

    -那可能是因为你缺乏架构设计,把太多功能塞在了一个函数里了;

当我们洋洋洒洒写下几千行代码后,发现需要大段的注释才能阐述清楚自己写的代码对应的逻辑和功能。

    -那么这段代码基本上十有八九是写得有问题,需要重构;

根据我的开发经验,除非极其简单到一目了然的代码,否则编写完后都必须要养成习惯添加足够的注释。

只有充分的注释,才能让阅读你代码的人能更真切快速了解到函数的功能、输入、输出是什么,有没有副作用和风险等等。这些如果缺乏注释的话,往往需要耗费阅读者很多的时间,浪费很多的精力才能有所重现和领悟,极大降低代码的使用效率。

而在编写注释的过程中,即意味着你需要站在另外一个角度来审视自己的代码。而往往在这个时候,通过编写注释的过程,你会对自己代码不合理的地方有所觉察,进而把自己的代码修正得更完善。

写注释是一门看似最简单,实则高深莫测的学问。无论是格式的定义,描述的语言组织能力,都无不体现着编程人员的专业素养。

代码的接口定义合理

首先我们看什么是接口?

从软件开发的角度看:宏和函数是接口,类和数据结构是接口,库(library)和包(package)是接口,环境变量是接口,消息类型和网络协议是接口,系统调用是接口,软硬中断是接口,EABI 是接口。

所以只要我们在写代码,我们就无时无刻不和接口打交道,也时时刻刻在创建新的接口。

合格的代码的必要条件是有合理的接口。

什么是合理的接口?我认为必须要符合以下的条件

合理的名称

    -合理的名称的重要性是不言而喻的,这样才可以让使用接口的人不会产生不解和困惑。

合理的输入输出       -合理的输入输出是指接口不要期待过于复杂的输入(比如函数的参数不宜超过五个),如无必要,不要依赖输入以外的数据,而且输入参数包含的数据只需刚好满足相关的需求即可,不要传入无关紧要的数据;对于输出,和输入的要求类似,不要输出会让调用者感到困惑的结果。

符合惯例

    -符合惯例是接口设计中非常重要的原则。比如在有些语言中,size() 按惯例是个 O(1) 的操作,而length() 是 O(n) 的操作。那么你在为你的数据结构提供接口时,也要遵循这个约定,这样使用者才不会困惑,也不会误用。

作为一个优秀的程序员,要时时刻刻为你的代码负责,要时时刻刻为你的接口负责,让用户只能正确地、轻松地使用我们的成果产出。

作为一个合格的程序员,我们应该不断写出合格的,优秀的代码,而不是在这个信息时代中堆砌更加多的数据废物。

让我们一起为成为一名优秀的程序员而努力。

想要学习更多的程序员技巧,请继续关注后续的连载文章。

由睿江云人员提供,想了解更多,请登陆www.eflycloud.com

© 著作权归作者所有

共有 人打赏支持
ali安东尼
粉丝 3
博文 192
码字总数 173101
作品 0
广州
如何让编程产能翻二番?

软件开发过程有一个很自然的比喻:建楼房,要画图纸、搭架构、砌砖头。这个比喻大体说得过去,问题是,这个“砖头”绝非普通的砖头,具有以下特性: 一、每一块都由手工制作; 二、每一块的材...

dellfox ⋅ 2014/05/08 ⋅ 0

工作日志_Index

1 程序员的自我修养 如何成为一个合格的 Java程序员 程序员如何提升自已 程序员如何学会沟通技巧 思维提升:思维广度,深度,高度,远度 大牛养成指南(1):吃的草够多,你也能成为大牛如何成为...

无寄语 ⋅ 2016/08/18 ⋅ 0

如何从一个优秀的Java程序员变成一个高薪架构师

做了4年的java程序员,一直考虑以后的发展方向。感觉不适合走管理路线的人,所以考虑继续在技术方面深入下去。 相信好多程序员都有相同的感觉,做了好多年代码民工,感觉自己每天都在重复着相...

禁区铁铍人 ⋅ 2017/12/09 ⋅ 0

编程的艺术门槛

编程是门艺术,这个说法由来已久。最近在朱赟的公众号(嘀嗒嘀嗒)读到一篇文章《设计是门逻辑学,然后才是美学》,文中作者漂洋过海追寻艺术,老师却说:“设计不是艺术!”。如果设计都不是...

Fico ⋅ 2016/07/11 ⋅ 0

点石成金_Index

程序修炼之道 程序员成熟的标志 如何成为一个合格的Java程序员 软件工程师所需掌握的“终极技术”是什么? 技术敏感度 — 基层技术管理者必备 软件开发:个人与团队是永远的核心 编程离软件工...

陶邦仁 ⋅ 2014/12/13 ⋅ 0

飞龙的程序员书单 – 思想、工程、架构、职业发展

思想 编程珠玑 编程珠玑,字字珠玑。这本书并不单纯讲解算法,而是由一系列实际问题切入,引导读者理解这些问题并学会解决方法,使用现有的算法,或者程序设计技巧解决问题。本书的特色是通过...

apachecn_飞龙 ⋅ 2016/01/16 ⋅ 0

适合程序员读的书

文章来自justjavac大大的博客:一个合格的程序员应该读过哪些书 编者按:2008年8月4日,StackOverflow 网友 Bert F 发帖提问:哪本最具影响力的书,是每个程序员都应该读的? “如果能时光倒...

modernizr ⋅ 2014/04/08 ⋅ 3

程序员如何自我超越

最近读了彼得·圣吉的《第五项修炼》,有点感悟。这本书是从系统力学的角度阐述如何建立学习型的组织,通过建立学习型的组织,使企业从优秀到卓越,使企业基业长青,被称为21世纪的管理圣经。...

晨曦之光 ⋅ 2012/03/09 ⋅ 0

福利丨总说程序员内功修炼,究竟修的是啥?

于是,在2018新年之际,小编联合了图灵社区 带来一期“程序员综合技能修炼”的书籍推荐,在这3本口碑、内容都不错的好书里,你既可以学到构建易维护代码的硬技术实践,也可以得到思维学习、工...

DBAplus社群 ⋅ 01/04 ⋅ 0

经典编程书籍大全

经典编程书籍大全 100+ 经典技术书籍,涵盖:计算机系统与网络、系统架构、算法与数据结构、前端开发、后端开发、移动开发、数据库、测试、项目与团队、程序员职业修炼、求职面试 和 编程相关...

Oscarfff ⋅ 2016/10/30 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

DevOps 资讯 | PostgreSQL 的时代到来了吗 ?

PostgreSQL是对象-关系型数据库,BSD 许可证。拼读为"post-gress-Q-L"。 作者: Tony Baer 原文: Has the time finally come for PostgreSQL?(有删节) 近30年来 PostgreSQL 无疑是您从未听...

RiboseYim ⋅ 3分钟前 ⋅ 0

Cube、Cuboid 和 Cube Segment

1.Cube (或Data Cube),即数据立方体,是一种常用于数据分析与索引的技术;它可以对原始数据建立多维度索引。通过 Cube 对数据进行分析,可以大大加快数据的查询效率 2.Cuboid 在 Kylin 中特...

无精疯 ⋅ 41分钟前 ⋅ 0

github太慢

1:用浏览器访问 IPAddress.com or http://tool.chinaz.com 使用 IP Lookup 工具获得github.com和github.global.ssl.fastly.net域名的ip地址 2:/etc/hosts文件中添加如下格式(IP最好自己查一...

whoisliang ⋅ 43分钟前 ⋅ 0

非阻塞同步之 CAS

为解决线程安全问题,互斥同步相当于以时间换空间。多线程情况下,只有一个线程可以访问同步代码。这种同步也叫阻塞同步(Blocking Synchronization). 这种同步属于一种悲观并发策略。认为只...

长安一梦 ⋅ 53分钟前 ⋅ 0

云计算的选择悖论如何对待?

人们都希望在工作和生活中有所选择。但心理学家的调查研究表明,在多种选项中进行选择并不一定会使人们更快乐,甚至不会产生更好的决策。心理学家Barry Schwartz称之为“选择悖论”。云计算为...

linux-tao ⋅ 56分钟前 ⋅ 0

Redis 注册为 Windows 服务

Redis 注册为 Windows 服务 redis 注册为 windows 服务相关命令 注册服务 redis-server.exe –service-install redis.windows.conf 删除服务 redis-server –service-uninstall 启动服务 re......

Os_yxguang ⋅ 57分钟前 ⋅ 0

世界那么大,语言那么多,为什么选择Micropython,它的优势在哪?

最近国内MicroPython风靡程序界,是什么原因导致它这么火呢?是因为他功能强大,遵循Mit协议开源么? 错!因为使用它真的是太舒服了!!! Micropython的由来,这得益于Damien George这位伟大...

bodasisiter ⋅ 今天 ⋅ 0

docker 清理总结

杀死所有正在运行的容器 docker kill $(docker ps -a -q) 删除所有已经停止的容器(docker rm没有加-f参数,运行中的容器不会删掉) docker rm $(docker ps -a -q) 删除所有未打 dangling 标...

vvx1024 ⋅ 今天 ⋅ 0

关于学习

以前学车的时候,教练说了这样的一句话:如果一个人坐在车上一直学,一直学,反而不如大家轮流着学。因为一个人一直学,就没有给自己留空间来反思和改进。而轮流着学的时候大家下来之后思考上...

mskk ⋅ 今天 ⋅ 0

压缩工具之gzip-bzip2-xz

win下常见压缩工具:rar zip 7z linux下常见压缩工具:zip gz bz2 xz tar.gz tar.bz2 tar.xz gzip 不支持目录压缩 gzip 1.txt #压缩。执行后1.txt消失,生成1.txt.gz压缩文件 gzip -d 1.txt....

ZHENG-JY ⋅ 今天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部