这是我第二次看这本书了(Clean Code)的时候,第一次看的时候是,看到某世界五百强在他们的代码中我居然看不到一句注释,如今我还记得当时的情景,当我Download 下第一份代码的时候,我想在代码中了解一下公司代码编写习惯以及少许的业务,在我之前的认知中,代码中加上不少注释这些注释有助于我了解业务,可是在这份代码中我居然看不到一行注释,当时个人反应是,必定会有文档的存在,我就向项目的负责人求助了,谁知他回了一句你多理解一下命名就好了,(其实个人英语很是差,后来慢慢习惯后才发现好的命名必定是有巨大的帮助的)。程序员
在《领域驱动》一书中有这样的一个名词 “通用语言” 他的主要目的是使用统一的语言给某一事物进行命名,在之后的沟通中能够减小浪费时间与信息之间的偏差。从而减小沟通成本。函数
“通用语言“ 在代码中咱们能够当作“命名规范“”,这是程序员与程序员之间,Code与code之间的沟通方式。code
在一份好的代码中变量,函数,类的名称已经能够告诉咱们全部的大问题。若是你的代码须要加上注释才能告诉别人重要的问题,那我想您能够考虑一下你的命名是否合理了。blog
固然代码的命名也不是一成不变的,不如你的业务发生了改变,你的命名可能也须要发生改变,若是不进行改变会形成信息缺失的后果,最终将致使代码难以维护。ip
下面用两段代码演示出上面的观点开发
//用户中筛选出用户类型是Vip的用户文档
public List<string> getUsersName() get
{string
List<string> list = new List<string>();it
foreach (var item in UserList)
{
if (item.Type = "Vip")
list.Add(item.Name);
}
return list;
}
上面的代码我也是曾经无数次的写过,最终也是表达出了个人需求,可是如今有这样一个要求,代码中不要出现中文或者说需求须要改为“查找用户年龄大于100岁的用户名称”
这个时候大多数人的习惯是改动条件“item.Type = "100"”注释有很大的可能被忽略这个时候新的开发人员接手了很容易产生误导,由于他本能够经过命名就不用再看这段代码的,由于命名的不规范,致使了他必须跟踪进来查看代码,而且还形成了误解。
说一下以上代码中的错误:
getUsersName:不能见名识意
List<string> list :不能告知集合内容
UserList :命名错误由于这里不适合使用List来讲明这是一个集合,应使用Users 由于list 对于程序员来讲具备很特殊的意义。除非 内容真是一个List 类型
item.Type :不知具体含义
return list; 不能告知我如何使用返回值
下面是正确的代码示例:仅供参考 这里user.Type = "VIP" 仅用于演示
public List<string> getVipUserNameByUserType()
{
List<string> vipUsersName = new List<string>();
foreach (var user in Users)
{
if (user.Type = "VIP")
vipUsersName.Add(user.Name);
}
return vipUsersName;
}
因此建议你们仍是看一遍cleanCode