一、前言
题外:昨天看了某知乎用户的回答颇为感慨,大意是说现在主流是框架程序员越来越多,原理、架构、底层方面的越来越少;依赖框架快速出活的程序员工作机会比较多,公司招聘的时候也比较受欢迎。
不能说哪种优秀或者比较low。只要需要就必然有存在的价值,尤其是在快速迭代的今天,速度慢半拍可能就意味着淘汰。
今天说命名可阅读的代码。
二、可阅读的代码
写程序就像建造一栋高楼,包括方方面面,罗马不是一天建成的。软件开发领域,强调命名的重要性至今都不过时。代码开发阶段在大部分应用程序生命周期中占比都是很小的一个阶段,维护阶段是一个大头,后来的人员需要阅读你的代码<也可能包括未来的你>才能完成工作。很多时候,维护运营阶段阅读前人的代码,或者自己以前的代码会有一个感觉一个头两个大。
什么是好的命名,没有固定答案,不过有一个原则就是:遵循团队或者项目的命名规范,如果团队或者项目还没有统一的命名规范,首先去创建她,然后贯彻到底。相信百分之九十九的组织都有自己的命名规范。
关于注释也在存在争议,有的组织规定代码不能存在注释,有的组织要求必须写注释。优劣没有定论,不过好的命名可以是“自注释”,可以明确传达代码意图,描述逻辑。统一的命名规则可以使整个团队保持一致。
三、命名的一些实践
1、名字完整准确的表达其所代表的的含义、名字反应实际问题、名字“足够长”、限定词放在名字最后、
2、避免缩写或对缩写进行统一约定、使用约定对仗词<begin/end、min/max、up/down>等、使用有意义的循环下标
3、命名规则能够区分类名、常量、枚举、变量
以上简单罗列,更多实践,Google 一下。
四、一些例子
1、常见的多层结构中:业务逻辑层,IxxService、xxService ;数据访问层,IxxDao 、xxDao 等,当然每个组织可能不一样
2、模式语言 xxFactory 、xxObserver、xxSingleton 等
3、.Net Framework 中API
4、代码片段
string add; // person address int a; // person age string address; int age;
五、总结&推荐阅读
强调命名是一个古老的话题,但是从来都不过时。最后用一个问答,强调一下命名的重要性。
问:如何写出可阅读的代码,自注释代码? 答:遵循良好的命名实践。
推荐阅读:
1、《Code Complete》第11章 The Power Of Variable Names
2、How To Write Unmaintainable Code : https://github.com/Droogans/unmaintainable-code
3、阿里《Java 开发手册》 https://github.com/alibaba/p3c