`
softstone
  • 浏览: 480785 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

关于命名规范的一些建议

阅读更多


类命名
Kent Beck 提出其中大多数的规则。Kent Beck 的《Smalltalk Best Practice Pattern》是我
至今为止读过的所有书里面最符合我审美观点的书籍—渊博的知识和春秋的笔法。


简单超类名—传达设计目的
命名总要受各种因素的影响。你想把名字取得尽量短,易于输入、格式化、容易说出口。
同时,你也想让名字尽可能包含更多的信息,这样读者就能够更快地理解名字所包含的实际
内容。你可能取一些尽量为人所熟悉的名字,这样在名字中就可以传递更多的共同经验。同
时,你也想让名字尽量唯一,别人的代码命名就不会和你重复。
Kent Beck 给出的第一个规则就是不要缩写。缩写对输入(20 年内10-100 次)的考虑
多余对理解(20 年内1000-10000 次)的考虑。理解缩写词需要两步,第一步理解这些缩写
代表的词语,第二步采取理解这些词语所代表的意义。
对一个大层次的根类命名是一个重大的决策。在未来的20 年中,人们可能不断地使用
你所给出的名字。你必须不犯错误。
人们通常在命名超类时加上各种各样的修饰,富有计算机科学意义、给人深刻印象但最
终却没有意义的单词,如Object,Thing,Component,Part,Manager,Entity 或Item。
你在创建一个词汇表,而不是写一个程序。暂时做一回诗人。简单、生气勃勃、容易记
忆远远比说出全部内容更有效。规则:
Name a superclass with a single word that conveys its purpose in the design。
(用一个单词命名超类,传达它的设计目的),好的例子包括:
Number 、Collection、Magnitude、Model


全称子类名—区分异同
命名类的一种方法是给一个唯一的名字。唯一的名字可以让你用用最短的信息表达最多
的信息。
这对于通用术语来说是对的。Array 是Collection 的一个子类,因为绝大多数人都知道
“Array“意味着什么。
但在绝大多数情况下,类继承的层次结构对于理解你的代码十分重要,特别是一个子类
概念上是超类的变种同时又和超类共享实现的情况。你需要传递两部分信息:
1.新类如何相同,以及
2.新类如何不同
要表达相同,你可以借用超类的名字。这不一定是一个直接的子类和父类关系,层次上
有一定距离也无妨。要表达不同,你需要一个单词确切地强调新类为什么不是超类的理由。
所以,有规则:
Name subclasses in your hierarchies by prepending on an adjective to the superclass
name。
(在超类名字前加上内容命名你层次中的子类。)
例子:
BigInteger 是一个可以表达很大很大数字的整数。

 

方法命名—揭示意图
为什么好的代码总有很多简单的方法,代码可能只有一行,譬如:
class ParagraphEditor。。。。
public void highlight(aRectangle:Rectangle){
reverse(aRectangle);
}
这个highlight 只是分派到reverse,为什么还需要?
关键在于Communication。因为有了这个方法,以后的代码就可以用highlight 来说话。
我要加亮一个区域,我就highlight 它。
你当然可以直接使用reverse,结果是一样的。但所有调用代码都揭示了实现—“我通
过反转一个矩形来加亮它“。
代码应当揭示意图,它另外的好处是可以更方便通过继承修整。如果你想要一个
ParagraphEditor 用颜色加亮,那么只需继承ParagraphEditor 并覆盖highlight 即可。所以:
communicate what is to be done rather than how it is to be done。
传达你要做什么(接口)而不是你如何做(实现)。

 

实例(临时)变量命名—暗示角色
任何实例变量传达的信息包括两部分:
1.什么是它的目的?
2.它如何被使用?
一个变量的目的或者说它担当的角色对读者非常重要,因为它能够正确地引导读者的注
意力。一般,你在阅读代码时脑袋里总有一个目的。如果你理解变量的角色,而这个角色和
你的目的无关,那么你可以直接跳过使用该变量的无关代码。如果发现该变量的角色和你的
目的有关,那么你就能马上缩小你的阅读范围—那些引用此变量的相关代码。
一个变量如何被使用和发送给它什么消息通常是它的“类型“。理解类型并非不重要。
但是,对于实例变量来说,你能够了解这个变量所担当角色的唯一地方就是它的名字。如果
一个Point 中有两个实例变量叫做int1、int2 而并非x、y,那么在你理解哪一个是横向坐标,
哪一个是纵向坐标前,你可能要都上一堆代码。更何况你还要阅读与之相关的很多代码。而
变量的类型很容易从它声明、传递给它的消息看出来。所以:
Name instance variable for the role they play in the computation。Make the name plural
if the variable will hold a Collection。
(用计算中实例变量所承担的角色对它命名。如果变量持有一个集合,使用复数。)

分享到:
评论

相关推荐

    ITSM流程命名规范建议.pdf

    本文档详细介绍了ITSM流程中的命名规范建议,主要包括表单、字段、工作流等方面的命名规则。这些规范有助于开发人员遵循统一的标准进行开发,提高代码的可读性和可维护性。 #### 二、命名规范概览 ##### 2.1 命名...

    c#项目的命名规范

    ### C#项目的命名规范详解 在C#项目开发中,遵循一套统一且规范...以上命名规范和建议旨在帮助开发者编写出既符合标准又易于维护的C#代码。遵循这些规则,不仅可以提升个人编码效率,还能促进团队协作,确保项目质量。

    公司文件和软件命名规则

    ### 公司文件和软件命名规则详解 #### 文件命名规则 **公司文件命名规则**主要应用于内部文件管理和外部交流过程中,以确保文件的统一性和可识别性。此规则由多个部分组成,各部分通过特定符号分隔开来。 1. **...

    C#开发规范命名规则

    C#作为一种广泛使用的面向对象编程语言,在软件开发过程中,遵循一套良好的命名规范至关重要。合理的命名不仅有助于提高代码的可读性和可维护性,还能增强团队协作效率。本文将详细介绍C#开发规范中的命名规则,并...

    Allegro_建库和封装命名规则

    封装命名规则是设计规范的重要组成部分,它遵循一定的约定,以便于团队协作和后期的查错。以下是一些常见的封装命名规则: 1. 前缀:通常用供应商或制造商的代码,例如SO表示Surface Mount(表面贴装),TQFP表示...

    verilog变量命名规则

    ### Verilog 变量命名规则详解 在Verilog语言中,变量命名不仅是代码风格的体现,更是确保程序可读性和维护性的关键。合理的命名规则能够帮助开发者快速...因此,在编写Verilog代码时,务必重视命名规范的制定与执行。

    软件编程命名规则

    在软件开发过程中,合理的命名规范不仅是提高代码质量和可维护性的关键因素之一,还能促进团队间的高效沟通与协作。本文将详细介绍一种软件编程中的命名规则,并通过具体的例子来帮助理解和应用。 #### 二、命名...

    代码规范、命名、配置文件、Code+Review建议各类规范大全

    java、svn、mysql、dubbr、venus-common-monitor、venus-restful、公共码、日志、代码规范、命名、配置文件、Code+Review建议、postman等等等等;各类规范文档

    .NET项目命名规范

    本文将详细介绍.NET项目中的命名规范,包括数据库命名规则、C#项目中的命名规则以及相关的项目规则和代码重用策略。 #### 二、数据库命名规则 1. **数据库表名**:表名需以“Tb”开头,采用驼峰式命名法,如`Tb_...

    C#代码命名规范

    C#代码命名规范 C#代码命名规范是软件开发中非常重要的一部分,它可以提高代码的可读性和维护性。以下是C#代码命名规范的详细说明: 一、属性命名规范 在C#中,属性命名需要遵守一定的规范,即使用名词、名词短语...

    数据库、表、字段的命名规则

    在数据库开发中,还有其他一些命名规则需要遵守: 1、视图(View)的命名规则:V + 表名前缀 + 表内容标识(首字大写)。 2、触发器(Trigger)的命名规则:TRG + 表名前缀 + 触发器内容标识(首字大写)。 3、存储过程...

    C#控件命名规则C_控件命名规则

    以下是一些关于C#控件命名规则的重要知识点: 1. **命名原则**: - 使用有意义的名称:控件的名称应清晰地反映其功能或用途。例如,`btnSubmit` 表示提交按钮,`txtUsername` 表示用户输入用户名的文本框。 - ...

    数据库表字段命名规范

    ### 数据库表字段命名规范详解 #### 摘要与背景 随着软件开发项目的日益复杂化,数据库的设计和管理成为了确保应用稳定性和高效性的关键环节之一。然而,在实际的开发过程中,由于数据库表及其字段命名缺乏一致性和...

    c#命名规范

    本文将详细介绍C#中的命名规范,包括变量、方法、类、接口、枚举等命名规则,并且会涉及一些常用的控件命名建议。 ### 一、概述 #### 1.1 为何重要 在软件开发过程中,遵循一定的命名规范有助于提高代码的可读性...

    数据库命名规范(通用)

    数据库命名规范是数据库管理中的重要组成部分,它不仅有助于维护数据库的整洁和一致,还能提高开发人员之间的...以上原则和建议构成了一个通用的数据库命名规范,有助于数据库管理的规范化和提高数据库系统的可维护性。

    C++编程变量命名规范

    除了上述基本的变量命名规范外,还有一些常用的命名约定,可以帮助开发人员更好地组织和理解代码。 1. **整型变量:**如`iInteger`, `nLength`, `uUnsignedInt`等。 2. **指针类型:**如`pPointer`, `lpLongPointer...

    C语言规范 ,命名规范

    根据给定文件的信息,我们可以提炼出关于C语言及其命名规范的相关知识点。 ### C语言命名规范 在编程领域,良好的命名规范对于代码的可读性和维护性至关重要。在C语言中,命名规范通常包括变量名、函数名、常量名...

    c#一些常用的命名规范

    本篇文章将详细解析 C# 中的一些常用命名规范,特别是针对 ADO.NET、Windows Forms 和 Web 控件的命名建议。 #### 二、ADO.NET 命名规范 ADO.NET 是 Microsoft 开发的一款用于访问关系数据库的组件集合。为了保持...

Global site tag (gtag.js) - Google Analytics